NASM将字节添加到寄存器ebx

时间:2015-04-25 14:11:03

标签: assembly x86 nasm

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

add ebx, byte [ebp-10+ecx]

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

1 个答案:

答案 0 :(得分:5)

您可以使用零扩展移动指令将一个字节加载到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代表"移动符号扩展"。