Assembly 给寄存器赋值并加减法
我完全不明白这一点。 我需要编程,使用寄存器计算以下表达式: varA=(varA+varB)− (varC+varD),其中varA、varB等是变量。 为上述变量的EAX、EBX、ECX和EDX寄存器分配整数值。(也就是说,您可以对输入进行硬编码) 我的代码:Assembly 给寄存器赋值并加减法,assembly,x86,masm,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,
; 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
这一切都很有道理,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。不过我不会指望的
这一切都很有道理,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。不过我不会指望它。你得到的输出或错误是什么?你得到的输出或错误是什么?啊,我现在更明白了。谢谢@Jinna如果答案是正确的,请接受:)@zx485哦哈,是的,我在几年前更新了我的github用户名。谢谢你啊,我现在明白多了。谢谢@Jinna如果答案是正确的,请接受:)@zx485哦哈,是的,我在几年前更新了我的github用户名。非常感谢。