8085程序计算最小公倍数


现在让我们来看一个Intel 8085微处理器的程序。这个程序将找到两个8位数的最小公倍数。

问题陈述

编写8085汇编语言程序,找出存储在8000H和8001H位置的两个8位数的最小公倍数。

讨论

在这个程序中,我们从8000H和8001H读取数据。通过加载数字,我们将其存储在C寄存器中,并清除B寄存器。第二个数字加载到累加器中。将DE设置为BC寄存器的二进制补码。此DE用于从HL对中减去BC。

方法是这样的:假设数字是25和15。当我们将第一个数字除以第二个数字时,如果没有余数,则第一个数字是最小公倍数。但对于这种情况,存在余数。然后我们将检查25的下一个倍数以检查可除性。当余数变为0时,程序终止,结果被存储。

输入

第一个输入

地址数据
.
.
.
.
.
.
800003
800107
.
.
.
.
.
.

第二个输入

地址数据
.
.
.
.
.
.
800023
800107
.
.
.
.
.
.

流程图

程序

地址十六进制代码标签助记符注释
F00021, 00, 80
LXI H, 8000H   指向8000H以获取第一个数字
F0034E
MOV C, M将内存单元加载到C
F00406, 00
MVI B, 00H  清除B寄存器
F00623
INX H   指向下一个位置
F0077E
MOV A, M将第二个数字加载到累加器
F0082F
CMA取反累加器
F0095F
MOV E, A将A的反码加载到E
F00A16, FF
MVI D, FFH  加载00H的反码
F00C13
INX D   增加DE寄存器对
F00D21, 00, 00
LXI H, 0000H   将0000H加载到HL对
F01009NEXTDAD B   将BC与HL相加
F01122, 50, 80
SHLD 8050H  将HL内容存储到8050H
F01419LOOPDAD D   将DE与HL相加
F015D2, 20, F0
JNC SKIP    当CY = 0时,跳转到SKIP
F0187C
MOV A, H将H的内容获取到A
F019B5
ORA L   将L与A进行或运算
F01ACA, 26, F0
JZ EXIT当HL为0000时,跳转到EXIT
F01DC3, 14, F0
JMP LOOP    跳转到Loop
F02021, 50, 80SKIPLHLD 8050H  从8050H加载HL
F023C3, 10, F0
JMP NEXT    跳转到NEXT
F0262A, 50, 80EXITLHLD 8050H  将HL对存储为最小公倍数
F02976
HLT终止程序


输出

第一个输出

地址数据
.
.
.
.
.
.
805015
805100
.
.
.
.
.
.

第二个输出

地址数据
.
.
.
.
.
.
80503B
805101
.
.
.
.
.
.

更新于:2019年7月30日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.