8085程式:加兩個多位元組BCD數


現在讓我們來看一個Intel 8085微處理器的程式。這個程式主要用於新增多位BCD(二進位制編碼的十進位制)數。

問題陳述

編寫8085組合語言程式,以新增兩個多位元組BCD(二進位制編碼的十進位制)數。

討論

我們使用4位元組BCD數。這些數字儲存在記憶體位置8501H和8505H中。一個額外的資訊儲存在位置8500H。在這裡,我們儲存位元組計數。結果儲存在位置85F0H。

HL對儲存第一個運算元的位元組地址,DE儲存第二個運算元的位元組地址。C儲存位元組計數。我們使用堆疊來儲存結果的中間位元組。在加法運算完成後,我們從堆疊中彈出並存儲到目標位置。

輸入

地址
資料
.
.
.
.
.
.
8500
04
8501
19
8502
68
8503
12
8504
85
8505
88
8506
25
8507
17
8508
20
.
.
.
.
.
.

流程圖

程式

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


LXI SP, 2000H
初始化堆疊指標
F003
21,00, 85


LXI H,8500H
載入記憶體地址以獲取位元組計數
F006
4E


MOV C,M
將記憶體內容載入到C暫存器
F007
06,00


MVI B,00H
清除B暫存器
F009
21,01, 85


LXI H, 8501H
載入第一個引數地址
F00C
11,05, 85


LXI D, 8505H
載入第二個引數地址
F00F
1A
LOOP
LDAX D
將DE與第二個運算元地址載入
F010
8E


ADC M
將記憶體內容和進位與累加器相加
F011
27


DAA
對累加器內容進行十進位制調整
F012
F5


PUSH PSW
將累加器內容儲存到堆疊中
F013
4


INR B
將B增加1後壓入堆疊
F014
23


INX H
增加HL對以指向下一個地址
F015
13


INX D
增加DE對以指向下一個地址
F016
0D


DCR C
減少C,直到所有位元組都未用盡
F017
C2,0F, F0


JNZ LOOP
當位元組未被考慮時,再次迴圈
F01A
D2,21, F0


JNC SKIP
當進位=0時,跳轉到儲存
F01D
3E,01


MVIA, 01H
當進位=1時,將其壓入堆疊
F01F
F5


PUSH PSW
將累加器內容儲存到堆疊中
F020
04


INR B
將B增加1後壓入堆疊
F021
21,F0, 85
SKIP
LXIH, 85F0H
載入目標指標
F024
F1
L1
POP PSW
彈出AF以從堆疊中取回位元組
F025
77


MOV M, A
將累加器資料儲存在HL指向的記憶體位置
F026
23


INX H
增加HL對以指向下一個地址
F027
05


DCR B
減少B
F028
C2,24, F0


JNZ L1
轉到L1以儲存堆疊內容
F02B
76


HLT
終止程式


輸出

地址
資料
.
.
.
.
.
.
85F0
01
85F1
05
85F2
29
85F3
94
85F4
07
.
.
.
.
.
.

更新於: 2020年6月26日

1K+ 瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告