使用查詢表的延時流水燈8085程式。
我們將在這裡學習如何使用8085實現帶延時的流水燈。
問題陳述
編寫8085程式,使用從記憶體地址8100H開始儲存的字查詢表實現帶適當延時的流水燈顯示。
討論
模式儲存在8100H地址及以後的位置。我們使用8255埠IC在LED顯示器上顯示內容。顯示完成後,它呼叫延遲函式等待一段時間,然後從記憶體呼叫下一個位元組進行顯示。因此,顯示模式如下所示:
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
8000 | 31, 00, 82 | START | LXI SP, 8200 H | 初始化堆疊指標 |
8003 | 0E, 15 | | MVI C, 14 H | 初始化計數器 |
8005 | 21, 00, 81 | | LXI H, 8100 H | 指向模式輸入緩衝區 |
8008 | 3E, 99 | | MVI A, CW | 將控制字載入到累加器 |
800A | D3, 43 | | OUT 43 H | 將控制字輸出到控制暫存器 |
800C | 7E | AGAIN | MOV A, M | 讀取模式位元組 |
800D | D3, 41 | | OUT 41 H | 輸出到B埠 |
800F | CD, 20, 80 | | CALL DELAY | 呼叫延遲子程式 |
8012 | 2C | | INR L | 指向下一個位置 |
8013 | 0D | | DCR C | 遞減計數器 |
8014 | C2, 0C, 80 | | JNZ AGAIN | 如果未耗盡,則再次執行 |
8017 | 76 | | HLT | 停止 |
8020 | C5 | DELAY | PUSH B | 儲存B。此延遲子程式使用2個單暫存器A和D以及1個暫存器對BC |
8021 | F5 | | PUSH PSW | 儲存PSW |
8022 | 16, 0F | | MVI D, 0F H | 載入外迴圈計數器 |
8024 | 01, 00, 10 | ST | LXI B, 1000 H | 載入內迴圈計數器 |
8027 | 0B | L | DCX B | 遞減內迴圈計數器 |
8028 | 79 | | MOV A, C | 如果未耗盡,則再次執行內迴圈 |
8029 | B0 | | ORA B | |
802A | C2, 27, 80 | | JNZ L | |
802D | 15 | | DCR D | 遞減外迴圈計數器 |
802E | C2, 24, 80 | | JNZ ST | 如果未耗盡,則再次執行外迴圈 |
8031 | F1 | | POP PSW | 恢復PSW |
8032 | C1 | | POP B | 恢復B |
8033 | C9 | | RET | 返回到呼叫程式 |
廣告