8085程式:求N個字單元內容之和


現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將看到如何新增N個字單元的內容。

問題陳述:

編寫8085組合語言程式,將儲存在記憶體中的N個16位數相加。

討論:

16位數字儲存在記憶體地址8001H開始的位置。N的值儲存在8000H位置。相加後,結果將儲存在8050H開始的位置。

在8085中,暫存器的數量有限。因此我們將計數儲存到記憶體中,當我們需要更新它時,我們將從記憶體中獲取它,更新它,然後再次將其儲存到記憶體中。

這裡16位數字儲存在DE和HL地址中,使用DAD指令將它們相加。

輸入:

第一個輸入

地址
資料
.
.
.
.
.
.
8000
03
8001
34
8002
12
8003
78
8004
56
8005
BC
8006
9A


.
.
.
.
.
.

流程圖:

程式:

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

LXI SP,C000H
初始化堆疊指標
F003
21, 00, 00

LXI H,0000H
清零HL暫存器對
F006
22, 52, 80

SHLD 8052H
將HL內容儲存到8052H和8053H
F009
01, 00, 80

LXI B,8000H
指向地址以獲取數字計數
F00C
0A

LDAX B
將計數載入到累加器
F00D
32, 00, 90

STA 9000H
臨時儲存累加器內容
F010
03
LOOP:
INX B
指向獲取低位位元組
F011
0A

LDAX B
用記憶體內容載入累加器
F012
5F

MOV E,A
將累加器內容儲存到E
F013
03

INX B
指向獲取高位位元組
F014
0A

LDAX B
用記憶體內容載入累加器
F015
57

MOV D,A
將累加器內容儲存到D
F016
19

DAD D
將DE與HL相加
F017
D2, 23, F0

JNC SKIP
如果CY=0,則跳轉到SKIP
F01A
E5

PUSH H
將HL內容壓入堆疊
F01B
2A, 52, 80

LHLD 8052H
用8052H和8253H的內容載入HL
F01E
23

INX H
增加HL內容
F01F
22, 52, 80

SHLD 8052H
將HL內容儲存到8052H和8053H
F022
E1

POP H
從堆疊中取回HL內容
F023
3A, 00, 90
SKIP:
LDA 9000H
載入臨時儲存的資料
F026
3D

DCR A
將A減1
F027
32, 00, 90

STA 9000H
儲存更新後的值
F02A
C2, 10, F0

JNZ LOOP
如果Z=0,則跳轉到LOOP
F02D
22, 50, 80

SHLD 8050H
將HL內容儲存到8050H和8051H
F030
76

HLT
結束程式

輸出:

第一個輸出

地址
資料
.
.
.
.
.
.
8050
68
8051
03
8052
01
8053
00
.
.
.
.
.
.

更新於:2019年7月30日

213 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告