8085 微處理器將 16 位二進位制數轉換為 BCD 的程式


在這裡,我們將看到一個 8085 微處理器程式。此程式將用於將 16 位二進位制資料轉換為 BCD 資料。

問題陳述 -

編寫一個 8085 組合語言程式,將 16 位二進位制資料轉換為 BCD 資料。二進位制資料儲存在 8000H 和 8001H 位置。

討論 -

這個問題透過實現 16 位計數器來解決。我們首先儲存 16 位數,然後逐個減少數字,並透過調整十進位制值來增加十進位制值。要增加值,我們可以使用 INR 指令,但 INR 指令不會影響進位標誌。因此,這裡我們使用 ADI 01H 將其增加 1。

二進位制數取自 8000H 和 8001H 位置,最終結果儲存在 8050H 到 8052H 位置。

輸入

地址
資料


8000
FF
8001
FF



流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
2A, 00, 80


LHLD 8000H
用 16 位資料初始化 HL
F003
11, 00, 00


LXI D,0000H
清除 DE 暫存器
F006
AF


XRA A
清除 A 暫存器
F007
C6, 01
LOOP
ADI 01H
將 01 加到 A 中
F009
21


DAA
調整十進位制
F00A
47


MOV B,A
將 A 儲存到 B
F00B
D2, 1B, F0


JNC SKIP
如果 CY = 0,則轉到 skip
F00E
7B


MOV A,E
將 E 載入到 A
F00F
C6, 01


ADI 01H
將 01H 加到 A 中
F011
27


DAA
十進位制調整
F012
5F


MOV E,A
從 A 獲取 E
F013
D2, 1B,F0


JNC SKIP
如果 CY = 0,則轉到 skip
F016
7A


MOV A,D
將 D 取到 A
F017
C6, 01


ADI 01H
將 01H 加到 A 中
F019
27


DAA
調整十進位制
F01A
57


MOV D,A
將 A 載入到 D
F01B
2B
SKIP
DCX H
減少 DE
F01C
7C


MOV A,H
將 H 載入到 A
F01D
85


ORA L
A 和 L 進行或運算
F01E
78


MOV A,B
將 B 載入到 A
F01F
C2, 07, F0


JNZ LOOP
跳轉到 Loop
F022
EB


XCHG
交換 DE 和 HL
F023
22, 51, 80


SHLD 8051H
將 HL 內容儲存到記憶體中
F026
32, 50, 80


STA 8050H
將 A 儲存到記憶體中
F029
76


HLT
終止程式

 

輸出

地址
資料


8050
35
8051
55
8052
06


更新於: 2019-10-09

562 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

立即開始
廣告