有没有办法在x86中为32位寄存器添加8位值?
例如,如果您执行“ADD EAX,8”,那么8将被编码为32位值,因此您的二进制文件中将包含“08000000”。如果你加一个,你可以明显地使用INC指令,但有没有办法在x86汇编中添加一个通用的8位值?
注意我认为你不能做“ADD AL,8”,因为如果AL已经有了xFE,那么就不会进行进位。那么“ADC AL,8”怎么样才能将价值带到AH?
答案 0 :(得分:5)
有一种编码使用8位符号扩展立即数,它被列为ADD r/m32, imm8
操作码83 /0
。您如何表明您希望编码取决于您的汇编程序,但您忘记提及您使用的编码器。例如nasm
会自动使用此编码,如果您打开优化,或者如果明确要求它,则add eax, byte 8
。 GNU汇编程序似乎也使用较短的编码,实际上我不知道如何将它强制为32位(与你的问题相反)。