Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 给寄存器赋值并加减法_Assembly_X86_Masm - Fatal编程技术网

Assembly 给寄存器赋值并加减法

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,

我完全不明白这一点。 我需要编程,使用寄存器计算以下表达式: 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
这一切都很有道理,
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用户名。非常感谢。