8085微处理器检查五选二码的程序


这里我们将看到一个8085微处理器的程序。这个程序将帮助我们检查给定的值是否为有效的五选二码。

问题陈述

编写一个8085汇编语言程序来检查给定的数字是否为五选二码。数字存储在8000H位置。

讨论

五选二码的检查很简单。首先,我们必须检查前三位是否为0。如果它们为0,那么我们将检查接下来的五位。如果这五位中恰好有两个1,那么它就是一个有效的五选二码。

这里,我们首先使用(1110 0000)与数字进行AND运算,如果前三位为0,则结果将为0,之后我们使用旋转操作来检查1的个数。如果进位标志被启用,则计数将增加。因此,1的总数将被反映出来。

如果数字是有效的五选二码,则此程序将把FFH存储到8050H位置,否则将把00H存储到8050H位置。

输入

第一个输入

地址
数据
.
.
.
.
.
.
8000
12
.
.
.
.
.
.

第二个输入

地址
数据
.
.
.
.
.
.
8000
13
.
.
.
.
.
.

第三个输入

地址
数据
.
.
.
.
.
.
8000
03
.
.
.
.
.
.

 

流程图

程序

地址
十六进制代码
标签
助记符
注释
F000
3A, 00, 80
 
LDA 8000H  
从内存中加载数字
F003
67
 
MOV H,A
将A加载到H
F004 2E, 00

MVI L,00H  
清除寄存器L
F006
E6, E0
 
ANI E0H
将累加器和11100000b进行AND运算
F008
C2, 21, F0
 
JNZ DONE  
如果Z = 0,跳转到Done
F00B
7C
 
MOV A,H
将H加载到A
F00C
0E, 05
 
MVI C,05H  
将C加载为05H用于计数
F00E
16, 00
 
MVI D,00H  
清除寄存器D
F010
0F
LOOP
RRC
将累加器内容向右旋转
F011
D2, 15, F0
 
JNC SKIP  
如果CY = 0,跳转到skip
F014
14
 
INR D  
将D增加1
F015
0D
SKIP
DCR C  
将C减1
F016
10, F0
 
JNZ LOOP  
跳转到LOOP
F019
3E, 02
 
MVI A,02H  
将A初始化为02H
F01B
BA
 
CMP D  
将D与A比较
F01C
C2, 21, F0
 
JNZ DONE  
如果Z = 0,跳转到DONE
F01F
2E, FF
 
MVI L,FFH  
将L加载为FFH
F021
7D
DONE
MOV A,L
将结果从L取到A
F022
32, 50, 80
 
STA 8050H
将结果存储在8050H
F025
76
 
HLT
终止程序

 

输出

第一个输出

地址
数据


8050
FF


第二个输出

地址
数据


8050
00


第三个输出

地址
数据


8050
FF



更新于:2019年10月5日

297次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告