x86子寄存器特定的汇编指令如何与整体交互?

时间:2018-10-11 21:48:42

标签: assembly x86

大多数询问算术运算。

示例:

假设32位硬件 eax存储0xff000000

如果调用了“ sub al,0x10”,那么更高的字节/位会改变吗? 它会影响整个寄存器,还是将操作限制在该细分范围内?

其他操作(add,sal,sar等)是否具有一致的整体/子寄存器交互?

1 个答案:

答案 0 :(得分:0)

您实际上可以阅读Intel manuals中的文档,其中描述了只有您在命令中处理的寄存器部分会更改。

或者您可以使用调试器(例如,如果使用Windows,例如WinDbg Preview)自己进行快速测试。

从下图可以看到,在执行sub al, 0x10(通过trace t命令)后,eax寄存器将为0xff0000f0(通过转储寄存器命令) r)。 这些标志会根据寄存器特定下部的更改而更新(例如,从nccy的进位)。

Modification of al will not affect eax

希望这会有所帮助。问候,罗纳德