问题–在8085微处理器中编写汇编语言程序以生成Fibonacci系列。
示例–假设斐波那契数列存储在起始存储位置3050中。
注–该程序以十六进制数生成斐波那契数列。
算法 –
- 用30初始化寄存器H并用50初始化寄存器L,以便间接存储器M指向存储器位置3050。
- 用00初始化寄存器B,使用08初始化寄存器C,使用01初始化寄存器D.
- 将B的内容移至M。
- 将M递增1,以使M指向下一个存储位置。
- 在M中移动D的内容。
- 将B的内容移动到累加器A中。
- 在A中添加D的内容。
- 在B中移动D的内容。
- 将A的内容移到D中。
- 将M递增1,以使M指向下一个存储位置。
- 将A的内容移到M中。
- 将C减1。
- 如果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用于通用。
- LXI H 3050:将30分配给H,将50分配给L。
- MVI B,00:将00分配给B。
- MVI C,08:将08分配给C。
- MVI D,01:将01分配给D.
- MOV M,B:在M中移动B的内容。
- INX H:将M递增1。
- MOV M,D:在M中移动D的内容。
- MOV A,B:在A中移动B的内容。
- 添加D:将D和A的内容相加。将结果存储在A中。
- MOV B,D:移动B中D的内容。
- MOV D,A:在D中移动A的内容。
- INX H:将M递增1。
- MOV M,A:在M中移动A的内容。
- DCR C:将C减1。
- JNZ 200C:如果ZF = 0,则跳转到存储位置200C。
- HLT:停止执行程序,并停止任何进一步的执行。