【发布时间】:2020-06-23 07:03:14
【问题描述】:
我在用汇编语言应用 BODMAS 时遇到问题。根据 BODMAS 规则, (4 * 2 * 3 - 1 + 10 * 6) 的结果应该是 83,但它显示了其他结果。请尝试解决此问题。谢谢。
TITLE Add and Subtract, Version 2 (AddSub2.asm)
INCLUDE Irvine32.inc
.data
.code
main PROC
; using BODMAS
; 4*2*3-1+10*6
mov eax,4
mov ebx,2
mov ecx,3
mov edx,1
mov esi,10
mov edi,6
mul ebx
mul ecx
mov ebx,eax
mov eax, esi
mul edi
add edi,edx
mov eax,ebx
sub ebx,edi
call dumpregs
call WriteInt
exit
main ENDP
END main
【问题讨论】:
-
如果您不想用乘法的高半结果覆盖 EDX,请不要使用
mul。只需像编译器一样使用imul eax, ebx;这是一条普通的 2 操作数指令,例如add。使用调试器单步执行您的代码;您将能够看到您的第一个mul用高半结果 (0) 覆盖 EDX。