资源描述:
《递归方法求斐波那契函数FIB(N).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.《微机原理实践》课程设计报告题目:递归方法求斐波那契函数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),结
2、果用十进制输出。要求:具有友好的交互界面,建立主菜单界面:'********************DisplayProgram********************maininputnumbern:theFIBN=在屏幕上显示信息三、课程设计过程1、算法设计(画出算法流程图)结束显示所求结果显示FIB(N)=CALLFIB(N)Si=0键盘输入数..FIBNNum是0还是1Num减到1调用Call把FIB[si]和FIB[si-2]赋给FIB[si],FIB[si]赋给FIB[si-2],即根据后两个数求前一个数1赋给FIB[si]和FIB[si-
3、2]返回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;主程序入口 AS
4、SUMECS:PROGNAM,DS:DATA START: PUSHDS SUBAX,AX PUSHAX MOVAX,DATA MOVDS,AXLEADX,MESS1..MOVAH,09INT21HL1:LEADX,MESS5MOVAH,09INT21H MOVBX,0;显示欢迎主界面 NEWCHAR: MOVAH,01H;键盘输入,每个数据以回车结束 INT21H CMPAL,13 JELEE01 SUBAL,30H;转移 JLERROR CMPAL,9D;AL中的数与取来的数据比较 JGERROR CB
5、W XCHGAX,BX;交换指令 MOVCX,10D MULCX XCHGAX,BX ADDBX,AX JMPNEWCHAR;无条件跳转 ERROR: LEADX,MESS4 MOVAH,09 INT21H;中断JMPL1RET LEE01: MOVNUM,BX MOVSI,0 MOVAX,0 CALLFIB(N);段直接过程调用 LEADX,MESS3 MOVAH,09 INT21H PUSHBX;将相关信息压入栈里.. PUSHCX PUSHSI PUSHDI MOVBX,GRADE[SI] MO
6、VCX,10000D CALLDEC_DIV MOVCX,1000D CALLDEC_DIV MOVCX,100D CALLDEC_DIV MOVCX,10D CALLDEC_DIV MOVCX,1D CALLDEC_DIV POPDI POPSI POPCX;将相关信息弹出栈 POPBX JMPL1RET MAINENDP DEC_DIVPROCNEAR MOVAX,BX MOVDX,0 DIVCX MOVBX,DX MOVDL,AL ;结果要放在dl中 ADDDL,30H MOVAH,02
7、H 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
8、 FIB(N)ENDP PROGNAMENDS ENDSTART3、调试过程(包括实验过程