汇编语言程序设计_第1页
汇编语言程序设计_第2页
汇编语言程序设计_第3页
汇编语言程序设计_第4页
汇编语言程序设计_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《汇编语言程序设计》上机实验一、设计课题名称及要求本次上机实验一共有三项的内容及要求如下:1、在屏幕上开出三个窗口:用“”和“”键选择左窗口或右窗口为当前活动窗口,从键盘输入字符,字符就会从当前活动窗口的最下行开始显示,同时也在下窗口显示。当一行字符显示满后(左右窗口一行显示20个字符,下窗口显示50个字符),窗口自动向上卷动一行,输入的字符仍显示于最低一行,窗口最高一行向上卷动后消失,按ESC键程序运行结束。2、用递归的方法求斐波那契数的第24项(N=24),并将结果用十进制显示出来(要求:显示用宏实现)。斐波那契函数FIB(N)的定义为:程序输出FIB(24)的值。3、请编制程序PROG1.ASM,其功能是:内存中连续存放着16个十六位二进制数,在原16个数的第4和第5个数之间插入00FFH,在原16个数的第8和第9个数之间插入FF00H,在原16个数的第12和第13个数之间插入55AAH,在原16个数的最后加入AA55H。将按上述方法插入4个数后得到的20个数存入内存中。例如:内存中有1020H,2002H,3033H,4440H,5008H,…,8FF8H(共16个字)结果为1020H,2002H,3033H,4440H,00FFH,5008H,…,8FF8H,AA55H(共20个字)二、设计思想和实施方案论述课题1:因为教学书中有功能类似程序(例9.13),所以在设计第一个程序中,大部分的想法还是模仿该例题。但与例题不同之处是,这个程序要实现同时两个窗口的字符输出。也就是说光标位的记录将会比例题中一个窗口的复杂很多。在程序设计的过程中,可以先调试一个窗口的输出,并能完成上卷功能;再到两个窗口左右分布,并能根据左右键的输入改变光标位,进行输入操作;最后完成三个窗口的功能。课题2:利用递归算法,将程序功能实现。由于可能会出现数据溢出,所以直接使用EAX的操作将能避免溢出的情况。课题3:插入操作可以有很多种方法实现,由于程序要求中没有严格规定,所以我使用的是增加一个数列的空间,将数据依次填入该空间内。以空间的开销,换取运算时间上的优势。三、课程设计中遇到的问题及解决方法在编写第一个三窗口显示这个程序过程中就遇到了不少麻烦!一开始,就碰到了在做程序前没有学过的显示I/O,虽然课上老师反复重复着:“其实这三道题目里面,最简单的是第一题!”但是当自己实际操作时,感觉并不是那么容易。经过一段时间的思考和审题后,决定先从第三项课题下手,再是第二项,最后再做第一项。在做第三个程序的过程中发现虽然在插入操作中并没有遇到太多问题,但是总是不能查看结果,要看结果,还非得debug-t到结束再用-d命令,查看内存中的数据结果,于是多花了一点时间,在程序的末尾加了一段COMVERTHEXTOASCⅡ,终于自我较为满意地完成了TASK3。第二个程序的编写遇到了子程序自身递归调用边界问题,经常是虽然编译工具没有检查出错误,但是不能编译、不能产生目标文件,后来经过不断的debug-t发现有运算边界上的错误,导致死循环,所以不能生成目标文件。在经过了前两个程序的考验后,再来做这个大部分人都望而生畏的TASK1。我在后来的课程学习过程中也慢慢了解了不少显示I/O操作,并在教材中发现了一个与这项课程有着极其相似的小程序。敲入代码后,却仍然不能运行,后来发现主要是INCLUDE这出了问题。于是把CLS.INC中的代码当作子程序加到该程序后面,问题解决。在运行书中例题的时候我发现一处BUG——当我输入的是“ENTER”的时候,光标会换到下一行,并且是0光标位,继续输入,是在那个光标之后直至一行小窗口的字符数后(即例题中的20)才能回到原小窗口。我认为是MOVAH,1INT21H这里出的问题,直接输出键盘字符,会导致上述的问题出现,于是改用movah,0ah;movbh,0movcx,1int10h替代之前的MOVAH,1INT21H经过调试,果然解决了这个BUG。再后来的两窗口,三窗口输出过程中,唯一困扰到我的就是光标的移动问题,需要的是不断的调试修改。后来再仔细想了一想,其实光标的操作并不难。一口气将它解决~!四、收获与体会通过这次的课程设计,我了解到,一些细节对于编程的认识相当重要的,其一:良好的文档习惯,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,大部分的时间都是用来写代码写文档的。要是缺乏良好的文档管理习惯,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。其二,在这次的课程设计中,我还了解到程序的模块化设计的重要性。当一个较大的程序任务放在你面前的时候,如果能把这一项任务很好的分成几部分模块,就能大大减少任务的困难程度,缩减程序开发时间,同时,一些重复性工作就成了完全可以避免的了。再者,良好的测试能力。这分为两方面,一,在写完程序之后,经常会遇到各种我们预期之外的结果情况,在这种时候就需要程序员不断的反复调试,修改程序代码,最终得到预期结果。第二方面,是程序在非正常输入的时候的解决能力(也就是上数据结构时,老师说的程序的健壮性)。最后,就是学习和总结的能力。虽然说在开始编程前,我对任务中TASK1没有丝毫的解决能力,但是通过后来的学习和查阅资料,最终能够将任务较好的完成。因为课程设计的时间较短,程序中仍然有很多不足之处,但在这次的课程设计中,我已经学到了很多单纯在课堂中没有学到的东西。五、程序流程图,程序清单和程序注释a)课题1程序清

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论