您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 汇编语言课程设计任务书1
1一、课题的主要功能首先,我们来了解一下汇编语言。汇编语言是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。本课题主要实现要求分别输入菱形的两条对角线长,能在屏幕上输出一个菱形的功能。其次,我们来了解一下它的特点和作用。1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。2.保持了机器语言的优点,具有直接和简捷的特点。3..可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。5.经常与高级语言配合使用,应用十分广泛。对于不同型号的计算机,有着不同的结构的汇编语言汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。然后介绍一下我将用汇编语言编制的程序的功能1·程序运行时会有提示要求用户输入菱形的对角线长。在界面上输出提示,提示用户输入数据。用户须根据提示输入菱形的对角线长。当界面出现“pleaseinputchang”表示请用户输入南北方向的对角线长。当用户输入数据以后,则会出现“pleaseinputkuan”表示用户可输入东西方对角线长。22·,程序会跟据输入的对角线计算出菱形的边长,之后是菱形的输出。用BIOS的二号功能来设置光标位置,用九号功能来设置光标的位置显示字符及其属性,本程序采用每条边单独输出的方法,即先画出左上角的边,然后左下边,右下边,最后右上边。采用了四个子程序来控制四条边的输出,即S2,S3.S4,S5.每个子程序中又含有一个循环来控制字符输出的位置及长度,采用LOOP语句来控制循环。按设置好了的,在第某列显示第一个字符,换行到第二行移到后一列输出第二个字符,以此类推,直到最后一个点的位置,停止循环,第一条边就完成了,再开始第二条边的输出。在显示过程中,其中用bp控制循环的次数,bp的值为菱形的边长值,让bp逐步减少,从而达到控制循环的结束。开始结束输出pleaseinputchang输入输出pleaseinputkuan输入3二、功能模块的划分本课题共分为五个模块,即输入对角线模块,计算边长模块,设置光标模块,输出菱形模块,显示图形模块,判断模块。输入部分:让用户根据提示输入数据。在界面上输出提示,提示用户输入数据。用户须根据提示输入菱形的对角线长。当界面出现“pleaseinputchang”表示请用户输入南北方向的对角线长。当用户输入数据以后,则会出现“pleaseinputkuan”表示用户可输入东西方对角线长。计算部分:保存数据,以便控制循环。设置光标:为了使显示出来的菱形彩色的“*”符组成的,就再采用BIOS得九号功能设置在光标位置显示字符及其属性,将显示字符设置成*,实现语句如下:movah,9;设置在光标位置显示字符及;其属性moval,'*';将显示字符设置成*movbl,11001010b;设置颜色为绿色显示图形部分:按设置好了的,在第60列显示第一个字符,换行到第二行移到第59列输出第二个字符,以此类推,直到最后一个点的位置,停止循环,第一条边就完成了,再开始第二条边的输出。在显示过程中,其中用bp控制循环的次数,bp的值为菱形的边长值,让bp逐步减少,从而达到控制显示过程的结束。判断部分:因为本程序采用每条边单独输出的方法,即先画出左上角的边,然后左下边,右下边,最后右上边。采用了四个子程序来控制四条边的输出,即序中必须S2,S3.S4,S5.所以程要有一个判断功能,判断是否已经生成了四条边,也就是一个菱形。模块图如下:4开始结束输入对角线长计算菱形长度设置光标位置显示图形判断是否有四条边5三、主要功能的实现首先,是提示用户输入数据的界面,要求运行程序时屏幕会有一行语句提示用户输入对角线长,pleaseinputchang:和pleaseinputkuan采用strdb'pleaseinputchang:',0dh,0ah,'$'srrdb'pleaseinputkuan:',0dh,0ah,'$'两行语句来实现。其次,是更具用户输入的数据在屏幕上显示符合要求的菱形。在输出菱形各边的时候先要设置了光标的位置,这就用了BIOS功能的二号功能,将光标设置在第0页,第一行的60列,实现语句如下:movah,2;在屏幕上显示movbh,0;将光标设置在第0页movdh,1;将光标设置在第一行movdl,60;将光标设置在第60列int10h第三,为了使显示出来的菱形彩色的“*”符组成的,就再采用BIOS得九号功能设置在光标位置显示字符及其属性,将显示字符设置成*,显示在第0页,重复一次,颜色为绿色,实现语句如下:movah,9;设置在光标位置显示字符及其属性moval,'*';将显示字符设置成*movbl,11001010b;设置颜色为绿色movbh,0movcx,1int10h最后,按设置好了的,在第60列显示第一个字符,换行到第二行移到第59列输出第二个字符,以此类推,直到最后一个点的位置,停止循环,第一条边就完成了,再开始第二条边的输出。在显示过程中,其中用bp控制循环的次数,bp的值为菱形的边长值,让bp逐步减少,从而达到控制循环的结束。执行语句如下:movah,2decbppushbpsubcx,bpmovdl,60subdl,clmovbh,0int10h6绘制图形的流程图如下:NOYESMovcx,diMovax,siMovbp,cxBp进栈,BP--,Subcx,bpMovdl,60Subdl,cl输出字符,bp出栈movcx,bpMovbp,1Movcx,diDeccxJcxzjixu输入对角线长Di=长si=宽7四、程序调试当一个程序编成以后,最重要的就是程序调试了。因为程序使用了学习过程中的各个知识点,但是由于对一些相关的知识点不能够合理的应用,还有在编写程序时的粗心大意,极不合理安排循环循序,所以实验要求的功能不够完善,或者出现意料之外的差错,和意想不到的结果。这次调试在编写程序的过程中也出现了很多问题,比如1、运行后误解图形输出,检查发现自己将在输出菱形各边的时设置了光标的位置,但用的是BIOS功能的四号功能,只是因为一时记忆混淆了,所以更改实现语句如下:movah,2;在屏幕上显示movbh,0;将光标设置在第0页movdh,1;将光标设置在第一行movdl,60;将光标设置在第60列int10h2、分别输入两条对角线长但显示的图像不符合要求,查其原因是输入的数据没有传递到输出图形的子程序中去,最后发现是因为只用了一个变量来存储数据。这其实是粗心大意带来的后果。所以更改之后的程序如下:movcx,dimovax,siadddh,1movah,2decbppushbpsubcx,bpmovdl,60subdl,clmovbh,0int10h3、为了检验所编程序功能的完整性,就需要多输入几组数据进行检测,于是就输入对角线长是故意用稍大的数据,结果不能显示完整的菱形,究其原因是把间距设置的太大,导致DOS界面显示不完。于是更改后的程序如下:movdl,60subdl,clmovbh,04、为了是输出的菱形更完美点,于是我又对字符的属性及其显示的位置作了如下更改:movah,98moval,'*'movbl,11001010bmovbh,0movcx,1int10h在调试过程中其实还有出现过很多问题,是程序没有达到理想的功能和作用,或影响了菱形的正常输出,或输出的菱形不符合要求。甚至有时没有输出,还曾在死循环中跳不出来。但最后在老师和同学们的帮助下最终还是解决了,所以得谢谢老师和同学的帮助。调试后程序的运行如下图示:9五、总结在接触这门课程后,感到汇编语言并不是很容易就可以弄懂的。相比较以前学过的高级语言如C、C++等,电脑等于在迁就人的思维方式,但学汇编,人却必须要去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。另外,在C语言中不到10个语句构成的程序,用汇编语言却要好几十行甚至上百行。这不得不让我们对汇编产生一种恐惧感。事实上,这是完全不必要的。一旦对它的原理掌握后,编写程序就容易多了。另外,学习汇编语言能让我们更加了解计算机内部的组织结构,对我们计算机专业的学生来说,学习汇编也是提升综合能力的关键环节,而这周课设加深了我们对汇编的理解,所以更加重要。在进行近一周的实验中,我感触良多,深感自己能力的不足和认识的欠缺。综观种种,我总结了几点。一、尽可能的多占有校内资源在这次实验中,我做的是图形编织课题。在开始的两天,在前期准备工作中,我觉得向老师咨询有用资源是很有帮助的。除此之外,我们还利用了网上资源,图书馆资源等等。二、学会思考做这次实验之前,我的思考角度一直处在被老师带着走的状态。但通过实践,分析和处理实验过程的问题、提出解决问题的方案以及实施解决过程,我感觉自己的脑子突然开阔,也许我知识领会了一点点,实验不仅仅是做出来的,也是想出来的。我长那么大,受到各种条条框框的影响,思考问题的角度和深度几乎停留在一个阶段,并且没有继续前进的趋势。但现实生活不需要这样的我。通过这次,我想我应该好好的反省自己,给自己一个更积极更全新的定位和思考。三、感谢老师在做实验中,罗老师、唐老师给了我很大的帮助和鼓励。在做课设过程中,我很感动,感动于老师的亲切和关爱。零零星星的几点,也许还不能总结为我的总结。很多来自心底的感动和心底的声音不易用语言描述,只此几笔,一带而过。为期一周的汇编语言课程设计马上就要结束了,现在我来总结一下这周课程设计的内容以及心得体会。本次汇编语言课程设计是利用我们平时所学的汇编知识编写一个通过输入菱形的10对角线长,要求输出一个菱形的小程序。刚拿到题目的时候以为会很简单,就是用几个简单的子程序输出每个边就行了,但刚要动手时,却发现没了思路,每条边怎样才能按照预定的方法输出,循环怎么控制,都成了难以解决的问题,最后通过和同学互相讨论终于找到了思路,其实这次课程设计并不是要求你把书上的各种指令及其功能掌握的很好并且能熟练的运用汇编于语言编程,而恰恰是利用这次课程设计来提高这方面的能力,如果一开始就没摆正心态,思维就会堵塞,后面就更无法做下去了。有了整体的思路后,也就没那么难了,但也遇到了很多问题,比如怎样控制光标的位置,怎样控制循环等等。最后通过运用四个子程序来解决了循环的问题。本次汇编语言课程设计加深了我对汇编语言的理解和运用,一些以前不太理解的指令极其用法现在都能很好的掌握了,还有分支和子程序的运用,尤其是程序的结构化设计思想有了结构化设计思想,你的思路就会更加清晰,解决问题就有针对性,比如这次菱形四条边的输出,子程序可以实现源程序的模块化。通过本次汇编语言课程设计,也让我更加明白实践的重要性,如果整天的学习课本上的理论知识而不拿来用,那么所学的知识是很不牢固的,再者学习理论知识的目的还是要拿来运用,通过实践来巩固所学的理论知识。总之,这次汇编语言课程设计让我收益匪浅,我不但收获了知识,提高了能力,而且学到了很多道理。对于今后的学习起到了很好的引导作用,学会在实践中发现问题,并及时解决,让自己更上一层楼。11六、附件原程序清单:assumecs:code,ss:stack,ds:data;堆栈段stacksegmentdb2
本文标题:汇编语言课程设计任务书1
链接地址:https://www.777doc.com/doc-4094477 .html