キャリーでもうまくいく3つの数字を掛けています。学習目的で乗算する4番目の数値を追加したいと思います。
3つの数値を掛けた後、EDXにシフトして印刷します。よく働く。4番目の数値を追加した後、32ビットx 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番目の数字で何が間違っているのですか?ありがとうございました