您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 82汇编语言程序设计实习报告
汇编语言程序设计实习报告学号3007218144姓名赵立夫学院名称软件学院专业软件工程时间2009.9.181目□□录(三号、黑体、居中、目录两字空两格、与正文空一行)第一章、题目…………第二章、设计说明书(空两格)(小三号、宋体)…×2.1时钟程序…………………………………………………×2.2文本编辑器…………………………………………………×………………第三章、测试分析报告×3.1时钟程序…………………………………………………×3.2文本编辑器…………………………………………………×………………第四章、实习总结…………………×4.1时钟程序…………………………………………………×4.2文本编辑器…………………………………………………×………………参考文献…………………………………×目录单独排页码,阿拉伯数字(宋体小五号)连续编排,居中书写。1设计说明书编写提纲一、题目原题表述阐述所选的要求及整体规划详细说明题目扩展后的功能,详细说明系统中每个环节的具体功能要求二、设计说明书主要算法系统逻辑总体架构(如,总的功能模块图和说明、设计的逻辑架构图和说明等)功能模块的实现a)每个功能模块的主要功能描述b)每个功能模块的实现流程,界面设计(贴图),关键代码(只要关键的代码行,不要整段代码)c)所用到的计算公式找出本次实习项目中,你自己认为是实现难点并且通过实习成功解决了的几个问题,描述你的解决方法。三、测试分析报告包括的内容测试的目的所有测试用例测试用例的分布统计表测试结果及分布统计表测试结论四、实习总结总结在实习过程中的体会五、参考文献三篇以上格式要求必须符合天津大学本科毕业设计论文模版中关于参考文献的格式要求软件学院2006级汇编语言程序设计实习设计报告1第一章题目1.1时钟程序1.1.1原体表述要求:a.能够设置时间b.能够设置闹钟c.整点能够提示1.1.2整体规划与功能要求主要功能有:能够正确的计时并显示时间能够设置时间可以设置闹钟可整点以报时可以显示每次设置的状态功能要求:显示时间需要的功能:在全屏模式下画出表盘,秒针,并能够保证刷新正确计时功能:要求可以设计正确计时的方法。设置时间:要求可以判断设置时间的格式是否正确,要求可以从键盘读取按键,并能够正确的设置并显示时间。设置闹钟:可以发声音;但发声前必须正确检测时间,可以利用按键设置闹钟并检测设置时间的格式是否正确。文字提示:修改时显示,修改完成后利用卷屏进行清除文字显示状态:根据设置时间的格式判断正确与否并显示。1.2文本编辑器正文开始标注页眉,宋体五号居中软件学院2006级汇编语言程序设计实习设计报告21.2.1原体表述使用Win32编程设计一个功能及界面风格类似于记事本的文本编辑器。主要实现的功能:主菜单应包含基本的文件操作,包括新建、打开、保存、另存、退出,以及基本的文本编辑操作,包括撤销、剪切、复制、粘贴、删除、全选。各菜单功能项应该有与之相对应的热键字符和快捷键。支持简单的右键菜单功能,提供便捷的编辑处理。较高要求:支持字体、文字颜色等特性。软件学院2006级汇编语言程序设计实习设计报告3第二章设计说明书2.1时钟程序2.1.1主要算法主要算法:画圆的算法。画直线的算法。直线算法:从(X0,Y0)到(X1,Y1)直线。由于屏幕上的像素点可以认为是网格状的每一处交点,所以不能精确地显示直线的每一点,所以只能近似的显示。通过比较来寻找周围离直线最近的点来尽可能的精确直线。所以从(X0,Y0)坐标开始,可以按照一行一行来找点,因为一行只能有一点来确定其在直线上,所以通过判断(X0+1)行与直线相交的点,若其刚好为一像素点,则那点为下一点,若不是,则寻找交点旁边的两个坐标,通过判断其哪点离交点最近则选择之,通过比较,知道下一点为(X0+1,Y)或(X0+1,Y0+1)。如此一行行判断直到X1行即可得到近似的直线。也可以一列列判断,第一点为(X0,Y0),然后看第二列,要么为(X0,Y0+1)或者(X0+1,Y0+1),依次一列列判断即可。画圆算法:与画线一样,通过寻找与标准圆最近的一点,然后依次画点。但是由于圆是对称的,所以采取八点法来画,只用寻找出0度到45度之间的点,再通过对称即可找出其它七点。例如:0到四十五度一点(x,y),则其与四十五度的直线对成点的是(y,x),再找(y,x)与横坐标对称的点(y,-x),再找出(y,-x)与135度直线对称的点(x,-y),再找(x,-y)与纵坐标对称的点(-x,y),再找出(-x,y)与45度直线对称的点(y,-x),再找(y,-x)与横坐标对称的点(-y,x),再找(-y,x)与135度对称的点(-x,y);即找出八点。依次八点画即可画出。软件学院2006级汇编语言程序设计实习设计报告42.1.2系统逻辑总体架构整点?为1ch中断添加计数并显示时间函数闹钟?发出响声是是否设置视频模式,并画出表结构否软件学院2006级汇编语言程序设计实习设计报告52.1.2功能模块的实现a)每个功能模块的主要功能描述1)设置视频模式并画出表结构:主要为显示表设置全屏模式,然后画僺表的外部基本结构2)为1ch中断添加计数显礚旴藴的函数:主要为了使1ch可以计数,并且在里边添入函数使得秒针,小时和分钟可以变化。3)判断模块:用来判断ᗹ钟、整点还有按键,以产生不同的动作4)设置时间:可以设置时间5)设置闹钟:可以设置闹钟时间6)停止计时并结束:佻得1ch还原为空例程,然后结敟程序7)清除缓冲区:通过判断无摈按键来清除,即不做动作b)每个功能模块犄厞现流程,界面设计(贴图),关键代码1)设置视频模式并画出表结构:通过调用10h中断改变视频模式。画出表结构:通过画圆函数来画出两个圆,并通过画线函数来画出个数字框。按键c?按键q?按键s?设置闹钟时间设置时间停止计时并结束是是是否否否其它?清除键盘缓冲区是否软件学院2006级汇编语言程序设计实习设计报告6movax,0012h;设置视频模式int10h;画表结构Clockprocmovcolor,1110bmovxxin,320movyxin,240movr,120movx,0movy,120callYuan;大圆movcolor,1110bmovxxin,320movyxin,280movr,30movx,0movy,30callYuan;小圆movcolor,1110bcallKua;画出数字框retClockENDP2)为1ch中断添加计数显示时间的函数:这个为程序的核心部分:通过1ch每秒钟计数18.2次来计数,到18次秒数增长一,到180次减去计数器两次。显示时间主要有用背景色代替上次的图像,然后产生当前的图像:秒针是每秒去除一次并新产生一次,分钟是每分钟产生并新建一次,小时是每小时产生并新建一次。pushds;movax,segCtimemovds,ax软件学院2006级汇编语言程序设计实习设计报告7movax,251Chmovdx,offsetCtimeint21hpopdsCtimeprocpushaxpushbxpushdsMOVAX,DATASMOVDS,AXcmpcount,18jlccL1movcount,0cmpsecond,59jbccL2movsecond,0callCm;当秒针需要动时擦去上一秒的秒针movcolor,1001bcallMiao;显示新的秒针jmpccL3ccL1:jmpcL1ccL2:jmpcL2ccL3:cmpminute,59jbcL3movminute,0callCmi;擦去上一次的分钟movcolor,1001b软件学院2006级汇编语言程序设计实习设计报告8callMnum;显示当前分钟数cmphour,23jbcL4movhour,0callCho;擦去上一小时的分钟movcolor,1001bcallHnum;显示当前小时jmpcL5cL1:inccountmovax,countmovbx,10movdx,0divbxcmpdx,0jzc1movcolor,0callLdjmpcL5c1:movcolor,1001bcallLdjmpcL5cL2:incsecondcallCmmovcolor,1001bcallMiaojmpcL5cL3:incminutecallCmimovcolor,1001bcallMnum软件学院2006级汇编语言程序设计实习设计报告9jmpcL5cL4:inchourcallChomovcolor,1001bcallHnumcL5:cmpjcount,182jbcL6movjcount,0subcount,2jmpcL7cL6:incjcountcL7:popdspopbxpopaxIRETCtimeENDP3)判断模块:通过普通判断语句一条条判断。jp1:;测试闹钟时间movax,hacmphour,axjnelastmovax,amcmpminute,axjnelastcmpsecond,5jalastmovcx,1000movbx,6000callSound软件学院2006级汇编语言程序设计实习设计报告10last:;测试整点报时cmpminute,0jnexincmpsecond,1jaxinmovcx,100movbx,3000callSoundxin:;检查键盘按键movah,1int16hjzjp1movah,8int21hcmpal,'q'jeqcmpal,'s'jejp2cmpal,'c'jejp3movah,10hint16hjmpjp1jp2:callSettimejmpjp1jp3:callSetalarmjmpjp1q:4)设置时间:通过判断小时分钟的每个数字然后调用相应的七段码数字来在屏幕上显示。软件学院2006级汇编语言程序设计实习设计报告11SettimeproccallCommoncmptemp,1jexiecallClearmovdh,5movdl,50callzuomovbp,offsetbuf6callMsgmovcolor,0callMnumcallHnumpushdxmoval,10mulh1movdx,0movdl,h2addax,dxmovhour,axmoval,10mulm1movdx,0movdl,m2addax,dxmovminute,axpopdxmovcolor,1001bcallMnumcallHnumxie:ret软件学院2006级汇编语言程序设计实习设计报告12SettimeENDPmovdl,40callZuomovah,1int21hcmpal,48jberrorcmpal,50jaerrorsubal,48movh1,almovdh,2movdl,41callZuomovah,1int21hcmpal,48jberrorcmph1,2jbjiuxiacmpal,51jaerrorjiuxia:cmpal,57jaerrorsubal,48movh2,almovdh,3movdl,15callzuomovbp,offsetbuf4callMsg软件学院2006级汇编语言程序设计实习设计报告13movdh,3movdl,42callZuomovah,1int21hcmpal,48jberrorcmpal,53jaerrorsubal,48movm1,aljmpnexterror:jmperror1next:movdh,3movdl,43callZuomovah,1int21hcmpal,48jberrorcmpal,57jaerrorsubal,48movm2,almovtemp,0jmpCom1error1:callClearmovtemp,1movdh,5movdl,50callzuo软件学院2006级汇编语言程序设计实习设计报告14movbp,offsetbuf5callMsgCom1:retCommonENDP5)停止计时并结束:通过还原1ch使得不计数,然后小时分钟秒钟都不变化
本文标题:82汇编语言程序设计实习报告
链接地址:https://www.777doc.com/doc-3371857 .html