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 |
| … | … |
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP