【发布时间】:2012-11-13 23:11:41
【问题描述】:
有没有办法在 x86 中将 8 位值添加到 32 位寄存器?
例如,如果您执行“ADD EAX,8”,则 8 将被编码为 32 位值,因此您的二进制文件中将包含“08000000”。如果你是加一个,你显然可以使用 INC 指令,但是有没有办法在 x86 汇编中添加一个通用的 8 位值?
请注意,我认为您不能执行“ADD AL,8”,因为如果 AL 已经包含 xFE,那么它就不会进行进位。但是,“ADC AL,8”会带来 AH 的价值吗?
【问题讨论】:
-
ADC AL, 8将8加上进位值加到AL。它没有触及AH。 -
ADD EAX, 8应该使用 8 位立即数进行编码。如果 8 编码为 32 位值,则这是一个汇编程序错误。作为一种解决方法,您可以尝试使用与EAX不同的寄存器。
标签: optimization assembly x86