c51 c语言 16位二进制转换为bcd码,16位二进制转换为BCD码的C51汇编程序.doc

这篇博客介绍了将16位二进制数转换为BCD码的C51汇编程序算法,通过解析高9位计算各个十进制位,然后详细给出了具体的汇编代码实现过程。
摘要由CSDN通过智能技术生成

16位二进制转换为BCD码的C51汇编程序

16位二进制转换为BCD码的C51汇编程序

16位二进制转BCD码的程序算法及51汇编实现:

n=b15~b0

n=[b15~b8]*256+[b7~b0]

=[b15~b12]*4096+[b11~b0]

,高四位[b15~b12]取值范围为0~15,代表了4096的个数

n=[b15~b12]*4000+{[b15~b12]*(100-4)+[b11~b0]}

用x 代表[b15~b12],有:

n=x*4000+{x*(100-4)+[b11~b0]

即:n=4*x(千位)+x(百位)+[b11~b0]-4*x

上式中后面的位:[b11~b0]-4*x,如果,,,,于356,就直接转换成BCD码,如果

数值较大,就要把11~7位看成128的个数y,在百位中加上y,在十位加上3*y,并在

[b6~b0]中减去2*y

就有:

n=n=4*x(千位)+(x+y)(百位)+3*y(十位)+[b6~b0]-2*y

由此,就可以明确由高9位[b15~b7]变换出来十进制的各个位的数值,可能大于9,到最后整理一下即可。

剩下的低7位变成BCD 码已经很简单了。

这是别人的思路,容易理解,但用汇编也不太好写,期待有人能写出来,下面是我同,,,,的一个算法:

高八位减一,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值