Table 带地址或寄存器,汇编器 x86
Table with addresses or registers, assembler x86
我必须在操作后写入寄存器的目的地和值。
斜体字是我写的。粗体字段(如说明)是由我的教授编写的。
我曾尝试填写所有字段,但不太确定答案。
如果你能告诉我哪里出了问题,我会很高兴,谢谢! :)
push eax
stores a register to memory。 push
有两个输出:ESP-=4
(寄存器),然后是[ESP]=eax
(内存地址)。我想您可以将两个输出都放在 table.
中的一行中
这就是序列包含 LEA 以更早设置 ESP 的原因:普通代码不会这样做,但此分配需要知道 ESP 的数值。
你的第二个错误在 sub edx,ebx
。 EDX 已被前一条指令清零,但 EBX 仍为 0x200。 sub
执行无符号/2 的补码二进制减法,它环绕,而不是饱和到零。在调试器中尝试,或在 C 中使用 uint32_t
.
我必须在操作后写入寄存器的目的地和值。
斜体字是我写的。粗体字段(如说明)是由我的教授编写的。
我曾尝试填写所有字段,但不太确定答案。 如果你能告诉我哪里出了问题,我会很高兴,谢谢! :)
push eax
stores a register to memory。 push
有两个输出:ESP-=4
(寄存器),然后是[ESP]=eax
(内存地址)。我想您可以将两个输出都放在 table.
这就是序列包含 LEA 以更早设置 ESP 的原因:普通代码不会这样做,但此分配需要知道 ESP 的数值。
你的第二个错误在 sub edx,ebx
。 EDX 已被前一条指令清零,但 EBX 仍为 0x200。 sub
执行无符号/2 的补码二进制减法,它环绕,而不是饱和到零。在调试器中尝试,或在 C 中使用 uint32_t
.