汇编语言程序设计》课程设计定时计数技术应用程序设计.doc
《汇编语言程序设计》课程设计定时计数技术应用程序设计.doc》由会员分享,可在线阅读,更多相关《汇编语言程序设计》课程设计定时计数技术应用程序设计.doc(25页珍藏版)》请在沃文网上搜索。
1、汇编语言程序设计课程设计报告专 业: 计算机科学与技术 班 级: 031 姓 名: 杨时雄 学 号: 2003944112 指导老师: 雷晓平、杨跃武、任朝晖、李娅 2006年 3 月 2 日佛山科学技术学院汇编语言程序设计课程设计报告班级:计算机1班 姓名:杨时雄 学号:2003944112 完成日期:2006-3-3课程名称:汇编语言课程设计题目:1. 定时/计数技术应用程序设计2. 键盘程序设计3. 屏幕窗口控制程序4. 多模块程序设计课程设计评语:成绩:设计指导老师:雷晓平、杨跃武、任朝辉、李娅完成时间: 2006 年 3 月 3 日一、 课程设计的目的1、 巩固和加强汇编语言程序设计
2、课程的理论知识2、 掌握汇编语言的程序设计方法,并了解综合问题的程序设计、研制、调试过程。3、 基本解决较大规模程序的设计和调试的方法。4、 培养独立分析问题和解决问题的能力以及创新能力和创新思维。5、 培养书写课程设计报告的能力。二、 课程设计的要求1、 程序设计。根据设计任务要求,首先选择设计方案、写错算法和程序框图,然后编程设计。2、 调试。通过程序调试,实现任务所要求的全部功能。3、 在屏幕上或其它设备上演示所完成的设计要求并验收。4、 写出完整的设计报告,其中包括对调试中出现的异常现象的分析和讨论。三、 课程设计课题题目一:定时/计数技术应用程序设计(一)总体方案的分析和设计1根据题
3、目的要求可知,数字钟的设计包括两个方面,一是计时,一是显示。本题的计时可利用INT 1CH调用次数来实现。由教材可知,INT ICH是每秒钟被系统定时器(中断类型8)调用18.2次,因此,在程序的数据段中设立1个计数单元COUNT,令INT 1CH用户中断服务程序每次对它加1,计若干次,直到1秒、再累加下去,直到计满1小时,然后清零,又重新开始。2时间的显示可以利用DOS功能调用INT 21H的9号功能,将时、分、秒单元的内容送到屏幕显示。3根据题目的要求,因为是利用系统的定时器资源,并且系统BIOS已对定时器进行了初始化,所以不再写定时器的初始化程序。程序分主程序和中断服务程序两部分设计。(
4、二)程序设计流程图见附录一。(三)各模块功能分析、使用相关技术说明该程序主要包括4个模块:1主模块:该模块主要是用来保持原来的中断,设置新的中断,最后再返回原来的断。2中断子程序:该模块实现对时间的显示,设定系统定时器调用18次后增加一秒,然后利用DOS功能调用INT 21H的9号功能,将时、分、秒单元的内容送到屏幕显示。3处理数据子程序:该模块主要进位对时间各位的影响,进而进行相应的处理,最后将数字钟各位转成ASCII码用于输出。4进位子程序:该模块主要是用于判断是否有进位产生以及相应的处理。(四)设计的创新之处、程序设计技巧的总结及分析首先,该程序设计技巧主要是懂得利用INC 1CH是每秒
5、钟利用系统计时器调用18.2次这一点,并且系统BIOS已对定时器进行了初始化,省去了写系统计时器初始化程序的功夫!其次,对进位的处理也比较好,将所有情况都考虑进去了,程序比较完善。(五)设计和调试中遇到的问题及解决的方法在该程序的设计及调试过程中,首先要清楚系统计时器是怎样被调用的,如果无法理解原理是不能把程序搞出来的,经过不停的查阅资料,最终我明白到系统BIOS已对定时器进行了初始化,从而知道如何判断是否1秒,并判断是否执行中断子程序。其次是要弄清楚怎么处理进位,以及数字钟各位的怎么相互影响。这时我就需要不断考虑各个情况以及相应对策,通过不断调试终于搞好了。(六)整个设计的结果分析及其他要说
6、明的问题该程序编译通过后执行,基本能够实现实现题目要求的功能,但当你按第二次键时,不管你按什么键都会推出数字钟。题目二:键盘程序设计(一)总体方案的分析和设计根据题目的要求,将输入的键AH(扫描码)和AL(ASCII码)中的二进制转成十六进制后分别显示出来。1. 输入字符并将其暂时储存;2. 将输入字符的二进制码转成十六进制;3. 显示所转换后的字符。(二)程序设计流程图见附录一。(三)各模块功能分析、使用相关技术说明该程序主要包括2个模块:1 主模块:该模块主要判断输入的键是否为退出键,通过调用子程序处理字符,最终将转换后的字符输出并显示;2 子模块:该模块实现将输入字符的二进制码转成十六进
7、制码;(四)设计的创新之处、程序设计技巧的总结及分析1该程序在执行时,首先判断输入的是否为ESC,避免运行后按退出而出现的BUG。2利用循环左移的方法来将输入的二进制数转成十六进制数。(五)设计和调试中遇到的问题及解决的方法在该程序的设计及调试过程中,首先是在程序刚运行后按下ESC无法退出并出现0000,通过对程序源代码的仔细研究和讨论,最终解决了问题;其次是在对INT21的调用方面出现偏差,“02显示输出”和“09显示字符串”没有理解透,经过多次调试后才将问题弄明白。(六)整个设计的结果分析及其他要说明的问题该程序编译通过后执行,能够实现实现题目要求的功能,达到实验的目的和要求。然而,程序还
8、是有不尽如人意的地方。程序只能显示常用字符的7位ASCII码(十六进制表示),并且在按“F11”、“F12”时无任何反应,连扫描码都无法显示出。题目三:屏幕窗口控制程序(一)总体方案的分析和设计根据题目的要求,主要利用BIOS功能调用int 10h。1.清屏及窗口生成部分,利用该中断类型的6号或7号功能;2.光标的设置部分,利用该中断类型的2号功能;3.按键判断部分,则可利用BIOS功能调用int 16h的0号功能,对AH中的扫描码进行判断后进入相关按键处理的子程序。(二)程序设计流程图见附录一。(三)各模块功能分析、使用相关技术说明该程序主要包括8个模块:1.主模块:该模块主要负责对按键的检
9、测及对各子模块的调用,主要利用比较与跳转指令实现该功能;2.清屏:该模块实现对屏幕的清除,主要利用BIOS功能调用int 10h的6号功能;3.窗口初始化:该模块实现窗口的生成及光标定位于(0,0)处,主要利用BIOS功能调用int 10h的2号及7号功能;4.向上光标控制:完成光标向上移动的功能,通过对DH中存储数值的修改进而调用int 10h的2号功能实现;5.其他向左、右、下各光标控制与向上光标控制类似;6.end按键:完成窗口的重置,通过修改保存窗口位置的变量然后调用int 10h的7号功能实现。(四)设计的创新之处、程序设计技巧的总结及分析该程序主要有两处作了特殊处理:其一,重置光标
10、位置时对光标的当前位置作了判断,若光标已到达最左、右、上、下,则不重置其位置;其二,当按下end键之后,对当前光标位置作为窗口的左上角或右下角通过变量count作了特殊处理,count为2时当前光标位置作为窗口的左上角,否则作为右下角。(五)设计和调试中遇到的问题及解决的方法在该程序的设计及调试过程中,首先遇到的问题是当按下光标控制键时,光标没有正确移动,通过的源程序仔细检查修改后,光标正确移动了;其次,程序退出时窗口并没关闭,通过在程序退出前调用清屏子程序最后解决了该问题。(六)整个设计的结果分析及其他要说明的问题该程序编译通过后执行,能够实现实现题目要求的功能,但存在一个bug,就是对窗口
11、的设置中,若出现左上角高度低于右下角高度的情况,程序将出错。由于时间关系就没有就没有去修改代码以对该情况进行特殊处理。题目四:多模块程序设计(一)总体方案的分析和设计 根据题目的要求可知程序要求输入和显示字符串:1、 输入和显示字符串,用到DOS(int 21h)的功能09跟功能10。2、 字母大小写转换要用到条件转移指令。3、 由于要模块,要用到public跟extrn指令。4、 将程序分4个模块,主模块(main),输入模块(input),输出模块(output),处理模块(deal)。将各个模块分别用masm指令汇编后,用link指令把各个模块连起来。(二)程序设计流程图见附录一。(三)
12、各模块功能分析、使用相关技术说明模块一:主模块(main)通过主模块调用各个子模块,主程序与模块之间通过变量传递数据。模块二:输入模块(input)通过调用DOS,把字符串放到bufa中,主要参考课本中的例子。模块三:输出模块(output)把放在bufa中的字符串,通过处理变为大写字母后,再逐个放到bufb中,最后把bufb的内容通过DOS显示出来。模块四:处理模块(deal)通过逐个接收bufa内的字符,并判断后,把小写字母转换为大写字母,其他字符按原样输出。(四)设计的创新之处、程序设计技巧的总结及分析1. 该程序主要运用了模快连接技术,根据public跟extrn的使用方法,使主程序连
13、接其他模块.2. 运行主程序时,首先输入需要转换的字符,之后保存在一空间(bufa)内,在判断是否转换后,再将字符放到另一个空间(bufb)内,最后通过显示模块就把保存在(bufb)内的内容都显示出来.(五)设计和调试中遇到的问题及解决的方法由于运用分模块技术,所以难免会出现错误,在写程序的时候,出现漏写public,extrn之类,程序原意在输入esc键按回车后就退出程序的,但不知道为何不成功,最后改为输入q后就退出程序.在判断输入的字符是否为小写字母时,要用到转移命令,刚开始时无从入手,后来参考了一些例子就做出来了.(六)整个设计的结果分析及其他要说明的问题程序开始要求从键盘输入字符,按回
14、车键后换行显示转换后的字符,接着又重新开始接收从键盘输入的字符,直到在接收时直接输入回车时,就退出程序.四、源程序清单 见附录二。五、收获、体会及建议通过这次课程设计,我收获不少,对以前学习的知识有了进一步的了解,对MASM5的使用也更加熟悉;这四个程序的设计,其实还是有些难度的,以前毕竟只停留在学习基础知识的阶段,所以对于真正的编程也不是很了解,对于语言的使用还很生疏,在编写程序的过程中还是遇见不少难题,不过在老师和同学的帮助下,最后还是完成了。不过在经过老师的提问之后,我还是发现我对当中的很多地方还不是很熟悉,可能这四个程序其中有些地方还是要问一下别人的,所以造成有些细节我不是很懂。我以后
15、会花时间投入这些,争取对这门课有更深的了解。由于我们平时基本都是在听课学习,似乎有点忽略了对学习内容的运用,所以开设这样的程序设计课其实对我们非常有益,我希望以后能有多点这些课,这样我们可以把所学的东西运用到实际中,有助于我们加深理解,和为以后出去社会工作打下基础。附录一:题目一:接收一个键该键是否为 空 格 键 ?再接收一个键该键是否为 空 格 键 ?开中断显示5个退格键显示时间转换为真实的时间开始显示时间time处理数据显示时间 结束返回 主程序框图 显示时间子程序框图数据处理dealdata处理进位carry数字转字符处理进位carry返回处理进位carry2处理进位carry返回返回处
16、理进位carry 数字转字符时间加1秒下一位加1cf 加1bx=bx-1置0时间的每一位加30hcl=cf?dh=ch?|bx|=0? 数字转字符子程序框图处理数据子程序框图案 处理进位子程序框图题目二:BINIHEX返回初始化循环计数值BX循环左移一个单位把最右面的数位转换为ASCII显示一个字符加上? 是ASCIIAF?选还计数值 0?Y NYNMAIN开始二进制转十六进制输出BINIHEX结束输入一个键输出字符分别输出回车、换行、空格该键是Esc?NYBINIHEX子程序框图 主程序框图实验三:是否向上接收键盘按键YN是否向下Y是否向左N是否Esc键是否End键是否向右NYYYNNN返回
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课程设计 定时 计数 技术 应用