表达式: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
发布于 2022-03-06 20:27:05
EAX = 7*EAX - 2*EBX - EBX/8
不是因为表达式包含乘法(*)或除法(/),而是您的解决方案应该使用这些操作。
imul eax, 7
.
7*EAX
您可以使用简单的双倍EBX
,只需减去EBX
两次。EBX
的八分之一时,只需将其值向右移动3次。f 214
imul eax, 7
sub eax, ebx
sub eax, ebx
shr ebx, 3
sub eax, ebx
https://stackoverflow.com/questions/71373775
复制相似问题