有没有一种简单的方法可以让这个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
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代表"用符号延伸移动".
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |