我对此完全迷失了。 我需要使用寄存器来计算以下表达式的程序: varA =(varA + varB)−(varC + varD),其中varA,varB等是变量。 将整数值分配给上述变量的EAX,EBX,ECX和EDX寄存器。 (意味着,您可以对输入进行硬编码)
我的代码:
; AddTwo.asm - adds two 32-bit integers.
; Chapter 3 example
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
varA dword 5
varB dword 3
varC dword 4
varD dword 1
.code
main proc
mov eax,varA
add eax,varB
mov ecx,varC
add ecx,varD
mov ebx,varA
sub edx,varD
invoke ExitProcess,0
main endp
end main
答案 0 :(得分:2)
mov eax,varA
add eax,varB
mov ecx,varC
add ecx,varD
这一切都很合理,eax = varA + varB. ecx = varC + varD
。
在这一点上,
sub eax, ecx
获得eax = (varA + varB) - (varC + varD)
。
我不确定要用什么
mov ebx,varA
sub edx,varD
先设置ebx = varA
,然后再设置edx = edx - varD
。 edx之前没有定义,所以这是一个随机数。也许edx最初被清除为零,在这种情况下edx现在等于-varD。我不会指望它。