8085程序:计算10个数序列中奇数的总数
在这个程序中,我们将学习如何在一段数据中计算奇数的数量。
问题陈述
编写一个8085汇编语言程序,计算一段数据中奇数的数量,数据块大小为10D,起始地址为8000H。
讨论
奇偶数的检查非常简单。我们可以通过检查最低有效位 (LSB) 来判断一个数是奇数还是偶数。当LSB为1时,该数为奇数,否则为偶数。在这个程序中,我们从内存中读取一个数,然后将其与01H进行AND运算。如果结果不为零,则该数为奇数,否则为偶数。
输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | DA |
8001 | 53 |
8002 | 26 |
8003 | 41 |
8004 | 17 |
8005 | AC |
8006 | 78 |
8007 | D8 |
8008 | 9C |
8009 | 3F |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000H | 指向起始字节 |
F003 | 0E, 0A | | MVI C,0AH | 将计数器初始化为0AH |
F005 | 06, 00 | | MVI B, 00H | 清零B寄存器 |
F007 | 7E | LOOP | MOV A,M | 从内存中加载数据 |
F008 | E6, 01 | | ANI 01H | A与01H进行AND运算 |
F00A | CA, 0E, F0 | | JZ SKIP | 如果Z=0,跳转到SKIP |
F00D | 04 | | INR B | B加1 |
F00E | 23 | SKIP | INX H | 指向下一个位置 |
F00F | 0D | | DCR C | C减1 |
F010 | C2, 07, F0 | | JNZ LOOP | 如果Z=0,跳转到LOOP |
F013 | 78 | | MOV A,B | 将计数器加载到A |
F014 | 32, 50, 80 | | STA 8050H | 将结果存储到8050H |
F017 | 76 | | HLT | 程序结束 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 04 |
. . . | . . . |
广告