Home »
Embedded Systems
Generate Fibonacci Series Program in 8085 Microprocessor
In this tutorial, we will learn how to write program to generate Fibonacci series in 8085 Microprocessor.
By Ayush Sharma Last updated : May 13, 2023
8085 program to generate Fibonacci Series
Write an assembly language program in 8085 microprocessor to generate Fibonacci series.
Example
Assume Fibonacci series is stored at starting memory location 3050.
3050 = 00, 3051 = 01, 3052 = 02, 3053 = 03 and so on.
Note: This program generates Fibonacci series in hexadecimal numbers.
Algorithm
- Initialize register H with 30 and register L with 50, so that indirect memory M points to memory location 3050.
- Initialize register B with 00, register C with 08 and register D with 01.
- Move the content of B in M.
- Increment M by 1 so that M points to next memory location.
- Move the content of D in M.
- Move the content of B in accumulator A.
- Add the content of D in A.
- Move the content of D in B.
- Move the content of A in D.
- Increment M by 1 so that M points to next memory location.
- Move the content of A in M.
- Decrements C by 1.
- Jump to memory location 200D if ZF = 0 otherwise Halt the program.
Program
ADDRESS | MNEMONICS | COMMENTS |
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 200D | Jump if ZF = 0 |
2016 | HLT | END |
Explanation
Registers A, B, C, D, H, L are used for general purpose.
- LXI H 3050: assigns 30 to H and 50 to L.
- MVI B, 00: assigns 00 to B.
- MVI C, 08: assigns 08 to C.
- MVI D, 01: assigns 01 to D.
- MOV M, B: moves the content of B in M.
- INX H: increment M by 1.
- MOV M, D: moves the content of D in M.
- MOV A, B: moves the content of B in A.
- ADD D: add the content of D and A. Store the result in A.
- MOV B, D: moves the content of D in B.
- MOV D, A: moves the content of A in D.
- INX H: increment M by 1.
- MOV M, A: moves the content of A in M.
- DCR C: decrements C by 1.
- JNZ 200C: jump to memory location 200D if ZF = 0.
- HLT: stops executing the program and halts any further execution.