我想知道的是关于这个主题的明显说法。 我有问题将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 ... 我该怎么办?
答案 0 :(得分:2)
至于标题中更一般的问题:对未签名的值使用movzx
(移动零扩展),对签名值使用movsx
(移动符号扩展)。
答案 1 :(得分:0)
你的意思是?
mov bx, Offset Num1
mov [bx], al
您得到的错误是因为您声明了一个单词,但将其作为一个字节进行处理。如果你做了Num1 db它也可以。
使用TASM 4.1进行测试