Programación General > ASM (Ensamblador)

 pasar un tipo byte a un tipo word sin movs?

<< < (2/2)

m0skit0:
Yo no sé cómo es la sintaxis exacta de TASM, pero si estás moviendo direcciones de memoria tienes que indicar el tamaño de la operación, o lo que es lo mismo en este caso, el tamaño de var1. En GAS es


--- Código: ASM ---movsxb y estoy indicando que es un byte mediante la "b" del final. Para 16 bits sería "w" (movsxw) y para 32 bits sería "l" (movsxl).

Saludos.

Toph:

--- Cita de: "morringos" ---
--- Código: ASM --- mov ax, var1                 ;Operand types do not match  
--- Fin de la cita ---
da error porque var1 esta como byte y AX es de dos bytes, la misma razon por la que te da error "mov dx, al" , en cualquier ensamblador .


--- Cita de: "morringos" ---  "Ilegar instruction for currently selected processor(s) cuando hago un "movsx"?
--- Fin de la cita ---
Hasta donde yo se esa instruccion no es para ensamblador de 16 bits, da error en cualquier ensamblador para 16 bits.

lo que debes hacer es usar direccionamiento indirecto para pasar los datos de una variable a un registro, en el ejemplo que has puesto


--- Código: ASM --- .model small .stack 1064 .data     var1 db 48,36 .code   mov ax, @data mov ds, ax mov si,0 mov ah, var1[si] ; guardara en AH 48 inc si mov al, var1[si] ; guardara en Al 36 y queda en AX=4836 mov dx, ax mov ah, 09h int 21h 

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa