8085 微处理器计算最小公倍数的程序
现在让我们来看一个 Intel 8085 微处理器的程序。此程序将找到两个 8 位数的最小公倍数。
问题陈述 -
编写 8085 汇编语言程序,以查找存储在 8000H 和 8001H 位置的两个 8 位数的最小公倍数。
讨论 -
在此程序中,我们从 8000H 和 8001H 读取数据。通过加载数字,我们将它存储在 C 寄存器中,并清除 B 寄存器。第二个数字加载到累加器中。将 DE 设置为 BC 寄存器的二进制补码。此 DE 用于从 HL 对中减去 BC。
方法如下:假设数字为 25 和 15。当我们将第一个数字除以第二个数字时,如果余数为 0,则第一个数字就是最小公倍数。但是对于这种情况,存在余数。然后我们将检查 25 的下一个倍数以检查可除性。当余数变为 0 时,程序终止,结果被存储。
输入
第一个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 03 |
8001 | 07 |
. . . | . . . |
第二个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 23 |
8001 | 07 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H, 8000H | 指向 8000H 获取第一个数字 |
F003 | 4E | | MOV C,M | 将内存元素加载到 C |
F004 | 06, 00 | | MVI B, 00H | 清除 B 寄存器 |
F006 | 23 | | INX H | 指向下一个位置 |
F007 | 7E | | MOV A,M | 将第二个数字加载到累加器 |
F008 | 2F | | CMA | 取累加器的反码 |
F009 | 5F | | MOV E,A | 将 A 的反码形式加载到 E |
F00A | 16, FF | | MVI D, FFH | 加载 00H 的反码形式 |
F00C | 13 | | INX D | 增加 DE 寄存器对 |
F00D | 21, 00, 00 | | LXI H, 0000H | 将 0000H 加载到 HL 对中 |
F010 | 09 | NEXT | DAD B | 将 BC 与 HL 相加 |
F011 | 22, 50, 80 | | SHLD 8050H | 将 HL 内容存储到 8050H |
F014 | 19 | LOOP | DAD D | 将 DE 与 HL 相加 |
F015 | D2, 20, F0 | | JNC SKIP | 当 CY = 0 时,跳转到 SKIP |
F018 | 7C | | MOV A,H | 将 H 内容获取到 A |
F019 | B5 | | ORA L | 将 L 与 A 进行或运算 |
F01A | CA, 26, F0 | | JZ EXIT | 当 HL 为 0000 时,跳转到 EXIT |
F01D | C3, 14, F0 | | JMP LOOP | 跳转到 Loop |
F020 | 21, 50, 80 | SKIP | LHLD 8050H | 从 8050H 加载 HL |
F023 | C3, 10, F0 | | JMP NEXT | 跳转到 NEXT |
F026 | 2A, 50, 80 | EXIT | LHLD 8050H | 将 HL 对存储为最小公倍数 |
F029 | 76 | | HLT | 终止程序 |
输出
第一个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 15 |
8051 | 00 |
. . . | . . . |
第二个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 3B |
8051 | 01 |
. . . | . . . |
广告