Assembly x86程序集添加不同大小的操作数

Assembly x86程序集添加不同大小的操作数,assembly,x86,Assembly,X86,我喜欢将一个字节从内存位置添加到32位寄存器, 这在x86汇编中可能吗? 添加edx,字节[ebx]导致错误:操作数大小不匹配您需要确保操作数大小相同 但这涉及到标志的问题。如果使用有符号整数,则应使用;如果使用无符号整数,则应使用 movsx/movzx eax, byte ptr [ebx] add edx, eax 如果第一个操作数是寄存器或内存,而第二个操作数是立即数,则可能出现这种情况 Opcode |Instruction | Description 83 /0 ib

我喜欢将一个字节从内存位置添加到32位寄存器, 这在x86汇编中可能吗?
添加edx,字节[ebx]
导致
错误:操作数大小不匹配

您需要确保操作数大小相同

但这涉及到标志的问题。如果使用有符号整数,则应使用;如果使用无符号整数,则应使用

movsx/movzx eax, byte ptr [ebx]
add edx, eax

如果第一个操作数是寄存器或内存,而第二个操作数是立即数,则可能出现这种情况

Opcode   |Instruction     | Description
83 /0 ib |ADD r/m32, imm8 | Add sign-extended imm8 to r/m32.

您需要对小操作数进行零或符号扩展。使用
movzx eax,byte[ebx]add edx,eax
它可以工作。谢谢大家!@这要看情况而定。请查看我的答案以了解详细信息我正在处理无符号整数,所以movzx对我来说很好。