汇编,将一个8位寄存器移到一个16位寄存器,怎么样?
问题描述:
我想知道的是很明显的话题。 我有问题移动8位寄存器到16位寄存器。 我想要做的是,将一个数字永久除以10,直到它低于10, ,并且在每个分割时间内,我尝试从ah寄存器中移出余下的部分,添加48到它,然后我可以有它的Ascii代码,然后我试着在屏幕上显示我的数字。 这里是代码:汇编,将一个8位寄存器移到一个16位寄存器,怎么样?
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 ... 我该怎么办?
答
你的意思是?
mov bx, Offset Num1
mov [bx], al
你得到的错误是因为你声明了一个单词,但将它作为一个字节来处理。如果你做Num1分贝它也可以。
测试与TASM 4.1
+0
谢谢,它工作... – user1547062 2013-05-04 14:52:51
答
至于标题更普遍的问题:您使用movzx
(移动零扩展)无符号值和符号值movsx
(移动符号扩展)。
从Turbo Assembler中不能记得很多东西,但是你试过'MOV BYTE NUM1,AL'吗? – 2013-05-04 08:34:26
我不明白你在做什么MOV NUM1,AL正在将AL的内容移动到NUM1中?这不可能发生吗? – 2013-05-04 08:36:47
@PreetSangha对,我错过了完全只看语法:) – 2013-05-04 08:37:53