8051 中的二進位制到 BCD 轉換


在這個問題中,我們將學習如何將一個 8 位二進位制數轉換為其等值的 BCD 數。二進位制數儲存在位置 20H 處。轉換完成後,結果將儲存在 30H 和 31H 處。30H 處儲存 MS 部分,31H 處儲存 LS 部分。

因此,我們假設資料是 D5H。程式將 D5H 的二進位制值轉換為 BCD 值 213D。

地址



.
.
.
20H
D5
21H








.
.
.


程式

MOVR1,#20H;Takethe address 20H into R1
MOVA,@R1;Takethe data into Acc
MOVB,#0AH;LoadB with AH = 10D
DIVAB ;DivideA with B
MOVR5,B;Storethe remainder
MOVB,#0AH;LoadB with AH = 10D
DIVAB ;DivideA with B
MOVR1,#30H;Loaddestination address
MOV@R1,A;Storethe MS portion
MOVA,B;LoadB content to A
SWAPA;Swapthe nibbles
ADDA,R5;Addstored remainder with A
INCR1;Increasethe address
MOV@R1,A
HALT:   SJMPHALT

這裡,我們只是將二進位制數放入了累加器。然後除以累加器的 0AH(10D)的內容。因此,餘數部分儲存在一個單獨的暫存器中。稍後將它相加。再次使用 0AH 除數商,並生成 MS 位。儲存 MS 位後,將暫存器 B 中的數字獲取到累加器中。交換累加器的半位元組以在 LS 位生成四個零。然後將先前儲存的餘數相加以生成結果。

輸出

地址



.
.
.
20H
D5
21H




.
.
.
30H
02
31H
13


.
.
.

更新於: 27-Jun-2020

3K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告