8085程式:帶指定延時的D0位交替
現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將看到如何交替D0位並將其作為輸出傳送。
問題陳述
編寫8085組合語言程式以交替D0位,並將其作為輸出傳送。
討論
交替D0位並將其作為輸出傳送就像生成方波一樣。我們在每個階段都增加了額外的延遲。為了用8085生成方波,我們將連續旋轉10101010 (AAH),並將D0作為輸出。我們將使用01H遮蔽累加器的內容。如果為0,則輸出為0;如果為1,則輸出為1,從而生成脈衝。傳送後,它將使用延遲子程式等待一段時間。
輸入
此情況下沒有輸入。
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| 8000 | 16, AA | | MVI D,AAH | 將10101010載入到D中 |
| 8002 | 7A | ROTATE | MOV A,D | 將D載入到A中 |
| 8003 | 07 | | RLC | 將A左移旋轉 |
| 8004 | 57 | | MOV D,A | 再次將A儲存到D中 |
| 8005 | E6, 01 | | ANI 01H | 用01H遮蔽A |
| 8007 | D3, 10 | | OUT 10H | 將輸出傳送到10埠 |
| 8009 | CD, 0F, 80 | | CALL DELAY | 等待一段時間 |
| 800C | C3, 02, 80 | | JMP ROTATE | 跳轉到ROTATE進行下一階段 |
| 800F | C5 | DELAY | PUSH B | 儲存B。此延遲子程式使用2個單暫存器A & D和1個暫存器對BC |
| 8010 | F5 | | PUSH PSW | 儲存PSW |
| 8011 | 16, 0F | | MVI D, 0F H | 載入外部迴圈計數器 |
| 8013 | 01, 00, 10 | ST | LXI B, 1000 H | 載入內部迴圈計數器 |
| 8016 | 0B | L | DCX B | 遞減內部計數器 |
| 8017 | 79 | | MOV A, C | 如果未耗盡,則再次進行內部迴圈 |
| 8018 | B0 | | ORA B | |
| 8019 | C2, 27, 80 | | JNZ L | |
| 801C | 15 | | DCR D | 遞減外部計數器 |
| 801D | C2, 24, 80 | | JNZ ST | 如果未耗盡,則再次進行外部迴圈 |
| 8020 | F1 | | POP PSW | 恢復PSW |
| 8021 | C1 | | POP B | 恢復B |
| 8022 | C9 | | RET | 返回呼叫程式 |
輸出
交替的D0將像方波一樣反映為輸出。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP