汇编,将8位寄存器移到16位寄存器,怎么样?

时间:2013-05-04 08:25:47

标签: assembly 16-bit 8-bit

我想知道的是关于这个主题的明显说法。 我有问题将8位寄存器移动到16位寄存器。 我想要做的是,将一个数字永久地除以10直到它低于10, 并且,在每个分组时间内,我尝试将分区的剩余部分从ah寄存器中移出,向其添加48,然后我可以使用其Ascii代码,然后我尝试在屏幕上显示我得到的数字。 这是代码:

 Num1 DW 255
 DIVISION :
        CMP NUM1,10
            Jl DIVEND

        MOV AX,10
        DIV NUM1
        MOV NUM1,AL ;*


        ADD AH,48
        MOV DL,AH; 
        MOV AH,02H
        INT 21H

    JMP DIVISION

但是,当我试图组装它时,它说,操作数类型在*表示的行上不匹配。 我正在使用turbo汇编程序V4.1 ... 我该怎么办?

2 个答案:

答案 0 :(得分:2)

至于标题中更一般的问题:对未签名的值使用movzx(移动零扩展),对签名值使用movsx(移动符号扩展)。

答案 1 :(得分:0)

你的意思是?

mov bx, Offset Num1 
mov [bx], al

您得到的错误是因为您声明了一个单词,但将其作为一个字节进行处理。如果你做了Num1 db它也可以。

使用TASM 4.1进行测试