ascii碼與bcd碼的轉(zhuǎn)換表 單片機(jī)BCD碼如何轉(zhuǎn)換為ASCII碼?
單片機(jī)BCD碼如何轉(zhuǎn)換為ASCII碼?用查表法將十六進(jìn)制數(shù)轉(zhuǎn)換成ascⅡ代碼:程序流程圖:分析:也可以用計(jì)算法實(shí)現(xiàn),但比較復(fù)雜。如果我們用查表法來解決這個問題,整個程序就會簡單易懂。將0-F對應(yīng)的AS
單片機(jī)BCD碼如何轉(zhuǎn)換為ASCII碼?
用查表法將十六進(jìn)制數(shù)轉(zhuǎn)換成ascⅡ代碼:程序流程圖:分析:也可以用計(jì)算法實(shí)現(xiàn),但比較復(fù)雜。如果我們用查表法來解決這個問題,整個程序就會簡單易懂。將0-F對應(yīng)的ASCⅡ碼從地址開始依次放入單元中,通過設(shè)置地址指針和索引指針來實(shí)現(xiàn)。程序和流程圖如下:(R)ORG 0400h,rmov dptr,#0600h;設(shè)置地址指針,rmov a,R0;將轉(zhuǎn)換值取為a,ranl a,#0Fh;屏蔽高位4位以獲得地址更改地址,rmovc a,@a dptr;查表,rmov 20h,a;保存結(jié)果,rsjmp$ org 0600h,RDB 30h,31h,32H,33H,34h,RDB 35h,36h,37h,38h,39H;RDB 41h,42h,43h,44h,45h,46h
代碼段假設(shè)CS:Code,DS:Code BCDuUnumber DB 45h,32H,56h,98H DW 6 dup(?)開始:push CS pop DS push CS pop es使數(shù)據(jù)段、附加段和代碼段成為同一段CLD、Lea Si、BCD編號Lea di、BCD編號[8]mov CX、2 Rep movsw將這四個字節(jié)的壓縮BCD代碼保存到后續(xù)單元Lea Si,BCD 8字節(jié)之外的字節(jié)數(shù)u8]lea di,BCD unumber mov cx,4 BCD uascii:lodsb push cx mov cx,4 xor ah,ah shl ax,cl shr al,cl or ax,3030h xchg ah,al stosw pop cx loop BCD uascii Exit upro:mov ah,4CH end program int 21h code ends end start
將未壓縮的BCD代碼轉(zhuǎn)換為ASCII代碼,只要加30h20h單位轉(zhuǎn)換成ASCII碼并放入50hmov a,haddca 20hmov 50h,A21H單位轉(zhuǎn)換成ASCII碼并放入51hmov a,haddca 21hmov 51h,a就可以用10個周期來編碼