地址或寄存器表,汇编x86

3
我必须写下操作后寄存器的目的地和值。斜体字字段是我填写的。加粗的字段(如指令)是我的教授写的。我尝试填写所有字段,但不确定答案是否正确。如果您能告诉我哪里有问题,我将不胜感激!:)

不清楚你需要什么。请展示你的代码。 - mentallurg
1个回答

2

push eax指令可以将寄存器的值存储到内存中。 push指令有两个输出:首先是ESP-=4(寄存器),然后是[ESP]=eax(内存地址)。我想你可以在表格中将这两个输出合并到一行中。

这就是为什么序列中包含LEA以提前设置ESP的原因:正常代码不会这样做,但是此赋值需要已知ESP的数值。


你的第二个错误出现在sub edx, ebx指令中。EDX由前一个指令清零,但EBX仍为0x200。sub执行无符号/二进制补码减法,会产生回绕,而不是饱和到零。请在调试器或使用uint32_t进行C语言编写时尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接