8085程式反序傳輸資料塊
在這裡,我們將學習如何使用8085反序傳輸資料塊。
問題陳述
編寫8085程式,以反序傳輸N位元組的資料塊。該資料塊儲存在地址8001及其後續地址中,資料塊大小儲存在8000地址中。資料塊將移動到地址9000及其後續地址中。
討論
為了解決這個問題,我們首先獲取資料塊的大小。DE暫存器對設定為指向目標地址9000H。HL暫存器對設定為指向資料塊的最後一個元素。如果資料塊大小為0A,則最後一個塊將位於800A。首先,HL指向8000,從中獲取塊大小並存儲到C中。現在將C與L暫存器相加以獲取最後一個塊的地址。現在從HL指向的記憶體中獲取每個元素,並將其儲存回DE指向的記憶體中。然後增加DE,並減少HL。因此,整個塊將反向移動。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 8000 | 0A |
| 8001 | 11 |
| 8002 | 22 |
| 8003 | 33 |
| 8004 | 44 |
| 8005 | 55 |
| 8006 | 66 |
| 8007 | 77 |
| 8008 | 88 |
| 8009 | 99 |
| 800A | AA |
| … | … |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | | LXI H,8000 | 指向8000以獲取塊大小 |
| F003 | 4E | | MOV C,M | 將塊大小存入C |
| F004 | 11, 00 90 | | LXI D,9000 | 指向目標地址 |
| F007 | 7D | | MOV A,L | 將L載入到A |
| F008 | 81 | | ADD C | 將C相加以指向塊的最後一個地址 |
| F009 | 6F | | MOV L,A | 將A再次儲存到L |
| F00A | 7E | LOOP | MOV A,M | 將記憶體載入到A |
| F00B | 12 | | STAX D | 將A儲存到DE指向的目標位置 |
| F00C | 13 | | INX D | 將目標指向下一個地址 |
| F00D | 2B | | DCX H | 將源指向之前的地址 |
| F00E | 0D | | DCR C | 將C減1 |
| F00F | C2, 0A, F0 | | JNZ LOOP | 如果Z標誌未設定,則跳轉到LOOP |
| F012 | 76 | | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 9000 | AA |
| 9001 | 99 |
| 9002 | 88 |
| 9003 | 77 |
| 9004 | 66 |
| 9005 | 55 |
| 9006 | 44 |
| 9007 | 33 |
| 9008 | 22 |
| 9009 | 11 |
| … | … |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP