比如我的二进制码为:01001101
则BCD码察唤为一位一位的转换:0000
0001
0000
0000
0001
0001
0000
0001
一般我们都是将十进制代码转成BCD码的:
0=0000
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
至于你要程序:
给你个思路吧,你可以做个顺序结构,对比你输入的ascII码,当对到相同的0或1时,直接进行查表(tab
),表格很简单,因为只有01,所以就写两个就则没念好了,就是DW
0000,0001
,然后返回。要是还不明白可以继续提问。
bcd码通常是指8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码bcd码是四位二进制码,也就是将十进制的数字转化为二进制,但是和普通的迹铅转化有一点不同,每一个十进制的数字0-9都对应着一个四位的二进制码姿耐好,对应关系如下:十进制0对应二进制0000十进制1对应二进制0001.......91001接下来的10就有两个上述的码来表示10表示为00010000也就亩袭是bcd码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000
压缩bcd码与非压缩bcd码的区别——压缩bcd码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110b表示十进制数96d;非压缩bcd码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000b表示十进制数8.
百度百科http://baike.baidu.com/view/45179.htm?fr=ala0_1_1
bcd码代表数字0~9,ascii码中也有代表数字0~9的码元,可以查看ascii表,'0'=48,'1'=49,依次类推。
先把压缩bcd拆开变成非压缩bcd,然后加48就是ascii中的0~9了!
code segment assume cs:code start: push cs pop ds mov dx,offset tips mov ah,9 int 21h mov si,3500h十进制ASCII存于如渗3500H起单元 mov di,350ahBCD后再厅含存于350AH起内存 mov cx,10只够输扮橡笑入10个字符 Q0:mov ah,1 int 21h cmp al,'0' jb Q1 cmp al,'9' ja Q1 mov [si],al sub al,30h mov [di],al jmp Q2 Q1:mov al,0ffh mov [si],al mov [di],al Q2:inc si inc di Q3:loop Q0 mov ah,0 int 16h mov ah,4ch int 21h tips db 'Press any key...',0dh,0ah,'$' code ends end start欢迎分享,转载请注明来源:内存溢出
评论列表(0条)