Lenguaje ensamblador - masm32 - multiplicando
Estoy multiplicando 3 números que funcionan bien incluso con un acarreo. Quiero agregar un 4to número para multiplicar solo para propósitos de aprendizaje.
Después de multiplicar 3 números, cambio a EDX e imprimo. Funciona genial. Después de agregar un cuarto número, creo que estoy multiplicando 32bit x 32bit? ¿Así que se almacena en EDX: EAX?
¿Entonces necesitaría cambiar EAX a EDX para que estén juntos para imprimir? ¿No estoy seguro de si lo estoy haciendo bien para el cuarto número?
.data?
num1 dd ?
num2 dd ?
num3 dd ?
num4 dd ?
.data
sum dd 0
prod dd 0
prod2 dd 0
Aquí están las indicaciones
mov EAX, sval(input("Enter first number: "))
mov num1, EAX
mov EAX, sval(input("Enter second number: "))
mov num2, EAX
mov EAX, sval(input("Enter third number: "))
mov num3, EAX
mov EAX, sval(input("Enter fourth number: "))
mov num4, EAX
Aquí está la lógica
mov EAX, num1
mov EBX, num2
mul BL ; 8 bit x 8 bit ----> AX / 16bit
mov EBX, num3
mul BX ; 16bit x 16bit --->DX:AX
shl EDX, 16 ; shift low to high ;high / low in EDX
mov DX, AX ; mov in all reg
mov ECX, num4 ; 32bit x 32bit ---> EDX:EAX
mul CX
mov prod2, EAX ; for printing
No estoy seguro de si debo mover num4 a ECX y multiplicar por CX ¿Debo multiplicar por 32 bits? ¿Qué estoy haciendo mal para el cuarto número? Gracias