Ассемблер - 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-го числа? Спасибо