个性化阅读
专注于IT技术分析

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

问题–编写一个汇编语言程序, 以使用8085微处理器来计算数字的阶乘。

示例–

Input : 04H
Output : 18H 
as 04*03*02*01 = 24 in decimal => 18H
数据结果存储

在8085微处理器中, 不存在直接指令将两个数字相乘, 因此乘法是通过重复加法来完成的, 因为4×3等于4 + 4 + 4(即3次)。

将04H加载到D寄存器中->添加04H 3次-> D寄存器现在包含0CH->添加0CH 2次-> D寄存器现在包含18H->加18H 1次-> D寄存器现在包含18H->输出为18H

阶乘迭代

算法–

  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寄存器中获得

赞(0) 打赏
未经允许不得转载:srcmini » 8085汇编程序:找到一个数字的阶乘
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏