8085微處理器程式:累加N個字儲存單元的內容


在這裡,我們將看到一個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
將HL暫存器對載入為8052H和8253H的內容
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年10月9日

308 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告