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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告