8085程式交換10個位元組
在這個程式中,我們將看到如何使用8085交換10位元組資料塊。
問題陳述
編寫8085組合語言程式以交換資料塊,其中塊大小為10。
討論
資料儲存在8010H到8019H和9010H到9019H的位置。位置8000H儲存要交換的位元組數。在這種情況下,位元組數為10D,因此將為0AH。
邏輯非常簡單,HL和DE暫存器對分別指向第一個和第二個資料塊。透過獲取資料,我們只是交換每個記憶體位置的值。然後重複此過程以完全交換兩個塊。
輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 0A |
| . . . | . . . |
| 8010 | 00 |
| 8011 | 11 |
| 8012 | 22 |
| 8013 | 33 |
| 8014 | 44 |
| 8015 | 55 |
| 8016 | 66 |
| 8017 | 77 |
| 8018 | 88 |
| 8019 | 99 |
| . . . | . . . |
| 9010 | 84 |
| 9011 | 63 |
| 9012 | 12 |
| 9013 | 47 |
| 9014 | 48 |
| 9015 | AD |
| 9016 | BC |
| 9017 | 2A |
| 9018 | 8F |
| 9019 | 99 |
| . . . | . . . |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 10, 80 | LXI H, 8000H | 指向8000H獲取位元組計數 | |
| F003 | 4E | MOV C, M | 從記憶體載入計數 | |
| F004 | 21, 10, 80 | LXI H,8010H | 指向第一個塊地址 | |
| F007 | 11, 10, 90 | LXI D,9010H | 指向第二個塊地址 | |
| F00A | 46 | LOOP | MOV B, M | 將第一個塊的元素取到B |
| F00B | 1A | LDAX D | 將第二個塊的元素取到累加器 | |
| F00C | 77 | MOV M, A | 將累加器內容儲存到第二個塊 | |
| F00D | 78 | MOV A, B | 將B載入到A | |
| F00E | 12 | STAX D | 儲存到第二個塊 | |
| F00F | 23 | INX H | 指向第一個塊的下一個地址 | |
| F010 | 13 | INX D | 指向第二個塊的下一個地址 | |
| F011 | 0D | DCR C | 減少計數變數 | |
| F012 | C2, 0A, F0 | JNZ LOOP | 當塊未完成時,跳轉到LOOP | |
| F015 | 76 | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8010 | 84 |
| 8011 | 63 |
| 8012 | 12 |
| 8013 | 47 |
| 8014 | 48 |
| 8015 | AD |
| 8016 | BC |
| 8017 | 2A |
| 8018 | 8F |
| 8019 | 99 |
| . . . | . . . |
| 9010 | 00 |
| 9011 | 11 |
| 9012 | 22 |
| 9013 | 33 |
| 9014 | 44 |
| 9015 | 55 |
| 9016 | 66 |
| 9017 | 77 |
| 9018 | 88 |
| 9019 | 99 |
. . . | . . . |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP