操作后我必须写寄存器的目的地和值。
用斜体字写的字段是我写的。粗体字的字段(如说明)是我的教授写的。
我尝试填写所有字段,但不确定答案。 如果您能告诉我什么地方不对,我将非常高兴,谢谢! :)
答案 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中进行尝试。