俺来帮你解答
BCD码转换成二进制码的方法:
1
可以按照按权展开公式:
将BCD码按照千位、百位、十位、个早敬位展开计算
即
(BCD码的千位)×1000+(BCD码的百位)×100+(BCD码的十位)×10+(BCD码的个位)
上述式子之和即为转皮仔换后的二进制数。
呵呵
俺只提供给你一个算法
你可以按照上述算法燃睁汪编写一个BCD码转换成二进制码的子程序。
满意就选满意回答吧
data segmentbcd1 db 握丛12h 压缩的bcd code
asc1 db 0,0 神没转换后的ascii code
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov al,bcd1 (al)=12
and al,0f0h (al)=10
mov cl,4
shr al,cl (al)=01
add al,30h (al)=31h
mov asc1[0],al
mov al,bcd1 (al)=12
and al,0fh (al)=02
add al,30h (al)=32h
mov asc1[1],al
mov ah,4ch
int 21h
code ends
段瞎樱 end start
void HextoBCD(u8 *pBuff,u8 len) //十六进制转为BCD码
{
u8 i,temp
for(i=0i<leni++)
{
temp=pBuff[i]/10
time[i]=pBuff[i]%10+temp*16
}
}
bcd码就是用二带袭冲进制数来表示常用的十蠢歼进制数。就是用四个位的二进制来表示一个二进制数。一个字节一共有八个位,它就可以表示两个bcd码。比如,0FH等于二禅租进制物15,用一个字节低四位来表示5,高四位来表示1合起来就是15H,不用转换两次的。
扩展资料例如:
63÷10=6……3
即商是6,余数是
如果将商乘以16再加上余数,就是:6×16+3=99,其16进制数就是63H,即是十进制数63(16进制为3FH)的BCD码为63H。
如果在单片机中,程序这么写:char HEX,BCD;BCD=(HEX/10*16)+(HEX%10)
其中HEX存储十六进制数,BCD中存储的就是其BCD码。
参考资料来源:百度百科-BCD码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)