8085程序查找一系列偶数的和
在这个程序中,我们将学习如何查找所有偶数的和。
问题陈述
编写 8085 汇编语言程序以查找存储在数组中的所有偶数的和。数组的大小存储在位置 F100;数字从内存位置 F101 开始存储。结果将存储在 F150 中。
讨论
要检查一个数字是奇数还是偶数,我们可以进行 AND 操作。如果一个数字是奇数,那么它将包含 1 作为最低有效位,对于偶数,最低有效位将为 0。因此,在 AND 操作后,如果结果为 0,则它是偶数。通过使用循环,我们仅在数字为偶数时才添加数字。
输入
地址 | 数据 |
---|---|
. . . | . . . |
F100 | 08 |
F101 | 0C |
F102 | 0F |
F103 | 0A |
F104 | 0B |
F105 | 02 |
F106 | 03 |
F107 | 05 |
F108 | 08 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 3A, 00, F1 | | LDA F100 | 将元素数量加载到 A 中 |
F003 | 4F | | MOV C,A | 加载计数器 |
F004 | 06, 00 | | MVI B,00 | 清除 B 以存储总和 |
F006 | 21, 01, F1 | | LXI H,F101 | 初始化指针以获取数字 |
F009 | 7E | LOOP | MOV A,M | 从内存中获取数字 |
F00A | E6, 01 | | ANI 01 | 掩码位以检查是偶数还是奇数 |
F00C | C2, 12, F0 | | JNZ SKIP | 如果它不为零,则跳过它 |
F00F | 78 | | MOV A,B | 将 B 加载到 A 中 |
F010 | 86 | | ADD M | 将 A 和内存元素相加 |
F011 | 47 | | MOV B,A | 将 A 存储到 B 中 |
F012 | 23 | SKIP | INX H | 指向下一个位置 |
F013 | 0D | | DCR C | 减少计数器 |
F014 | C2, 09, F0 | | JNZ LOOP | 直到 Z = 1,跳转到 LOOP |
F017 | 32, 50, F1 | | STA F150 | 存储结果 |
F020 | 76 | | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
F150 | 20 |
. . . | . . . |
广告