汇编实现Fibnacci函数的功能

这里使用32位的汇编环境


.386
.model flat,stdcall
option casemap:none

includelib msvcrt.lib
printf	PROTO C :dword, :VARARG
scanf   PROTO C :dword, :VARARG

.data   ;数据段
	num   dword ?
	input  byte '%d',0
	szOut byte 'FIB(%d)=%d',0ah,0

.code ;代码段开始
fib proc C n:dword
	cmp n, 2		;当n=1或 2时跳转
	jbe exitrecurse;小于等于跳转(b:below,e:equal)
	mov ebx, n			;EBX=n
	dec ebx				;EBX=n-1
	invoke fib, ebx	;fib(n-1)
	mov ebx, n
	sub ebx,2
	invoke fib,ebx;fib(n-2)
	add eax,1
	ret
exitrecurse:
	ret
fib endp

start:
	 mov eax,1
   invoke scanf,offset input,offset num;需要传送地址指针
   invoke fib, num
   invoke printf, offset szOut, num, eax
   ret
end start;  代码段结束

posted @ 2018-04-28 22:18  DismalSnail  阅读(228)  评论(0编辑  收藏  举报