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

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 06, DA | | MVI B, DA | 取数字1101 1010 |
| F002 | 37 | | STC | 设置进位 |
| F003 | 3F | | CMC | 取反进位 |
| F004 | 78 | | MOV A,B | 将数字从B加载到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 |
| F01F | 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 |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP