8085程序查找数字的阶乘
在这个程序中,我们将了解如何查找数字的阶乘。
问题陈述
编写8085汇编语言程序以查找8位数字的阶乘。
讨论
在8085中,没有直接指令可以执行乘法。我们需要执行重复加法才能获得乘法的结果。在每一步中,我们都在减小B的值并乘以B的上一个值。我们重复这些步骤,直到B达到1。并将B – 1至0。 因此生成阶乘。
输入
地址 | 数据 |
---|---|
8000 | 05 |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H, 8000H | 加载数字 |
F003 | 46 | | MOV B,M | 将内存中的数字取到B |
F004 | 16, 01 | | MVI D, 01H | 将D设置为01H |
F006 | CD, 10, F0 | FACT | CALL MUL | 调用乘法 |
F009 | 05 | | DCR B | 将B减1 |
F00A | C2, 06, F0 | | JNZ FACT | 如果Z = 0,则跳转到Fact |
F00D | 23 | | INX H | 指向下一个位置 |
F00E | 72 | | MOV M,D | 将结果存储到内存中 |
F00F | 76 | | HLT | 终止程序 |
F010 | 58 | MUL | MOV E,B | 将B加载到E |
F011 | AF | | XRA A | 清除累加器以存储结果 |
F012 | 82 | ML | ADD D | 将D加到A |
F013 | 1D | | DCR E | 递减E |
F014 | C2, 12, F0 | | JNZ ML | 如果Z = 0,则跳转到ML |
F017 | 57 | | MOV D,A | 将A的内容传输到D |
F018 | C9 | | RET | 返回结果 |
输出
地址 | 数据 |
---|---|
8001 | 78 |
广告