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 |
| . . . | . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP