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 |
| … | … |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP