rjps.net
当前位置:首页 >> 将给定的一个二进制数转换成BCD码的单片机程序及其实验结果 >>

将给定的一个二进制数转换成BCD码的单片机程序及其实验结果

BINBCD: MOV B, #100 (100作为除数送入B中) DIV AB (十六进制数除以100) MOV R3, A (百位数送r3,余数放入B中) MOV A, #10 (分离十位数与个位数) XCH A,B (余数放入A中,除数放入B中) DIV AB (分离出十位在A中,个位在B中) SWAP A (十位数交换到A的高4位) ADD A,B (十位数与个位数相加送入 A中) END将A中的二进制数(比如C9H)转换为BCD码为201H,其中百位存在R3中(R3=02H),十位个位压缩方式存在A中(A=01H)

100110的10进制是38得出8421码为0011 10008421BCD码 二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符参考 http://wenwen.sogou.com/z/q

什么叫做“05的二进制数转换为BCD码”???把十六进制的05H转为BCD? 太简单了吧. 看过来:设R1单元存放一个十六进制数,把它转成BCD,转换后的结果存放在R2,R3,则:MOV A, R1 ;取被除数MOV B #64H ;除以100DIV

在前面,是用 RLC 指令,把二进制数字,逐位移动到 Cy.楼主给出的这三个小程序,也是把左移,只是用的带进位的加法指令.MOV A, R4 ADDC A, R4 ;二倍的 R4,就是左移一位,并且把 Cy 填入最低位.DAA ;这就成为 BCD 码了.依此类推,R5、R6,都用带进位加,进行左移,并且变成 BCD.左移 16 遍,就把 16 位二进制,变成了 BCD.更多的位数,可以使用同样的处理方法,变成 BCD.

乘除法的时候可以不考虑进制的,比如说 #0ffh这个十六进制数 存放于a中,#100这个十进制数放于b中 然后div ab 这时 a等于#02h b等于#37h等于55 在然后 假设a中的数为 ffh binbcd:mov b, #100 (b=100,十进制100,) div ab (a等于#02h,b等于#

#define uchar unsigned char uchar 8_bit; uchar ge,shi,bai; bai=8_bit/100; shi=8_bit%100/10; ge =8_bit%10;

二进制编码的十进制数,简称bcd码(binarycoded decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符.4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符.最常用的bcd码称为8421bcd码,8.4.2.1 分别是4位二进数的位取值.

;入口参数; AX:16位二进制码; DI:为BCD码准备的单元的首地址;出口参数; NONE BIN2BCD PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI ;现场保护 MOV CX,3 ;16位二进制码转换成压缩BCD码最多需要3个字节 RE: SUB

先把数据放在A里面吧,以30H中的一个三位数为例:MOV A,30HMOV R1,#20HMOV B,#0AHDIV ABMOV @R1,BINC R1MOV B,#0AHDIV ABMOV @R1,BINC R1MOV @R1,A执行后个位十位百位依次在20H,21H,23H中.

mov b,#10div abmov 50h,amov a,bda amov 52h,aanl 52h,#0fhswap aanl a,#0fhmov 51h,aend

snrg.net | rxcr.net | msww.net | wnlt.net | lyxs.net | 网站首页 | 网站地图
All rights reserved Powered by www.rjps.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com