给寄存器赋值并加减

Assign values to registers and add and subtract them

我完全迷失了。 我需要使用寄存器来计算以下表达式的程序: 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
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。不过我不会指望它。