Program on fibonacci series in assembly with description
Answers
a=1
b=1
for I= 1 to 10
print a;b
let c = a+b
print c
a=b
b=c
next I
end
Program –
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 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.