Fibonacci Examples
Here are three different programs that generate the Fibonacci sequence:
TITLE Fibo1
; Compute Fibonacci sequence without generating a list
INCLUDE Irvine16.inc
.data
prompt BYTE "How many? ", 0
.code
main PROC
mov ax, @data
mov ds, ax
mov dx, OFFSET prompt
call WriteString
call ReadInt
call CrLf
mov cx, ax
mov bx, 0
mov ax, 1
lp: mov dx, ax
add ax, bx
call WriteDec
call CrLf
mov bx, dx
loop lp
exit
main ENDP
END main
TITLE Fibo2
; Compute Fibonacci sequence by generating a list using INDIRECT addressing
INCLUDE Irvine16.inc
.data
prompt BYTE "How many? ", 0
list WORD 0, 1, 1000 DUP(?)
.code
main PROC
mov ax, @data
mov ds, ax
mov dx, OFFSET prompt
call WriteString
call ReadInt
call CrLf
mov cx, ax
mov si, OFFSET list
lp: mov ax, [si]
add si, 2
add ax, [si]
add si, 2
mov [si], ax
call WriteDec
call CrLf
sub si, 2
loop lp
exit
main ENDP
END main
TITLE Fibo3
; Compute Fibonacci sequence by generating a list using INDEXED addressing
INCLUDE Irvine16.inc
.data
prompt BYTE "How many? ", 0
list WORD 0, 1, 1000 DUP(?)
.code
main PROC
mov ax, @data
mov ds, ax
mov dx, OFFSET prompt
call WriteString
call ReadInt
call CrLf
mov cx, ax
mov si, 0
lp: mov ax, list[si]
add si, 2
add ax, list[si]
add si, 2
mov list[si], ax
call WriteDec
call CrLf
sub si, 2
loop lp
exit
main ENDP
END main