8085程序:求两个给定字节的最大公约数(HCF)
在这个程序中,我们将学习如何使用8085查找两个数字的最大公约数(HCF)或最大公因数(GCD)。
问题陈述
编写8085汇编语言程序,查找存储在内存位置8000H和8001H的两个数字的最大公约数(HCF)。
讨论
这个问题通过欧几里得算法来求解HCF。这个算法非常简单。算法步骤如下:
如果第一个数字和第二个数字相同,则
- 跳转到步骤3。
否则,如果第一个数字 < 第二个数字,则
- 交换第一个数字和第二个数字。
第一个数字 <- 第一个数字 – 第二个数字;跳转到步骤1
显示第一个数字作为结果
值存储在8000H和8001H位置,结果将存储在8050H位置。
输入
第一个输入
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8000 | 8000H |
| 8001 | 69 |
| ... | ... |
| 8050 | 0DH |
| ... | ... |
第二个输入
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8000 | 25 |
| 8001 | 35 |
| ... | ... |
| 8050 | 01 |
| ... | ... |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000H | 21, 00, 80 | LXI H,8000H | 指向第一个数字 | |
| F003H | 7E | MOV A, M | 将第一个数字加载到累加器(Acc) | |
| F004H | 23 | INX H | 指向下一个位置 | |
| F005H | 46 | MOV B, M | 加载第二个数字 | |
| F006H | B8 | LOOP: | CMP B | 比较B和A |
| F007H | CA 17 F0 | JZ STORE | 当A和B相同时,存储结果 | |
| F00AH | DA 11 F0 | JC EXG | 如果B > A,则交换B和A | |
| F00DH | 90 | SUB B | 如果B < A,则从A中减去B | |
| F00EH | C3 06 F0 | JMP LOOP | 跳转到LOOP | |
| F011H | 48 | EXG: | MOV C,B | 将B加载到C |
| F012H | 47 | MOV B, A | 将A移动到B | |
| F013H | 79 | MOV A, C | 将C移动到A | |
| F014H | C3 06 F0 | JMP LOOP | 跳转到LOOP | |
| F017H | 32, 50, 80 | STORE: | STA 8050H | 将值存储到内存中 |
| F01AH | 76 | HLT | 终止程序 |
输出
第一个输出
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8050 | 0DH |
| ... | ... |
第二个输出
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8050 | 01 |
| ... | ... |
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP