8085 帶重疊的塊移動
在這個程式中,我們將學習如何將資料塊從一個位置移動到另一個位置。
問題陳述
編寫 8085 組合語言程式來移動資料塊。假設這些塊是重疊的。塊大小已給出,塊從 X 開始,我們必須將其移動到 Y 位置。
討論
重疊塊的移動比較棘手;我們需要使用一些特殊的技巧來移動重疊地址位置中的塊。這裡塊從 X 位置開始,我們必須將其移動到 Y 位置。Y 位置在塊內。因此 Y < X + 塊大小。
在這個程式中,資料儲存在 8010H 位置,我們將將其放置在 8014H。塊大小儲存在 8000H 位置。
為了將塊移動到一些重疊的位置,我們將從塊的末尾元素開始。所以首先移動塊的最後一個元素,然後移動前面的位元組。
輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 07 |
| . . . | . . . |
| 8010 | 11 |
| 8011 | 22 |
| 8012 | 33 |
| 8013 | 44 |
| 8014 | 55 |
| 8015 | 66 |
| 8016 | 77 |
| . . . | . . . |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 | |
|---|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H, 8000H | 載入查詢塊大小的位置 | ||
| F003 | 4E | MOV C, M | 將塊大小儲存到 C 暫存器 | ||
| F004 | 06, 00 | MVI B,00H | 清除 B 暫存器 | ||
| F006 | 21,10, 80 | LXI H,8010H | 將源地址載入到 HL 對 | ||
| F009 | 11, 14, 80 | LXI D, 8014H | 將目標地址載入到 DE 對 | ||
| F00C | 09 | DAD B | 將 BC 與 HL 相加,指向源塊末尾的下一個位置 | ||
| F00D | 2B | DCX H | 指向最後一個元素 | ||
| F00E | EB | XCHG | 交換 DE 和 HL 對的內容 | ||
| F00F | 09 | DAD B | 將 BC 與 HL 相加,指向目標塊末尾的下一個位置 | ||
| F010 | 2B | DCX H | 指向最後一個元素 | ||
| F011 | EB | XCHG | 交換 DE 和 HL 對的內容 | ||
| F012 | 7E | LOOP | MOV A, M | 將記憶體元素載入到累加器 | |
| F013 | 12 | STAX D | 將累加器內容儲存到 D 指向的記憶體中 | ||
| F014 | 1B | DCX D | 減小 DE 暫存器對 | ||
| F015 | 2B | DCX H | 減小 HL 暫存器對 | ||
| F016 | 0D | DCR C | 減小 C 暫存器 | ||
| F017 | C2, 12, F0 | JNZ LOOP | 跳轉到迴圈 | ||
| F01A | 76 | HLT | 終止程式 | ||
輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 07 |
| . . . | . . . |
| 8010 | 11 |
| 8011 | 22 |
| 8012 | 33 |
| 8013 | 44 |
| 8014 | 11 |
| 8015 | 22 |
| 8016 | 33 |
| 8017 | 44 |
| 8018 | 55 |
| 8019 | 66 |
| 801A | 77 |
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP