斐波那契數 32位windows 彙編


輸入N,輸出第N個斐波那契數


.386

.model flat,stdcall
option 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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章