DA 指令和十六进制数转BCD 码的几种方法2008 年07 月04 日 星期五 11:28DA 指令和十六进制数转BCD 码的几种方法2008-06-20 14:32 例2、设(A) = 56H 为 56 的压缩的BCD码数,(R3)= 67H,(CY)=1 执行 ADDC A,R3 DA A 结果为:124 注意:1)DA 指令只能跟在加法指令后面使用; 2)调整前参与运算的两数是 BCD 码数; 3)DA 指令不能与减法指令配对使用,但可以实现对 A 中压缩 BCD 减一操作
例3、设(A)=30H(压缩 BCD 码数),执行: ADD A,#99H DA A 后,便实现了 30 - 1 = 29 的操作
例4、两个 4 位 BCD 码相加,一个存放在(31H)(30H);另一个存放在 (33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之
解:MOV R0,#30H MOV R1,#32H MOV A,@R0 ADD A,@R1 DA A MOV @R0,A INC R0 INC R1 MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A 在进行单片机系统开发时,有很多地方需要用到十六进制数和BCD 码的转换
比如说在需要将数据在显示器上显示时,因为参与系统内部计算的数据多为二进制数,而为了显示的时候直观方便,我们通常会将数据显示为常见的十进制形式
这时在系统内部就必须进行十六进制到BCD 码的转换
关于十六进制到BCD 码的转换,算法很多,我这里介绍三种方法
三种方法在使用的时候各有优劣,后面会进行简单的比较
一、方法一: ;功能;单字节十六进制数转三位单字节 BCD 码 ;入口:单字节十六进制数存 R5 ;出口:单字节 BCD 码存:百位 R2,十位 R3,个位 R4 ;影响单元:中间寄存 R5 的高四位:R0,低四位