1、递归方法求斐波那契函数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(
2、N-2),结果用十进制输出。要求:具有友好的交互界面,建立主菜单界面:*Display Program* input number n: the FIBN=三、课程设计过程1、算法设计(画出算法流程图)2、程序代码清单DATA SEGMENT NUM DW ? GRADE DW 2(?) MESS1 DB ,0AH,0DH,0AH,0DH,*Display Program* MESS2 DB ,0AH,0DH, INPUT NUMBER N:$,0AH,0DH, MESS3 DB 0AH,0DH,FIB(N)=$ MESS4 DB INPUT ERROR! $ MESS5 DB ,0AH,0D
3、H, INPUT NUMBER N: DB 0AH,0DH,N=$ DATA ENDSPROGNAM SEGMENT MAIN PROC FAR ;主程序入口ASSUME CS:PROGNAM,DS:DATASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09 INT 21H L1: LEA DX,MESS5 MOV AH,09 INT 21H MOV BX,0 ;显示欢迎主界面 NEWCHAR: MOV AH,01H ;键盘输入,每个数据以回车结束 INT 21H CMP AL,13 JE
4、LEE01 SUB AL,30H ;转移 JL ERROR CMP AL,9D ;AL中的数与取来的数据比较 JG ERROR CBW XCHG AX,BX ;交换指令 MOV CX,10D MUL CX XCHG AX,BX ADD BX,AX JMP NEWCHAR ;无条件跳转 ERROR: LEA DX,MESS4 MOV AH,09 INT 21H ;中断 JMP L1 RET LEE01: MOV NUM,BX MOV SI,0 MOV AX,0 CALL FIB(N) ;段直接过程调用 LEA DX,MESS3 MOV AH,09 INT 21H PUSH BX ;将相关信息压入
5、栈里 PUSH CX PUSH SI PUSH DI MOV BX,GRADESI MOV CX,10000D CALL DEC_DIV MOV CX,1000D CALL DEC_DIV MOV CX,100D CALL DEC_DIV MOV CX,10D CALL DEC_DIV MOV CX,1D CALL DEC_DIV POP DI POP SI POP CX ;将相关信息弹出栈 POP BX JMP L1 RET MAIN ENDP DEC_DIV PROC NEAR MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV DL,AL ;结果要放在dl中
6、ADD DL,30H MOV AH,02H INT 21H RETDEC_DIV ENDPFIB(N) PROC NEAR CMP NUM,0 ;num为0转到L2 JE LEE02 CMP NUM,1 ;num自减1 JE LEE02 DEC NUM CALL FIB(N) MOV AX,GRADESI MOV BX,GRADESI-2 MOV GRADESI-2,AX ADD AX,BX ;进行加法运算 MOV GRADESI,AX JMP LEE03LEE02: MOV GRADESI,1 ADD SI,2 MOV GRADESI,1LEE03: RETFIB(N) ENDPPROGNA
7、M ENDSEND START 3、调试过程(包括实验过程中实验步骤,出现的问题,解决的方法,使用的实验数据等)步骤:首先是先对递归函数的了解,然后分成三种情况,一种是输入的是0和1的情况,一种是输入的是其他数字,最后一种是输入的不是数字,最后对各种情况进行设计。出现的问题:刚开始只能输入单个字符,一输入一个数字就开始进行判断解决的方法:后面采用了用回车键来判断一段数据输入完毕使用的实验数据:本函数所使用的数据都为数字4、 系统运行结果截图欢迎主界面 运行及结果 5、结果分析用一组数据来检测程序是否正确NUM=0时输出FIB(N)=1 NUM=1时输出FIB(N)=1 NUM=30时输出FIB
8、(N)=35549 NUM=A时输出INPUT ERROR! NUM=$时输出INPUT ERROR! 经过计算以上结果都是正确的,所以程序是正确的四、课程设计体会 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,同时,在老师的身上我学得到很多实用的知识,在次我表示感!同时,对给过我帮助的所有同学和各位指导老师再次表示 忠心的感!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1