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

Respuestas a la pregunta(1)

Su respuesta a la pregunta