Q. Write an 8085 program and draw a flow chart to Generate Fibonacci series.(8085 Microprocessor Program)
Flowchart/Algorithm
Program
Address | Mnemonics | Operand | Opcode | Comments |
2000 | MVI | D, 08H | 16 | Initialize counter to display numbers in series. |
2001 | 08 | |||
2002 | MVI | B, 00H | 06 | Initialize reg. B to store the previous number. |
2003 | 00 | |||
2004 | MVI | C, 01H | 0E | Initialize reg. C to store current number. |
2005 | 01 | |||
2006 | LXI | H, 3000H | 21 | Initialize H-L pair to point to memory. |
2007 | 00 | |||
2008 | 30 | |||
2009 | MOV | M, B | 70 | Move 00H from reg. B to memory. |
200A | INX | H | 23 | Increment H-L pair. |
200B | MOV | M, C | 71 | Move 01H from reg. C to memory. |
200C | MOV | A, B | 78 | Move previous number from reg. B to reg. A. |
200D | ADD | C | 81 | Add the two numbers. |
200E | MOV | B, C | 41 | Assign current number to the previous number. |
200F | MOV | C, A | 4F | Save result as the new current number. |
2010 | INX | H | 23 | Increment H-L pair. |
2011 | MOV | M, A | 77 | Move number from reg. A to memory. |
2012 | DCR | D | 15 | Decrement counter. |
2013 | JNZ | 200DH | C2 | Jump to address 200DH if the counter is not zero. |
2014 | 0D | |||
2015 | 20 | |||
2016 | HLT | 76 | Halt |
Output
After Execution:
3000H: 00H
3001H: 01H
3002H: 01H
3003H: 02H
3004H: 03H
3005H: 05H
3006H: 08H
3007H: 0DH
3008H: 15H
3009H: 22H
Program Explanation
- This program generates the Fibonacci series. The Fibonacci series is:
0 1 1 2 3 5 8 13 21 34 - In hexadecimal, it will be:
00 01 01 02 03 05 08 0D 15 22 - The first two numbers of the series are 0 and 1. The third number is computed as 0 + 1 = 1, fourth number is 1+ 1 = 2, fifth number is 1 + 2 = 3 and so on.
- The count is initialized in register D to display the numbers in series.
- Initialize register B to first number 00H and register C to second number 01H.
- Initialize H-L pair to point to memory location 3000H.
- Move the first two numbers from registers B and C to memory locations 3000H and 3001H.
- Add the two numbers and store the result as the first number.
- Increment H-L pair and move the result from accumulator to memory location.
- The next term is then computed by making the result equal to the previous number.
- The process is repeated until all the numbers are calculated.