斐波那契数 32位windows 汇编

来源:互联网 发布:mysql数据库表设计 编辑:程序博客网 时间:2024/06/07 03:03


输入N,输出第N个斐波那契数


.386

.model flat,stdcall
option casemap:none


includelib msvcrt.lib


printf PROTO C :dword,:VARARG
scanf PROTO C :dword,:VARARG
.data
N dd0
pre1 dd1
pre2 dd1
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 
0 0
原创粉丝点击