双字节二进制转换为bcd

双字节二进制转换为bcd

ID:9007351

大小:26.50 KB

页数:3页

时间:2018-04-14

双字节二进制转换为bcd_第1页
双字节二进制转换为bcd_第2页
双字节二进制转换为bcd_第3页
资源描述:

《双字节二进制转换为bcd》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、;-----------------------------------------------------------------------;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。;那么可以写成:;n=[b15~b0];把16位数分解成高8位、低8位来写,也是常见的形式:;n=[b15~b8]*256+[b7~b0];那么,写成下列形式,也就可以理解了:;n=[b15~b12]*4096+[b11~b0];式中高4位[b15~b12]取值范围为0~15,代表了4096的个数;;上式可以变形为:;n=[b15~b12]

2、*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;写到这里,就可以看出一点BCD码变换的意思来了。;;上式中后面的位:[b11~b0]-4*x,如果小于256,那就太简单了,马上就可以去按照常规转换BCD了。;如果数值较大,就要把[b11~b7]看成128的个数y;在百位中加上y、在十位加上3*y、并在[b6~b0]中减去2*y。;那么就有:;n=4*x(千位)+x(百位)+

3、[b11~b0]-4*x;n=4*x(千位)+(x+y)(百位)+3*y(十位)+[b6~b0]-2*y;由此,就可以明确由高9位[b15~b7]变换出来十进制的各个位的数值,可能大于9,到最后整理一下即可。;剩下的低7位[b6~b0],已经是单字节数据,变换成BCD码那就十分简单了。;-----------------------------------------------------------------------从最后的表达式中可以看出,高9位变换的计算方法极为简单,只是使用左移、加减等指令即可,基本上不涉及多字节的运算。编程的时候,要

4、充分利用单字节、单周期的指令,使程序的长度和执行时间尽量缩短。做而论道的编程思路已经给出,程序代码还是过一段时间再公布,给大家留下一个发挥的时间。感兴趣的网友可以留言,写出自己编写的程序。51单片机把4位16进制数转成10进制数的方法2位16进制转10进制,用除以10求商跟余数的方法,即可。4位16进制数呢?DIV指令只可以对2位16进制数进行除法运算啊,求高手解答。例如把TH1TL1的数值转成十进制,分别存入R4R3R2R1R0。我要的是汇编的方法,C语言还没学到。悬赏分:30-解决时间:2010-2-1022:47;---------------

5、---------------------------------------------------最佳答案:两个字节的二进制数转换成BCD码,必须编写程序来解决。下面把这段转换程序,写成子程序的结构,便于网友移植。;程序经过仿真调试通过,如下所示:;------------------------------------------------------------------;MOVR0,TH1MOVR1,TL1CALLHEX2BCD;调用子程序把R0R1中的数字,转换成BCD码,送到R2R3R4;-------下面,把万千百十个位,分别存入

6、R4R3R2R1R0MOVA,R4MOVB,#16DIVAB;除以16,目的是分离出高、低四位MOVR1,A;存放十位MOVR0,B;存放个位;MOVA,R2MOVR4,A;存放万位;MOVA,R3MOVB,#16DIVABMOVR3,AMOVR2,BSJMP$;到此,完成了题目要求;------------------------------------------------------------------;两个字节的二进制数转换成BCD码的程序如下:;功能:16位二进制数变换成为BCD码;;入口:R0R1中是16位二进制数,其中R0中是高8

7、位;;出口:R2R3R4中是BCD码,其中R2中是万位,R3中是千、百位,R4中是十、个位。HEX2BCD:CLRAMOVR2,A;先清零MOVR3,AMOVR4,AMOVR5,#16;共转换十六位数LOOP:CLRCMOVA,R1;从待转换数的高端移出一位到CyRLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVA,R4;送到BCD码的低端ADDCA,R4;带进位加。自身相加,相当于左移一位DAA;十进制调整,变成BCD码MOVR4,AMOVA,R3ADDCA,R3DAAMOVR3,AMOVA,R2ADDCA,R2MOVR2,ADJNZ

8、R5,LOOP;共转换十六位数RET

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。