永发信息网

怎样把比较大的二进制转换成BCD码

答案:1  悬赏:40  手机版
解决时间 2021-11-27 21:03
  • 提问者网友:我的未来我做主
  • 2021-11-27 06:34
怎样把比较大的二进制转换成BCD码
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-11-27 07:21
MOV R0, TH1
MOV R1, TL1
CALL HEX2BCD ;调用子程序把R0 R1中的数字,转换成BCD码,送到R2 R3 R4

;-------下面,把万千百十个位,分别存入R4 R3 R2 R1 R0

MOV A, R4
MOV B, #16
DIV AB ;除以16,目的是分离出高、低四位
MOV R1, A ;存放十位
MOV R0, B ;存放个位
;
MOV A, R2
MOV R4, A ;存放万位
;
MOV A, R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B

SJMP $ ;到此,完成了题目要求
;------------------------------------------------------------------
;两个字节的二进制数转换成BCD码的程序如下:
;功能:16位二进制数变换成为 BCD 码;
;入口:R0 R1 中是 16 位二进制数,其中R0中是高 8 位;
;出口:R2 R3 R4 中是 BCD 码,其中R2中是万位,R3中是千、百位,R4中是十、个位。
HEX2BCD:
CLR A
MOV R2, A ;先清零
MOV R3, A
MOV R4, A
MOV R5, #16 ;共转换十六位数
LOOP:
CLR C
MOV A, R1 ;从待转换数的高端移出一位到Cy
RLC A
MOV R1, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R4 ;送到BCD码的低端
ADDC A, R4 ;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP ;共转换十六位数
RET
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯