8085程序用于计算给定8位数中1的个数
在这个程序中,我们将看到如何计算8位数中1的个数。
问题陈述
编写8085汇编语言程序,计算存储在8000H位置的8位数中1的个数。
讨论
在这个程序中,我们使用旋转操作来计算1的个数。由于8位数有8个不同的位,因此我们将数字旋转8次。我们可以使用RRC或RLC。这里我们使用了RRC指令。此指令将LSb发送到MSb以及进位标志。因此,在每次迭代之后,我们可以检查进位状态以获得1的计数。
如果数字是DA(11011010),则答案将是5,因为数字中有五个1。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | DA |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 37 | STC | 设置进位 | |
| F001 | 3F | CMC | 补码进位 | |
| F002 | 3A, 00, 80 | LDA 8000H | 将数字加载到A | |
| F005 | 0E, 08 | MVI C,08H | 将计数器初始化为08H | |
| F007 | 06, 00 | MVI B,00H | 清空B寄存器 | |
| F009 | 0F | LOOP | RRC | 右移 |
| F00A | D2, 0E, F0 | JNC SKIP | 如果CY = 0,则跳过下一步 | |
| F00D | 04 | INR B | 如果CY = 1,则增加B | |
| F00E | 0D | SKIP | DCR C | 将C减1 |
| F00F | C2, 09, F0 | JNZ LOOP | 如果Z = 0,则跳转到循环 | |
| F012 | 78 | MOV A,B | 将计数加载到A | |
| F013 | 32, 50, 80 | STA 8050H | 将结果存储在8050H | |
| F016 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 05 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP