8085汇编程序(找到一个数字的阶乘)

【8085汇编程序(找到一个数字的阶乘)】问题–编写一个汇编语言程序, 以使用8085微处理器来计算数字的阶乘。
示例–

Input : 04H Output : 18H as 04*03*02*01 = 24 in decimal => 18H

8085汇编程序(找到一个数字的阶乘)

文章图片
在8085微处理器中, 不存在直接指令将两个数字相乘, 因此乘法是通过重复加法来完成的, 因为4×3等于4 + 4 + 4(即3次)。
将04H加载到D寄存器中-> 添加04H 3次-> D寄存器现在包含0CH-> 添加0CH 2次-> D寄存器现在包含18H-> 加18H 1次-> D寄存器现在包含18H-> 输出为18H
8085汇编程序(找到一个数字的阶乘)

文章图片
算法–
  1. 将数据加载到寄存器B
  2. 要开始乘法, 请将D设置为01H
  3. 跳至步骤7
  4. 递减B以乘以先前的数字
  5. 跳至步骤3, 直到B> 0
  6. 将内存指针移到下一个位置并存储结果
  7. 向E加载B的内容并清除累加器
  8. 重复将D的内容添加到累加器E次
  9. 将累加器内容存储到D
  10. 转到步骤4
地址 标签 助记符 注释
2000H 数据 数据字节
2001H 结果 阶乘结果
2002H LXI H, 2000H 从内存加载数据
2005H MOV B, M 将数据加载到B寄存器
2006H MVI D, 01H 设置D寄存器为1
2008H 阶乘 多次呼叫 子程序乘法
200BH DCR B 递减B
200CH JNZ MULTIPLYLOOP 调用阶乘直到B变为0
200FH INX H 增量
2010H MOV M, D 将结果存储在内存中
2011H HLT
2100H MOV E, B 将B的内容传输到C
2101H MVI A, 00H 清除累加器以存储结果
2103H 多重循环 ADD D 将D的内容添加到A
2104H DCR E 递减E
2105H JNZ多重循环 重复添加
2108H MOV D, A 将A的内容传输到D
2109H RET 从子程序返回
说明–
  1. 首先用数据设置寄存器B。
  2. 通过一次调用MULTIPLY子例程将寄存器D设置为数据。
  3. 通过将MULTIPLY子例程称为4 * 3等于4 + 4 + 4(即3次), 将B减1并将D加到自身B上。
  4. 重复上述步骤, 直到B达到0, 然后退出程序。
  5. 结果在存储在存储器中的D寄存器中获得

    推荐阅读