将值分配给寄存器并对其进行加法和减法

时间:2018-10-01 16:25:59

标签: assembly x86 masm

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

1 个答案:

答案 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。我不会指望它。