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-07-30

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.