假设我有一个bh中的数字,我该如何将其添加到ecx?我不能只是
add ecx, bh
因为它会导致错误:
invalid combination of opcode and operands
因为ecx是32位寄存器而bh是8位寄存器。
答案 0 :(得分:3)
如果可以修改ebx,那么对于unsigned add:
movzx ebx,bh
add ecx,ebx
和签名添加:
movsx ebx,bh
add ecx,ebx
如果修改ebx不行,那么对于unsigned add:
add cl,bh
jnc nocarry0
add ecx,0100h
nocarry0:
或者只使用前面两个示例,前面是push ebx,然后是pop ebx。
答案 1 :(得分:1)
您无法添加不同大小的值(CPU不支持它)。相反,尝试这样的事情:
movzx ebx,bl ;Zero-extend BL
add ecx,ebx
注意:对于签名号码,您还可以使用movsx
进行签名扩展。
答案 2 :(得分:0)
unsigned add:
add cl,bh
adc ecx,0100h