8085程式:從陣列中提取所有非00H的資料
在這裡,我們將學習如何使用8085從陣列中提取所有非00H的數字。
問題陳述
編寫一個8085程式,從陣列中提取所有非00H的數字,並將它們儲存到不同的位置。數字從8001地址開始儲存,8000地址儲存陣列大小,結果將從9000地址開始儲存。
討論
為了解決這個問題,我們從記憶體中讀取數字,然後對數字和00H執行或運算。如果零標誌被啟用,則表示該數字為00,因此我們忽略它。否則,我們將其儲存到正確的位置。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 8000 | 0A |
| 8001 | 45 |
| 8002 | 21 |
| 8003 | 00 |
| 8004 | FD |
| 8005 | 00 |
| 8006 | 00 |
| 8007 | 36 |
| 8008 | 98 |
| 8009 | 00 |
| 800A | AC |
| … | … |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | | LXI H,8000 | 載入陣列大小 |
| F003 | 4E | | MOV C,M | 將大小儲存到C |
| F004 | 11, 00, 90 | | LXI D,9000 | 載入目標地址 |
| F007 | 23 | LOOP: | INX H | 指向下一個位置 |
| F008 | 7E | | MOV A,M | 將記憶體中的數字取到A |
| F009 | F6, 00 | | ORI 00H | A與00H進行或運算 |
| F00B | CA, 10, F0 | | JZ SKIP | 如果A為0,則跳過 |
| F00E | 12 | | STAX D | 否則將A儲存到DE指向的記憶體中 |
| F00F | 13 | | INX D | 指向下一個位置 |
| F010 | 0D | SKIP: | DCR C | 計數器減1 |
| F011 | C2, 07, F0 | | JNZ LOOP | 如果C不為0,則跳轉到LOOP |
| F014 | 76 | | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 9000 | 45 |
| 9001 | 21 |
| 9002 | FD |
| 9003 | 36 |
| 9004 | 98 |
| 9005 | AC |
| … | … |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP