1

有没有办法在 x86 中将 8 位值添加到 32 位寄存器?

例如,如果您执行“ADD EAX,8”,则 8 将被编码为 32 位值,因此您的二进制文件中将包含“08000000”。如果您要加一个,您显然可以使用 INC 指令,但是有没有办法在 x86 汇编中添加一个通用的 8 位值?

请注意,我认为您不能执行“ADD AL,8”,因为如果 AL 已经包含 xFE,那么它就不会进行进位。但是,“ADC AL,8”会带来价值吗?

4

1 回答 1

5

有一种使用 8 位符号扩展立即数的编码,它被列为ADD r/m32, imm8opcode 83 /0。您如何表示您想要该编码取决于您的汇编程序,但您忘记提及您使用的是哪一个。nasm例如,如果您打开优化或您像这样明确要求它,则自动使用此编码:add eax, byte 8. GNU 汇编器似乎也使用较短的编码,实际上我不知道如何将其强制为 32 位(与您的问题相反)。

于 2012-11-14T02:18:41.460 回答