8085程式交換記憶體中的一塊位元組
在這個程式中,我們將瞭解如何使用8085交換一塊位元組。
問題陳述
編寫8085組合語言程式來交換一塊資料,其中塊大小已知。
討論
資料儲存在地址8010H到8019H和9010H到9019H。地址8000H儲存要交換的位元組數。
邏輯非常簡單,HL和DE暫存器對分別指向第一塊和第二塊資料。透過獲取資料,我們只是交換每個記憶體位置的值。然後重複此過程以完全交換兩塊資料。
輸入
地址 | 資料 |
---|---|
... | ... |
8000 | 06 |
... | ... |
8010 | 00 |
8011 | 11 |
8012 | 22 |
8013 | 33 |
8014 | 44 |
8015 | 55 |
... | ... |
9010 | 84 |
9011 | 63 |
9012 | 12 |
9013 | 47 |
9014 | 48 |
9015 | AD |
... | ... |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
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 |
... | ... |
9010 | 00 |
9011 | 11 |
9012 | 22 |
9013 | 33 |
9014 | 44 |
9015 | 55 |
... | ... |
廣告