递归方法求斐波那契函数FIBN.docx
- 文档编号:29950257
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:12
- 大小:44.71KB
递归方法求斐波那契函数FIBN.docx
《递归方法求斐波那契函数FIBN.docx》由会员分享,可在线阅读,更多相关《递归方法求斐波那契函数FIBN.docx(12页珍藏版)》请在冰豆网上搜索。
递归方法求斐波那契函数FIBN
《微机原理实践》课程设计报告
题目:
递归方法求斐波那契函数FIB(N)
专业:
计算机系
班级:
学号:
:
指导教师:
胡美娇
完成日期:
2013年1月1日
一、课程设计目的
1、加深对汇编语言理论和基本知识的理解,掌握DOS和BIOS系统功能调用,掌握运用汇编语言设计具有一定功能的软件的基本方法.
2、通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力
3、提高调试程序的能力
二、课程设计容
递归方法求斐波那契函数FIB(N)
要求:
从键盘输入数N,当N=0,1时,FIB=1;当N>=2时,FIB=FIB(N-1)+FIB(N-2),结果用十进制输出。
要求:
具有友好的交互界面,建立主菜单界面:
'********************DisplayProgram********************
inputnumbern:
theFIBN=
三、课程设计过程
1、算法设计(画出算法流程图)
2、程序代码清单
DATASEGMENT
NUMDW?
GRADEDW2(?
)
MESS1DB,0AH,0DH,,0AH,0DH,'***DisplayProgram***'
MESS2DB,0AH,0DH,'INPUTNUMBERN:
$',0AH,0DH,
MESS3DB0AH,0DH,'FIB(N)=$'
MESS4DB'INPUTERROR!
$'
MESS5DB,0AH,0DH,'INPUTNUMBERN:
'
DB0AH,0DH,'N=$'
DATAENDS
PROGNAMSEGMENT
MAINPROCFAR;主程序入口
ASSUMECS:
PROGNAM,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
LEADX,MESS1
MOVAH,09
INT21H
L1:
LEADX,MESS5
MOVAH,09
INT21H
MOVBX,0;显示欢迎主界面
NEWCHAR:
MOVAH,01H;键盘输入,每个数据以回车结束
INT21H
CMPAL,13
JELEE01
SUBAL,30H;转移
JLERROR
CMPAL,9D;AL中的数与取来的数据比较
JGERROR
CBW
XCHGAX,BX;交换指令
MOVCX,10D
MULCX
XCHGAX,BX
ADDBX,AX
JMPNEWCHAR;无条件跳转
ERROR:
LEADX,MESS4
MOVAH,09
INT21H;中断
JMPL1
RET
LEE01:
MOVNUM,BX
MOVSI,0
MOVAX,0
CALLFIB(N);段直接过程调用
LEADX,MESS3
MOVAH,09
INT21H
PUSHBX;将相关信息压入栈里
PUSHCX
PUSHSI
PUSHDI
MOVBX,GRADE[SI]
MOVCX,10000D
CALLDEC_DIV
MOVCX,1000D
CALLDEC_DIV
MOVCX,100D
CALLDEC_DIV
MOVCX,10D
CALLDEC_DIV
MOVCX,1D
CALLDEC_DIV
POPDI
POPSI
POPCX;将相关信息弹出栈
POPBX
JMPL1
RET
MAINENDP
DEC_DIVPROCNEAR
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOVDL,AL ;结果要放在dl中
ADDDL,30H
MOVAH,02H
INT21H
RET
DEC_DIVENDP
FIB(N)PROCNEAR
CMPNUM,0;num为0转到L2
JELEE02
CMPNUM,1;num自减1
JELEE02
DECNUM
CALLFIB(N)
MOVAX,GRADE[SI]
MOVBX,GRADE[SI-2]
MOVGRADE[SI-2],AX
ADDAX,BX;进行加法运算
MOVGRADE[SI],AX
JMPLEE03
LEE02:
MOVGRADE[SI],1
ADDSI,2
MOVGRADE[SI],1
LEE03:
RET
FIB(N)ENDP
PROGNAMENDS
ENDSTART
3、调试过程(包括实验过程中实验步骤,出现的问题,解决的方法,使用的实验数据等)
步骤:
首先是先对递归函数的了解,然后分成三种情况,一种是输入的是0和1的情况,一种是输入的是其他数字,最后一种是输入的不是数字,最后对各种情况进行设计。
出现的问题:
刚开始只能输入单个字符,一输入一个数字就开始进行判断
解决的方法:
后面采用了用回车键来判断一段数据输入完毕
使用的实验数据:
本函数所使用的数据都为数字
4、系统运行结果截图
欢迎主界面
运行及结果
5、结果分析
用一组数据来检测程序是否正确
NUM=0时输出FIB(N)=1
NUM=1时输出FIB(N)=1
NUM=30时输出FIB(N)=35549
NUM=A时输出INPUTERROR!
NUM=$时输出INPUTERROR!
经过计算以上结果都是正确的,所以程序是正确的
四、课程设计体会
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,同时,在老师的身上我学得到很多实用的知识,在次我表示感!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 方法 求斐波 函数 FIBN