輸入N,輸出第N個斐波那契數
.386
.model flat,stdcalloption casemap:none
includelib msvcrt.lib
printf PROTO C :dword,:VARARG
scanf PROTO C :dword,:VARARG
.data
N dd 0
pre1 dd 1
pre2 dd 1
input db '%d',0
output db 'FIB(%d)=%d',0ah,0
.code
Fibonacci proc C n:dword
pushad
mov ebx,n
cmp ebx,3 ;小於等於3時,pre2 = pre1
jng endf
dec ebx
invoke Fibonacci,ebx
mov ebx,pre2 ;大於3,時,temp = pre1;pre1 = pre2; pre2 = pre2+ temp
mov eax,pre1
add eax,ebx
mov pre2,eax
mov pre1,ebx
jmp exitf
endf:
mov eax,2
mov pre2,eax
exitf:
popad
ret
Fibonacci endp
start:
invoke scanf,offset input,offset N ;輸入N,求第N個斐波那契數列
mov eax,N
cmp eax,3
jl exit
invoke Fibonacci,N
exit:
invoke printf,offset output,N,pre2
ret
end start