Buenas! Tengo la duda general de como funciona MUL, en la cartilla dice DX.AX=AX*op1 y no entiendo la parte de DX.AX, en el parcial de febrero de 2015 lo usa como si en AX queda el resultado si no me equivoco. Agradezco su respuesta.
Agustina,
Hay 2 variantes de la instrucción MUL, una que recibe un registro de 8 bits y otra que recibe un registro de 16 bits.
Para la variante que recibe un registro de 8 bits se realiza la multiplicación AL * r, ambos operandos de 8 bits y el resultado de 16 bits queda en el registro AX.
Para la variante que revibe un registro de 16 bits se realiza la multiplicación AX * r, ambos operandos de 16 bits y el resultado de 32 bits se guarda en dos registros, La parte alta del resultado en el registro DX y la parte baja en el registro AX.
Por ejemplo, supongamos que AL tiene el valor 0x81 y BL el valor 2, si ejecuto
MUL BL
entonces AX queda con 0x102
Por otro lado si tengo en AX el valor 0x8123 y en BX el valor 2, si ejecuto
MUL BX
entonces se realiza la cuenta 0x8123 * 2 que da 0x10246 donde la parte alta queda en DX y la baja en AX. O sea, DX queda con 0x1 y AX con 0x246
Saludos,
Gustavo
Perfecto, muchas gracias por la respuesta.