8085程序计算最小公倍数
现在让我们来看一个Intel 8085微处理器的程序。这个程序将找到两个8位数的最小公倍数。
问题陈述
编写8085汇编语言程序,找出存储在8000H和8001H位置的两个8位数的最小公倍数。
讨论
在这个程序中,我们从8000H和8001H读取数据。通过加载数字,我们将其存储在C寄存器中,并清除B寄存器。第二个数字加载到累加器中。将DE设置为BC寄存器的二进制补码。此DE用于从HL对中减去BC。
方法是这样的:假设数字是25和15。当我们将第一个数字除以第二个数字时,如果没有余数,则第一个数字是最小公倍数。但对于这种情况,存在余数。然后我们将检查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