La Web del Programador: Comunidad de Programadores
 
    Pregunta:  51501 - PASAR NUMERO 32 BITS EN 2 REGISTROS DE 16 A VARIABLE DE 32
Autor:  jesus garcia martin
Hola buenas, aki estoy dando mis primeros pinitos en ensamblador y tengo un ejercicio casi terminado pero no me sale lo mas sencillo. Ojala me puedan ayudar porque no le veo la manera y he intentado varias cosas ya. Para empezar estamos en Turbo ensamblador de borland sin usar registros ni directivas de 32 bits, es decir ensamblador de MSDOS practicamente, asi k nada de usar registros extendidos ni instrucciones complejas de 32 bits.

Bueno la cuestion es k al final tengo un numero de 32 bits en dos registros de 16:

- los 16 bits mas altos en DX
- los 16 bits mas bajos en AX

Quiero pasar ese numero de 32 bits a una variable llamada:

- resultado DD 0 ; (Esto es la definicion doble-palabra)

Y he probado con diferentes opciones de mov y movzw o algo asi pero nada, seguramente que en la sintaxis o en los typecast o algo me equivoque. Espero k alguien me de una solucion, ya mas bien por saber como es. Muchas gracias.

  Respuesta:  Marianne Licea
;Esta es una manera de hacerlo. De aquĆ­ sacas lo que te hace falta

Dosseg
.model small
.data
var dd ?

.code
main proc near
mov ax,@data
mov ds,ax
mov di, offset var
mov [di],ax ;El valor de AX se guarda en la parte baja de la variable
add di,2
mov [di],dx ;DX en la parte alta
mov ax,4c00h
int 21h
end