汇编语言程序设计斐波那契额数列课设报告册.docx
- 文档编号:1735579
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:12
- 大小:68.19KB
汇编语言程序设计斐波那契额数列课设报告册.docx
《汇编语言程序设计斐波那契额数列课设报告册.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计斐波那契额数列课设报告册.docx(12页珍藏版)》请在冰点文库上搜索。
汇编语言程序设计斐波那契额数列课设报告册
汇编语言程序设计斐波那契额数列课设报告册
学号:
课程名称汇编语言程序设计设计题目求Fibonacci数列前n项学院计算机科学与技术专业计算机科学与技术
班级
姓名
指导教师杨荣英
2011年12月30日
课程设计任务书
学生姓名:
专业班级:
指导教师:
杨荣英工作单位:
计算机科学与技术学院题目:
求Fibonacci数列前n项
初始条件:
理论:
完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了
较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:
完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并
掌握了汇编语言程序的调试方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的
设计。
具体的设计任务及要求:
1)输入要求输出的项数n;
2)在屏幕上输出Fibonacci数列的前n项;
3)程序采用子程序结构,结构清晰;
4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见
课程设计指导书。
阅读资料:
1)《IBM—PC汇编语言程序设计实验教程》实验2.4
2)《IBM—PC汇编语言程序设计(第2版)》例6.11
时间安排:
设计安排一周:
周1、周2:
完成系统分析及设计。
周3、周4:
完成程序调试,和验收。
周5:
撰写课程设计报告。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
1.设计题目
求Fibonacci数列前n项2.设计要求
2.1设计说明
本程序主要是实现计算Fibonacci数列的前n项并且显示在屏幕上,因此在程序运行中,首先要把Fibonacci数列的前n项计算出来,这里的n有用户输入,计算机得到n值后会计算出数列,然后后程序会把得到的前n项显示在屏幕上。
2.2功能要求
首先,我们需要输入要求的Fibonacci数列的项数。
然后,系统把Fibonacci数列前n项显示在屏幕上。
本程序采用数组来存储Fibonacci数列前n项。
2.3原始条件及参数
2.2.1首先,我是先输入要求的Fibonacci数列的项数,如下图:
1,1,2,3,5,8是输入6后求得的Fibonacci数列的前6项,最后通过屏幕打印出来。
2.2.2参数
在这个程序中,主要一个数组存放数据。
3.设计思路
3.1设计方案及基本流程
3.1.1在开始编程时,对于Fibonacci数列的实现,我们想到了数组,即用数组来存放数列,数组的项长短是由输入的n决定的,而不是事前计算好很长的项,然后由n的大小来打印。
3.1.2其次,在计算Fibonacci数列的项的时候要考虑周到,当输入1或2的时候计算机也要能正确的显示。
3.1.3计算好数列的前n项后要正确的显示在屏幕上,这里用逗号把各项分开,看的时候能够比较明了和清楚。
3.2程序框图
建立Fibonacci数列的前n项并且打印到屏幕上。
开始
保护堆栈,设置段寄存器为当前值
输出提示文字并输入n值
调用计算Fibonacci数列子程序。
利
用公式F(n)=F(n-1)+F(n-2),
计算的结果直接存入数据段的数组置数组前2项为(1,1)
Y
N>2?
屏幕打印数组的前N项
N
屏幕打印数组值
结束
4.程序清单
以下为完整的源程序。
datareasegmentstring1db'pleaseinputthenumber:
',13,10,'$'
string2db13,10,'hereis:
',13,10,'$'
Bufferdb4
db?
db4dup(?
)
numberdb?
mulfactdb1
feidb254dup(?
)datareaends
codeareasegmentmainprocfar
assumecs:
codearea,ds:
datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
leadx,string1
movah,09
int21h
leadx,Buffer
movah,0ah
int21h
callconvertnum
moval,number
leadx,string2
movah,09
int21h
callinit
;moval,Buffer+1;andax,00ffh;movsi,ax
calloutputfei;movfei[si+1],24h;leadx,fei
;movah,09
;int21h
ret
mainendp
;=======================================
convertnumprocnear
pushbx
movsi,Buffer[1]
andsi,00ffh
movcx,si
movmulfact,1
movbx,0
Next:
moval,Buffer[si+1]
;cmpal,'0';jsExit
;cmpal,'9';jaExit
subal,30h
andax,000fh
movdl,mulfact
muldl
addbx,ax
moval,mulfact
movdl,10
muldl
movmulfact,ax
decsi
loopNext
movnumber,bl
popbx
ret
convertnumendp;==================================
initprocnear
movcx,al
andcx,00ffh
andax,00ffh
movsi,1
;andsi,00ffh
movfei+1,1
movfei+2,1
loop1:
subcx,2
cmpsi,cx
jnbexit
movbl,0
addbl,fei[si]
addbl,fei[si+1]
movfei[si+2],bl
incsi
jmploop1
exit:
ret
initendp
;==================================
outputfeiprocnear
movcl,number
andcx,00ffh
movsi,0
loop4:
cmpsi,cx
jzbreak
movax,fei[si+1]
andax,00ffh
calloutput
incsi
jmploop4
break:
ret
outputfeiendp;================================
outputprocnear
pushax
pushbx
pushcx
pushdx
cmpax,100
jlg2
movbl,100
divbl
addal,30h
movbh,ah
movdl,al
movah,2
int21h
moval,bh
cbw
g2:
cmpax,10
jlg4
movbl,10
divbl
movbh,ah
addal,30h
movdl,al
movah,2
int21h
moval,bh
cbw
g4:
addal,30h
movdl,al
movah,2
int21h
movdl,20h
movah,2
int21h
popdx
popcx
popbx
popax
ret
outputendpcodeareaends
endstart
5.运行结果
运行的结果为Fibonacci数列的前n项显示在屏幕上,用逗号把各项分开。
5.1当输入,时,返回的结果。
5.2当输入2时,返回的结果
5.3当输入3时,返回的结果。
5.4当输入12时,返回的结果。
6.心得体会
6.1自我评价
经过几天的努力工作,一个功能简单的小系统终于完成了。
虽然不是很复杂,但是仍然有很大的成就感。
这个小系统基本上完成了课程设计的要求,能进行Fibonacci数列前n项的计算和显示,但也有一些局限,比如说界面并不是很好
看,今后在这方面还需要做相应的改进。
这是我个人对系统做的一些简单评价,也许还有更多的地方值得改进,希望老师给予指出,今后会改进的更好。
6.2心得体会及开发感悟
终于完成一个完整的小程序,我感到十分高兴。
感悟很多。
在程序的制作过程中,遇到了很多意想不到的困难,自己一个人解决起来有很大的困难,于是也少不了同学的帮助,深刻体会到开发程序不只是一两个人就能很好的完成的,要大家互相帮助,共同探讨问题,才能更好的解决困难。
对于本程序(求Fibonacci数列前n项),表面上看去似乎很简单,但接下来遇到的困难就让我不这么认为了。
首先数列的保存我想到了数列,可是本数列的前两项都是1,怎么样是的输入1或2时能够正确的显示呢,这个问题困饶了我很久,后来问了一位同学才得到了比较好的解决办法。
在输入n值的时候首先判断它和2的大小关系,如果大于2,则定义数列前两项为1,且执行f(n)=f(n-1)+f(n-2);如果n等于或小于2,则直接打印第一项或前两项。
最后,我觉得接到一个任务不能立刻就下手编程序,而是应该先规划一下程序,仔细列出框架和一些关键细节的实现方法,然后在编程,盲目的编写程序只会让以后的工作很难展开,这些经验必将对以后的学习起到重要的作用。
本科生课程设计成绩评定表班级:
姓名:
学号:
序号评分项目满分实得分110学习态度认真、遵守纪律
210设计分析合理性
320设计方案正确性、可行性、创造性
440设计结果正确性
510设计报告的规范性
610设计验收
总得分/等级评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 额数 列课设 报告