如何在NASM汇编程序中将寄存器bh中的值添加到ecx?

时间:2014-02-16 05:14:07

标签: assembly nasm

假设我有一个bh中的数字,我该如何将其添加到ecx?我不能只是

add ecx, bh

因为它会导致错误:

invalid combination of opcode and operands

因为ecx是32位寄存器而bh是8位寄存器。

3 个答案:

答案 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