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