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


 

 

 

更新於:2019年7月30日

506 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告