匯編bcd碼轉換為ascii碼 單片機BCD碼如何轉換為ASCII碼?
單片機BCD碼如何轉換為ASCII碼?用查表法將十六進制數(shù)轉換成ascⅡ代碼:程序流程圖:分析:也可以用計算法實現(xiàn),但比較復雜。如果我們用查表法來解決這個問題,整個程序就會簡單易懂。將0-F對應的AS
單片機BCD碼如何轉換為ASCII碼?
用查表法將十六進制數(shù)轉換成ascⅡ代碼:程序流程圖:分析:也可以用計算法實現(xiàn),但比較復雜。如果我們用查表法來解決這個問題,整個程序就會簡單易懂。將0-F對應的ASCⅡ碼從地址開始依次放入單元中,通過設置地址指針和索引指針來實現(xiàn)。程序和流程圖如下:(R)ORG 0400h,rmov dptr,#0600h;設置地址指針,rmov a,R0;將轉換值取為a,ranl a,#0Fh;屏蔽高位4位以獲得地址更改地址,rmovc a,@a dptr;查表,rmov 20h,a;保存結果,rsjmp$ org 0600h,RDB 30h,31h,32H,33H,34h,RDB 35h,36h,37h,38h,39H;RDB 41h,42h,43h,44h,45h,46h
代碼段假設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ù)[8]lea di,BCD Number mov cx,4 BCD ASCII: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 ASCII Exit BCD代碼最重要的特點是使用4位二進制數(shù)表示0-9之間的十進制數(shù)。所以,一般來說,BCD碼也是一個二進制數(shù),BCD碼只是解釋二進制數(shù)的另一種方式。
二進制是很多1和0的組合,它總是以每兩個進位組合成一個的形式出現(xiàn)。
或例如:
二進制1111,即2#1111,等于10的15。
但是BCD#2#1111是非法數(shù)據(jù),因為BCD代碼只能表示十進制中0-9之間的數(shù)字,而這一系列的2#1111仍然等于10#15。因為BCD碼的定義是用四個二進制數(shù)來表示0-9之間的十進制數(shù)。如果是BCD#15,則可以轉換為2#0001 0101,因此十進制值為21。
從這張圖片中,我們可以看到BCD代碼只能表示十進制數(shù)字中的0-9。當表示0-9的10個數(shù)時,二進制數(shù)和BCD碼的二進制數(shù)據(jù)表示是相同的。
當它超過0-9的10位十進制數(shù)時,二進制碼和BCD碼被轉換成10,這是不一樣的
!二進制代碼仍然可以以二進制轉換為一的形式表示更多的十進制數(shù)。如果用BCD碼來表示更多的十進制值,如BCD#10,那么如果將其展開為二進制,BCD#10=2#00010000,則轉換為十進制的值是32,因為BCD碼將四個二進制數(shù)作為一個組,并將其理解為十進制數(shù)中的0-9。
有點混亂。最好在編程測試期間測試更多的數(shù)據(jù),這將幫助您了解更多。這就是全部。我希望它能幫助你。謝謝您!