estoy aprendiendo ASM x86, mas especificamente la sintaxis de intel. (utilizo NASM).
estuve viendo la instruccion MUL, que sirve para hacer operaciones de multiplicacion.
segun esta pagina: http://x86.renejeschke.de/html/file_module_x86_id_210.html
Opcode Mnemonic Description
F6 /4 MUL r/m8 Unsigned multiply (AX = AL * r/m8).
F7 /4 MUL r/m16 Unsigned multiply (DX:AX = AX * r/m16).
F7 /4 MUL r/m32 Unsigned multiply (EDX:EAX = EAX * r/m32).
para hacer una operacion de multiplicacion con un BYTE, tengo que mover el numero a multiplicar al registro AL, y me devuelve el resultado en AX.
Código:
mov al, 5
mul 5
; ahora ax = 25
para hacer una multiplicacion con un WORD, deberia mover el valor a AX:
Código:
mov ax, 5
mul 25
; ahora DX:AX vale 125
trabajando con DWORDS, seria:
Código:
mov eax, 5
mul 1000
; ahora EDX:EAX vale 5000
mi duda es, que significan esos pares de registros?
el resultado se aloja en el registro EDX o en el registro EAX?
o en ambos?
como hago para manipular el resultado, teniendo en cuenta que se guardan en pares de registros?
no logro entender cual es el significado de esas expresiones.
que seria un par de registros y cual es su utilidad?
si me podrian dar algun ejemplo.
gracias.