3

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

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

我曾尝试填写所有字段,但不确定答案。如果你能告诉我哪里出了问题,我会很高兴,谢谢!:)

带组装答案的桌子

4

1 回答 1

2

push eax将寄存器存储到内存中push有两个输出:(ESP-=4寄存器),然后[ESP]=eax是(内存地址)。我想您可以将两个输出都放入表中的一行。

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


你的第二个错误在sub edx,ebx. EDX 被前面的指令清零,但 EBX 仍然是 0x200。 sub做无符号/ 2的补码二进制减法,它环绕,不饱和为零。在调试器中尝试,或者在 C 中使用uint32_t.

于 2018-06-24T14:32:08.933 回答