📜  8085程序生成斐波那契数列

📅  最后修改于: 2021-06-28 17:10:17             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序以生成Fibonacci系列。

示例–假设斐波那契数列存储在起始存储位置3050中。

6666

注–该程序以十六进制数生成斐波那契数列。

算法 –

  1. 用30初始化寄存器H并用50初始化寄存器L,以便间接存储器M指向存储器位置3050。
  2. 用00初始化寄存器B,使用08初始化寄存器C,使用01初始化寄存器D.
  3. 将B的内容移至M。
  4. 将M递增1,以使M指向下一个存储位置。
  5. 在M中移动D的内容。
  6. 将B的内容移动到累加器A中。
  7. 在A中添加D的内容。
  8. 在B中移动D的内容。
  9. 将A的内容移到D中。
  10. 将M递增1,以使M指向下一个存储位置。
  11. 将A的内容移到M中。
  12. 将C减1。
  13. 如果ZF = 0,则跳转到内存位置200C,否则暂停程序。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 LXI H, 3050 H <- 30, L <- 50
2003 MVI C, 08 C <- 08
2005 MVI B, 00 B <- 00
2007 MVI D, 01 D <- 01
2009 MOV M, B M <- B
200A INX H M <- M + 01
200B MOV M, D M <- D
200C MOV A, B A <- B
200D ADD D A <- A + D
200E MOV B, D B <- D
200F MOV D, A D <- A
2010 INX H M <- M + 01
2011 MOV M, A M <- A
2012 DCR C C <- C – 01
2013 JNZ 200C Jump if ZF = 0
2016 HLT END

说明–寄存器A,B,C,D,H,L用于通用。

  1. LXI H 3050:将30分配给H,将50分配给L。
  2. MVI B,00:将00分配给B。
  3. MVI C,08:将08分配给C。
  4. MVI D,01:将01分配给D.
  5. MOV M,B:在M中移动B的内容。
  6. INX H:将M递增1。
  7. MOV M,D:在M中移动D的内容。
  8. MOV A,B:在A中移动B的内容。
  9. 添加D:将D和A的内容相加。将结果存储在A中。
  10. MOV B,D:移动B中D的内容。
  11. MOV D,A:在D中移动A的内容。
  12. INX H:将M递增1。
  13. MOV M,A:在M中移动A的内容。
  14. DCR C:将C减1。
  15. JNZ 200C:如果ZF = 0,则跳转到存储位置200C。
  16. HLT:停止执行程序,并停止任何进一步的执行。