8085程序检查五位二码


现在让我们来看一个英特尔8085微处理器的程序。这个程序将帮助我们检查给定的值是否为有效的五位二码。

问题陈述:

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

讨论:

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

这里首先我们将数字与(1110 0000)进行与运算,如果前三位为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进行与运算
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年7月30日

552次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告