Ассемблер - masm32 - умножение

Я умножаю 3 числа, которые хорошо работают даже с переносом. Я хочу добавить 4-е число для умножения только в учебных целях.

После того, как я умножил 3 числа, я переключаюсь в EDX и печатаю. Работает отлично. После того, как я добавлю 4-е число, я думаю, что я умножаю 32-битный х 32-битный? Так он хранится в EDX: EAX?

Нужно ли мне перевести EAX в EDX, чтобы они вместе печатали? Я не уверен, правильно ли я делаю это для 4-го числа?

.data?
  num1 dd ?
  num2 dd ?
  num3 dd ?
  num4 dd ?

.data
sum dd 0
prod dd 0
prod2 dd 0

вот подсказки

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

вот логика

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

Я не уверен, что мне следует переместить num4 в ECX и умножить на CX Должен ли я вместо этого умножить на 32 бита? Что я делаю не так для 4-го числа? Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос