带地址或寄存器的表,汇编程序x86

时间:2018-06-24 14:07:05

标签: assembly x86 intel-syntax

操作后我必须写寄存器的目的地和值。

用斜体字写的字段是我写的。粗体字的字段(如说明)是我的教授写的。

我尝试填写所有字段,但不确定答案。  如果您能告诉我什么地方不对,我将非常高兴,谢谢! :)

table with assembly answears

1 个答案:

答案 0 :(得分:2)

push eax stores a register to memory push有两个输出ESP-=4(寄存器),然后是[ESP]=eax(存储器地址)。我想您可以将两个输出都放在表的一行中。

这就是为什么序列中包含一个LEA来更早设置ESP的原因:普通代码不会这样做,但是此赋值需要知道ESP的数值。


您的第二个错误是在sub edx,ebx中。前一条指令将EDX归零,但EBX仍为0x200。 sub执行无符号/ 2的补码二进制减法,该减法会回绕,而不是饱和为零。在调试器中或通过uint32_t在C中进行尝试。