NASM 添加字节到寄存器 ebx

NASM add byte to register ebx

有没有一种简单的方法可以使这个 NASM 代码段起作用?

add ebx, byte [ebp-10+ecx]

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

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

movzx eax,byte ptr [ebp-10+ecx]
add ebx,eax

或者,如果你想进行8位加法,而不关心EBX的其余位,只需将字节添加到EBX的最低部分。请注意,这不会在 EBX 中执行从第 7 位到第 8 位的进位)

add bl,byte ptr [ebp-10+ecx]

您甚至可以使用 MOVSX 指令而不是 MOVZX 指令将带符号的字节添加到 32 位数字。 MOVSX代表"move with sign extend".