8085 微处理器中查找两个给定字节的 HCF 程序
在这里,我们将了解如何使用 8085 查找两个给定字节的 HCF 或 GCD。这些数字是 8 位数字,不超过此大小。
问题陈述−
编写一个 8085 汇编语言程序,以查找存储在内存位置 8000H 和 8001H 中的两个数字的 HCF 或 GCD。
讨论−
这里我们将使用欧几里得算法来查找 HCF。此算法非常简单。我们必须遵循以下步骤−
- 如果第一个数字和第二个数字相同,则
a) 转到步骤 3。
否则,如果第一个数字 < 第二个数字,则
b) 交换 no1 和 no2。
- 第一个数字 ← 第一个数字 – 第二个数字;转到步骤 1
- 将结果显示为第一个数字
这些值存储在位置 8000H 和 8001H 中,结果将存储在位置 8050H 中。
输入
第一个输入
地址 | 数据 |
---|---|
… | … |
8000 | 2D |
8001 | 69 |
… | … |
8050 | 0F |
… | … |
第二个输入
地址 | 数据 |
---|---|
… | … |
8000 | 25 |
8001 | 35 |
… | … |
8050 | 01 |
… | … |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 | |
---|---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000H | 指向第一个数字 | |
F003 | 7E | | MOV A,M | 将第一个数字加载到累加器 | |
F004 | 23 | | INX H | 指向下一个位置 | |
F005 | 46 | | MOV B,M | 加载第二个数字 | |
F006 | B8 | LOOP | CMP B | 将 B 与 A 比较 | |
F007 | CA, 17, F0 | | JZ STORE | 当 A 和 B 相同时,存储结果 | |
F00A | DA, 11, F0 | | JC EXG | 如果 B > A,则交换 B 和 A | |
F00D | 90 | | SUB B | 如果 B < A,则从 A 中减去 B | |
F00E | C3, 06, F0 | | JMP LOOP | 跳转到 LOOP | |
F011 | 48 | EXG | MOV C,B | 将 B 加载到 C | |
F012 | 47 | | MOV B,A | 将 A 移动到 B | |
F013 | 79 | | MOV A,C | 将 C 移动到 A | |
F014 | C3, 06, F0 | | JMP LOOP | 跳转到 LOOP | |
F017 | 32, 50, 80 | STORE | STA 8050H | 将值存储到内存中 | |
F01A | 76 | | HLT | 终止程序 | |
| | | | | |
输出
第一个输出
地址 | 数据 |
---|---|
… | … |
8050 | 0F |
… | … |
第二个输出
地址 | 数据 |
---|---|
… | … |
8050 | 01 |
… | … |
广告