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