求Fibonacci数程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
盛年不重来,一
日难再晨。及时宜
0120810680134
自勉,岁月不待人。
学号
课程设计
题目求Fibonacci数程序设计
学院计算机科学与技术学院
专业班级软件工程0801班
姓名李翊华
指导教师王云华
2011 年 1 月 6 日
目录
1.课程设计任务书 (1)
2.设计目的、内容、时间 (2)
2.1设计的时间 (2)
2.2设计的内容 (2)
2.3设计完成时间 (2)
3.设计环境与工具 (2)
4.程序设计算法说明 (2)
5.程序框图 (3)
6.程序代码 (4)
7.运行结果记录 (8)
8.设计结果测试、分析 (11)
9.参考文献 (11)
10.评分表 (12)
课程设计任务书
学生姓名:李翊华专业班级:软件0801班
指导教师:王云华工作单位:计算机学院
题目: 求Fibonacci数程序设计
初始条件:
DOS操作系统。编辑,汇编,连接,调试工具:edit、masm、link、debug 要求完成的主要任务:
程序接受用户键入的n值(1~100),根据给定的n值(注意处理非法n值),计算Fibonacci数。由键盘输入控制值,按“Q”键退出。
课程设计报告书写要求:
1.封面(使用教务处统一格式)
2.报告书目录
3.课程设计任务书
4.设计目的、设计内容、完成时间
5.设计环境与工具
6.程序设计算法说明、框图
7.运行结果记录
8.设计结果测试、分析
9.参考文献
10.其他
11.评分表
12.封底
时间安排:课程设计时间为18周一周。
指导教师签名: 2011年 1 月 6日
系主任(或责任教师)签名: 2011 年 1月 6日
2.设计目的、内容、时间安排
2.1设计目的:
通过该课程设计,熟悉计算机体系结构,DOS的操作系统的功能调用,能较为熟练的运用汇编语言进行程序的编写。进一步了解汇编语言控制计算机硬件的方法,提高应用汇编语言编写程序的能力。
2.2设计内容:
程序接受用户键入的n值(1~100),根据给定的n值(注意处理非法n值),计算Fibonacci数。由键盘输入控制值,按“Q”键退出。
2.3时间安排:
2011年1月1日-7日(第18周)
地点:鉴主10楼软件实验室。
3.设计环境与工具
DOS操作系统、文本编辑器
MASM.EXE、LINK.EXE、DEBUG.EXE
4.程序设计算法说明
程序要求计算Fibonacci数列的前n项,并把第n项的结果显示在屏幕上,因此在程序运算过程中,主要的部分就是Fibonacci数列的前n项的值计算出来,并且以十进制的方式将第n项的值显示在屏幕上。
4.1计算前n项的值
输入n的值后,先判断是否是数值。如果是Q或q,则显示已退出提示,退出程序。如果是其他字符,则显示输入错误的信息,提示重新输入。如果是数值,则进入后面的计算步骤。
将输入的数值存入cx中,如果数值小于等于2,则直接输出结果。否则,就以cx-2作为外循环,把两个数相加,将尾数与高位开储存,直至循环结束。
4.2将转化成十进制
在存储时,是将相加后的结果多次除以10后,余数和商数先后进栈存储。
在输出时,要求以十进制输出。则先判断高位是否为0,为0则出栈但不输出,从下一位开始依次输出,并显示。显示结果就是要求的第n项的十进制结果。
5.设计框图
主流程图
外循环流程图
6.程序代码
datas segment
;此处输入数据段代码
result db 1d,24 dup(0)
x db 1d,24 dup(0)
mess1 db 0dh,0ah,'Please choose a data from 1 to 100:','$' mess2 db 0dh,0ah,'The result is:','$'
mess3 db 0dh,0ah,'Press Q/q to exit.','$'
flag dw
messerror db 0dh,0ah,'Input error,please re-enter.','$' quit db 0dh,0ah,'You have typed Q/q to exit.','$' datas ends
stacks segment
;此处输入堆栈段代码
dw 128 dup(?)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks,es:datas start:
mov ax,datas ;ds寄存器设置到当前的数据段
mov ds,ax
mov es,ax
mov ax,stacks ;ss寄存器设置到当前堆栈段
mov ss,ax
;此处输入代码段代码
reinput:
push ax ;进栈
push bx
push cx
push dx
push si
push di
mov ah,09 ;显示操作符
lea dx,mess3
int 21h
lea dx,mess1