我将 3 个数字相乘,即使有进位也能很好地工作。我想添加第四个数字来乘以仅用于学习目的。
在我乘以 3 个数字后,我转移到 EDX 并打印。效果很好。在我添加第四个数字后,我想我乘以 32 位 x 32 位?所以它存储到 EDX:EAX 中?
然后我需要将 EAX 转换为 EDX 以便它们一起打印吗?我不确定我是否为第四个号码做对了?
.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 位吗?我对第四个数字做错了什么?谢谢