大家都知道汇编语言里把十六进制转换为BCD码用DA指令,
但是没有哪条指令能把BCD码转换为16进制,我曾经也很
为此困惑,但最终我解决了此问题,看程序!
假如R0里储存的是37分钟的BCD码,那么R0里的数是37H,
要把它转换成37的十六进制25H存入R1中。我们现实的算
法是37/16=25H就可以得出结果,但是机器没那么聪明,
因为37H是十六进制。汇编程序解决的方法如下:
MOV A,R0 ;
ANL A,#0FH ;屏蔽高4位(即屏蔽分钟的十位)
MOV R2,A ;把个位的值给R2
MOV A,R0 ;
16进制
ANL A,#0F0H ;屏蔽低4位(即屏蔽分钟的个位)
SWAP A ;高低字节互换
MOV B,#10 ;给B赋值(也可以赋0AH)
MUL AB ;A乘B得出十位的十六进制值
ADD A,R2 ;十位的值加上个位的值
MOV R1,A ;把转换好的十六进制值给R1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论