NASM将字节添加到寄存器ebx

Flu*_*upp 0 x86 assembly nasm

有没有一种简单的方法可以让这个NASM代码段工作?

add ebx, byte [ebp-10+ecx]

我收到以下错误:error: mismatch in operand sizes.我想将内存地址[ebp-10+ecx]中的字节添加到ebx的最低有效字节.当然,ebx是一个4或8字节的寄存器,会导致错误.

mcl*_*fix 5

您可以使用零扩展移动指令将一个字节加载到32位寄存器中,并使用它将其添加到EBX:

movzx eax,byte ptr [ebp-10+ecx]
add ebx,eax
Run Code Online (Sandbox Code Playgroud)

或者,如果要执行8位加法而不关心EBX的其余位,只需将该字节添加到EBX的最低位.请注意,这不会执行EBX中第7位到第8位的进位

add bl,byte ptr [ebp-10+ecx]
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用MOVSX指令而不是将指定字节添加到32位数字MOVZX.MOVSX代表"用符号延伸移动".