Programación General > ASM (Ensamblador)

 pasar un tipo byte a un tipo word sin movs?

(1/2) > >>

morringos:
Buenas buenas a todos, mi gran duda es la siguiente, ya que me he atorado en varios ejercicios que he querido hacer y no he podido debido a que el "tasm" me marca error, operación o sentencia no válida para mi procesador al querer utilizar "movs", "movsx" ó "movzx" para pasar un tipo byte a un tipo palábra.
¿Hay alguna instrucción o alguna forma de hacer esto? Y claro, apenas estoy aprendiendo ensamblador y es de 16 bits.

Un ejemplo de lo que les digo es lo siguiente: Supongamos que tengo un arreglo (arreglo1 db 40 dup(32),36), en el cual capturé una cadena, y si quiero pasar un elemento al dx.
O en otro caso también, es que si quiero hacer: "mov dx, al", no me lo permite tampoco, porque "al" es de tipo byte y "dx" es de tipo palabra, pero tampoco me permite usar las sentencias que puse anteriormente.


Gracias  ^_^
Saludos.

m0skit0:
Yo hago


--- Código: ASM ---movsxb %0, %%ebx desde C y GAS me lo reconoce perfectamente. ¿Cómo estás escribiendo la instrucción?

A lo mejor se debe a la antigüedad de TASM (también ignoro cuándo Intel introdujo estas instrucciones).

morringos:
Bueno primero que nada, muchas gracias por contestar, y aquí te dejo un ejemplo que acabo de hacer en donde me marca error, tal vés y mi problema sea de sintáxis.


--- Código: ASM --- title "Ejemplo X".model small.stack 1064.data    var1 db 48,36.code mov ax, @datamov ds, ax mov ax, var1                 ;Operand types do not matchmov dx, axmov ah, 09hint 21h  mov ah, 4chint 21h end  
No sé si algo esté mal en mi código.
¿Tiene que ver la versión del tasm por lo cual me diga: "Ilegar instruction for currently selected processor(s) cuando hago un "movsx"? Utilizo un compilador muy viejo del Borland, en el cual viene el tasm, creo que es la versión 3.xx  del Borland, no sé si en realidad tenga algo que ver.

Gracias.  ^_^
Saludos.

m0skit0:
No hay de qué, estamos pa serviros.

Me refiero a cómo usas movsx, no mov.

La versión tiene que ver porque posiblemente (como digo lo ignoro) dicha instrucción no existiera cuando salió esa versión del TASM y por tanto TASM no soporta dicha instrucción.

morringos:
¿Entonces está algo mal mi código? Porque intento hacer un "movsx ax, var1", y me marca error, no sé bien a que se deba dicho error.
Si me pudieran echar una mano respecto al error que me marca.


Gracias.
Saludos  ^_^

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa