有人可以帮我解决这个使用算术运算用汇编语言编写的表达式吗?

Can somebody help me out with this expression written in assembly using arithmetic operations?

表达式:EAX = 7*EAX - 2*EBX - EBX/8
我的代码:

start:
    mov EAX,9
    mov EDX ,7
    mul EDX ; EAX<-EAX*EDX
    mov EDX,EAX ; EDX<-EAX*EDX<=>(7*9)
    mov EBX,8
    mov EAX,2
    mul EBX; EAX<- EAX*EBX (2*8)
    mov ECX,EAX
    sub EDX,ECX; <=>7*EAX-2*EBX (7*9-2*8)
    mov EAX,EBX
    div EBX ; EAX <=> 8/8
    sub EDX,EAX; <=> 7*9-2*8-8/8
    push 0
    call exit
end start
EAX = 7*EAX - 2*EBX - EBX/8

并不是因为表达式包含乘法 (*) 或除法 (/),所以您的解决方案应该使用这些运算。

  • 对于 7*EAX 你可以使用更简单的 imul eax, 7.
  • 您可以简单地减去 EBX 两次,而不是加倍 EBX
  • 要计算 EBX 的八分之一,您只需将其值向右移动 3 次即可。
imul eax, 7
sub  eax, ebx
sub  eax, ebx
shr  ebx, 3
sub  eax, ebx