大家都知道汇编语言里把十六进制转换为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小时内删除。