我对此一无所知,无法帮助我完成下面的代码
使用下面的AddTwo程序,我需要使用寄存器来计算以下表达式的程序:varA =(varA + varB)−(varC + varD), 其中varA,varB等是变量。将整数值分配给 EAX,EBX,ECX和EDX寄存器用于上述变量。 (含义, 您可以对输入进行硬编码
代码:
.batch(1)
谢谢
答案 0 :(得分:0)
我不确定是否将其称为“答案”,但我无法在评论中表达我想说的话。
让我们一步一步看一下您拥有的代码。
mov eax,varA
因此,在这一点上,eax包含5
add eax,varB
现在我们在eax上加3,在eax上加8。到目前为止一切顺利。
mov ecx,varC
这会将4放入ecx。
add ecx,varD
这将为ecx加1,使我们的ecx为5。
现在,到目前为止,所有语句都没有更改varA-varD中的任何值。他们仍然保持着最初的价值观。
那么,剩下要做的是什么?查看您的原始方程式,我们得到了varA = (varA + varB) − (varC + varD)
。那还剩下什么?
如果我们已完成(varA + varB)并将其存储在eax中,而我们已完成(varC + varD)并将其存储在ecx中,则(大致)在varA = eax-ecx中。 / p>
我非常确定您知道如何接受eax和sub
道ecx,是吗?而且,如果您知道如何mov
将值从内存移到寄存器(mov eax, varA
)中,那么您可能会想出如何将值从寄存器移回内存。
因此,您非常亲密。我可能还要提出另外两点。
。
mov eax, 5
mov ebx, 3
mov ecx, 4
mov edx, 1
然后从那里进行加法和减法。指导员可能会挑剔不完全遵循的说明,因此您可能需要对此进行重新设计。