• Jueves 18 de Abril de 2024, 20:03

Autor Tema:  Manejo De Arreglos En Ensamblador  (Leído 30334 veces)

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Manejo De Arreglos En Ensamblador
« en: Domingo 31 de Octubre de 2004, 01:30 »
0
Sabe alguin Con exactitud como de clarar un arreglo inicializado en ensamblador y como imprimir cada  campo del mismo.

Vean este codigo que yo hice compila pero no funciona bien. modifiquelo si lo creen necesario, para que pueda funcionar o por favor mandemen uno que si funcione.
Este codigo es de Turbo ensamblador (TASM).


.MODEL SMALL
   .STACK 64;16
.DATA
    ARRAY DB 1,2,3,4,5,6,7,8,9,0
.CODE
    mov ax,@data        ;Inicializar los registros.
    mov ds,ax
    mov cx,10
    Ciclo:
    lea dx,ARRAY        ;Coloca el array en el DX para quedar listo para ser impreso en pantalla.
    mov ah,09h           ;Servicio del video.
    int 21h                  ;Interrupcion del D.O.S
    LOOP Ciclo            ;Se supone decrementa el CX en 1
    RET  
END

dreadlock

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Manejo De Arreglos En Ensamblador
« Respuesta #1 en: Domingo 7 de Noviembre de 2004, 02:33 »
0
veras aun no s emuy bien que onda con tus instrucciones pero segun io para inicializar el segmento de dato s se da:

mov dx,dgroup
mov ds,dx

Citar
mov cx,10
Ciclo:
lea dx,ARRAY ;Coloca el array en el DX para quedar listo para ser impreso en pantalla.
mov ah,09h ;Servicio del video.
int 21h ;Interrupcion del D.O.S
LOOP Ciclo ;Se supone decrementa el CX en 1

segun io ais quedaria:
mov si,0
Ciclo:
lea dx,ARRAY[si] ;Coloca el array en el DX para quedar listo para ser impreso en
pantalla.
inc si
mov ah,09h ;Servicio del video.
int 21h ;Interrupcion del D.O.S
LOOP Ciclo ;Se supone decrementa el CX en 1
UN intento de explicar lo inezplicable:D

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: Manejo De Arreglos En Ensamblador
« Respuesta #2 en: Viernes 17 de Diciembre de 2004, 16:16 »
0
Y segun yo:
1º no conosco como  se declara un arreglo como tal, simplemente cadenas de datos continuos

2º la funcion 09h de la int 21h muestra un cadena de caracteres ASCII que esta direccionado por DX y debe terminar el caracter ASCII $

3º si voy a suponer que :
ARRAY DB 1,2,3,4,5,6,7,8,9,0
es un arreglo y quiero mostrarlo como tal lo mas sencillo seria decir:
   i) que los elementos de mi arreglo son numero entre de 0 a 9
   ii)cada elemento de mi arreglo ocupa 1 Byte
y lo muestro asi:

Código: Text
  1.  
  2. .MODEL TINY
  3. .CODE
  4. ORG 100h
  5. inicio:
  6.     mov cx,10
  7.     mov si,offset array
  8. Ciclo:
  9.     mov dl,[si]
  10.     add dl,48 &#59; converiosn a ASCII
  11.     mov ah,02h&#59;Servicio para mostrar un caracter
  12.     int 21h&#59;Interrupcion del D.O.S
  13.     inc si
  14.     LOOP Ciclo&#59;Se supone decrementa el CX en 1
  15. int 20h
  16. ARRAY DB 1,2,3,4,5,6,7,8,9,0
  17. end inicio
  18.  
  19.  
es una opcion!!!