汇编语言打字练习程序实验报告.doc

上传人:精*** 文档编号:871223 上传时间:2024-02-28 格式:DOC 页数:16 大小:308.94KB
下载 相关 举报
汇编语言打字练习程序实验报告.doc_第1页
第1页 / 共16页
汇编语言打字练习程序实验报告.doc_第2页
第2页 / 共16页
汇编语言打字练习程序实验报告.doc_第3页
第3页 / 共16页
汇编语言打字练习程序实验报告.doc_第4页
第4页 / 共16页
汇编语言打字练习程序实验报告.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、 摘要在IBM-PC系统中,驻留的ROM中有8KB的BIOS。它实现对系统中种种常用设备的输入输出操作的管理。其中的16H中断调用即为键盘输入输出中断调用,实现从键盘输入字符到AL寄存器、读键盘缓冲区字符到AL寄存器、读取特殊功能键的状态等功能。本程序是一个在键盘上打字练习的程序,运行可执行程序后,出现主界面,按回车键出现由78个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC健返回主界面;按空格键暂停;按E退出。关键词:中断调用,打字练习,回车键进入,空格键暂停 目录1设计目的12概要设计22.1 系统总体分析22.2 主模块

2、框图及说明23详细设计43.1 主模块及子模块说明43.2 各模块详细设计44程序调试104.1 运行界面分析104.2 调试过程及分析125心得体会135.1 设计体会135.2 系统改进13参考文献14I安徽理工大学课程设计(论文)1设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。由此可见汇编语言的重要性,学好这门课程,同样可为相关的专业打下基础。汇编语言程序设计课程设计是在教学实践基础上进行的一次试验,也是对该课程所学理论知识的深化和提

3、高。因此,要求学生能综合应用所学知识,设计和制造出具有具有一定功能的应用系统,并且在实验的基本技能方面进行了一次全面的训练。此外,它还可以培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够较全面的巩固和应用课堂上所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。再者,它同样可以提高学生运用理论去处理实际问题的能力和独立思考的能力,使学生的编程思想和编程能力有所提高,最终达到熟练地掌握编写汇编源程序的基本方法的目的。2概要设计2.1 系统总体分析此程序的主要目的是在DOS界面下实现打字练习的功能。具体实现中从总体来看包括以下几个主要模块:界面显示模块、字母输入正

4、确与否的相关处理模块,按下空格键后如何实现暂停和继续的功能模块,按下E实现退出功能的模块以及按下ESC键后返回主界面模块等。2.2 主模块框图及说明打字练习程序的主要功能模块图如图2-1:打字练习界面显示模块字母输入正确与否的相关处理模块按下空格键的相关处理模块实现退出和返回功能模块图2-1 程序主要功能模块图程序执行流程图如图2-2:执行输入字母正确?继续下落输入ESCNY 主界面字母消失笑脸置空Y空格?暂停NYN按E退出空格?YN图2-2 程序流程图3详细设计3.1 主模块及子模块说明界面显示模块:主要包括两部分,运行可执行程序显示主界面以及按下Enter键显示78个字母组成的乱序行。字母

5、输入正确与否的相关处理模块:当字母输入正确后字母在当前位置消失并在原字母位置产生新的字母;当字母输入错误时,界面上字母下方的笑脸置为空格。按下空格键的相关处理模块:字母下落时按下空格键,则字母在当前位置暂停,直到你再次键入空格键后字母才会继续下落,否则保持暂停状态并一直持续下去。实现退出和返回功能模块:进入主界面后,按下E则程序退出;进入字母下落界面按下ESC键程序则返回主界面。3.2 各模块详细设计界面显示模块:采用宏调用的方式将界面清屏并显示主界面和字母组成的乱序行界面,如图3-1:界面显示模块界面清屏并显示主界面界面显示并显示78个字母组成的乱序行图3-1 界面显示模块字母输入正确与否的

6、相关处理模块:当输入字母的ASCII码与当前下落字母的ASCII码相同时,字母在当前位置消失并在原字母位置产生新的字母;当字母输入错误时,界面上字母下方的笑脸置为空格。按下空格键的相关处理模块:字母下落时按下空格键,则字母在当前位置暂停,直到程序判断出你再次键入的键为空格键时字母才会继续下落,否则保持暂停状态并一直等待键盘输入。实现退出和返回功能模块:进入主界面后,按下E则程序退出;进入字母下落界面按下ESC键程序则返回主界面。程序主要功能代码及其说明如下:clear_screen macro op1,op2,op3,op4 ;清屏宏定义 mov ah,06h mov al,00h mov b

7、h,07h mov ch,op1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h ;设置光标位置 mov bh,00h mov dh,00h mov dl,00h int 10hendmmenu macro op1,op2,op3 ;菜单显示宏定义 mov ah,02h mov bh,00h mov dh,op1 mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21hendmclear_screen 00d,00d,24d,79d ;清屏 menu 05d,15d,WP ;菜单信息的宏调用 men

8、u 07h,15d,date menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 put: mov ah,02h ;设置光标位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;从键盘输入任意字符 int 21h cmp al,0dh ;如果键入为Enter,则开始 je speed3 cmp al,45h ;如果键入为E,则退出 je exit exit: mov ah,4ch int 21h speed3:

9、mov ax,speed mov speed,ax jmp begin nextletter: mov ah,02h ;显示字母 mov dl,si int 21h inc si inc cx cmp cx,78d je nextcycle jmp nextletternextcycle: lea di,letters ;判断字母位置是否在屏幕范围内 lea si,position_flag add present_position,30d ;控制下一个字母的位置 cmp present_position,78 ja from_front ;若不在则跳转out_cycle: ; 延迟 push

10、 cx mov cx,00hin_cycle: add cx,01h cmp cx,1000 ;字符在每一位置所停留时间,延迟 jne in_cycle push dx ;保存之前字符位置 mov ah,06h ;从键盘输入字符 mov dl,0ffh int 21h pop dx jz pass ;字符在左上则转移 cmp al,1bh ;如果键入ESC,则返回主菜单 je to_start1 cmp al, ;如果键入SPACE,则游戏暂停 je pause cmp al,di ;输入字母正确!则字母消失 je disappearpass: pop cx inc cx cmp cx,spe

11、ed ;字符下落速度,也起延迟作用 je print jmp out_cyclepause: push dx ;暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al, jne pause jmp pass ;若输入空格则继续to_start1: ;返回主菜单 jmp startprint: mov ah,0ah ;在当前光标位置写空格 mov al, mov bh,00h mov cx,01h int 10h inc dh mov ah,02h ;改变光标位置 mov bh,00h int 10h mov ah,0ah ;在当前光标位置写字母 mo

12、v al,di mov bh,00h mov cx,01h int 10h pop cx inc cx cmp cx,21d je print_next_letter jmp nextrow ;下一行disappear: ;击中字母后输出空格 pop cx pop cx mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h jmp hit hit: mov ah,02h mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出现下一个新字母的算法 add al,7 cmp

13、al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycle4程序调试4.1 运行界面分析运行可执行程序后出现主界面,主界面如图4-1:图4-1 主界面键入Enter键后出现78个字母组成的乱序行并且字母下落,如图4-2: 图4-2 78个字母组成的乱序行这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失。如果输入不正确,界面中的笑脸变为空格,如图4-3:图4-3 输入不正确后,笑脸变为空格按空格键暂停,如图4-4: 图

14、4-4 按空格键字母下落暂停再按下空格键时字母继续下落,如图4-5:图4-5 再次按下空格键时字母下落按下ESC键则返回主界面。4.2 调试过程及分析用汇编编译软件MASM对编写的源程序(wordgame.asm)进行编译,连接,运行,并在dos界面下运行debug命令debug wordgame.exe,然后执行可执行程序进入主界面。起初连接后出现了下面的问题:后来才注意到将文件保存的路径中应该不能含中文,如图4-6:图4-6 文件保存路径不合理图在接下来的运行过程中,基本上没遇到什么特别大的问题。5心得体会5.1 设计体会本次的课程设计是我接触的第一门用低级语言实现的课程设计,相对于高级语

15、言来说,汇编语言的确有许多的难度,相似的编程思想用汇编语言实现也确实比用高级语言实现要复杂的多。但不管怎样,此次的课程设计我还是顺利的完成了,并且学到了许多东西,尽管花了许多的精力和时间,我感觉一切都是值得的。此次的课程设计,使我更深刻的感受到了编写程序的一般流程:确定程序的主要框架,然后画出流程图,继而对具体的模块逐一的实现。此思想尤其对汇编语言比较实用,这是因为汇编语言编程相对其他语言编程比较复杂,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。此次的课程设计,也激发了我对编程中遇到的问题的思考,有效地提高了我对汇编的认识和理解,尤其是一些常见指令的应用,比如宏

16、指令的应用、与地址转移有关的指令以及常见的中断调用的使用等等。但我最大的收获就是我掌握了用汇编语言编写程序解决实际问题应该具备的条件:要想写好汇编语言的程序,必须认真的对待代码的每个细节,还必须熟练地掌握debug命令,这对程序的调试是非常重要的。但非常诚恳的说,这个课程设计的完成并不是我个人的功劳。刚开始我参考了网上的代码并尝试着阅读,但由于代码太长,所以有一些细节不是太懂,最后通过查阅相关的资料、向同学的咨询和老师的指导,基本上能把程序看的比较透彻,在此非常感谢你们的帮助。接下来就是对代码进行了相应的修改,其中修改的部分主要有控制字母下落速度、将代码简化等。但由于时间有限,其他部分改的不多

17、,但每个模块的具体实现原理我都了解的比较透彻。5.2 系统改进此程序虽然基本功能都能实现,那么它是不是很完美呢?绝对不是。下面谈一下系统中尚存在的一些问题及其解决方案:首先源程序的代码量相当大,有些代码还可以进一步的优化;其次程序的界面设计还不是很漂亮;再者还存在一个问题就是,当78个乱序行的字母都落下时,笑脸消失完了,然而字母依然在下落,实际上应该让打字练习结束比较好些,针对这个问题可以进一步的进行完善,比如退出程序或返回主界面均可以;此外程序的功能尚且比较简单,还可以添加一些比较复杂的环节,比如打字结束后统计你所取得的成绩,并对打字情况评个级别等等,总之还有许多可以改善的空间。针对以上的问

18、题,今后的时间里我会不断地完善,以求更好的应用于实际生活中。参考文献1李敬兆等编.汇编语言程序设计.合肥:中国科学技术大学出版社,2008.92李敬兆等编.汇编语言程序设计实验教程及习题解答.合肥:中国科学技术大学出版社,2008.93王爽等编.汇编语言.北京:清华大学出版社,2003.54曹加恒等编.新一代汇编语言课程设计.北京:高等教育出版社,2003.65杨路明等编.汇编语言程序设计.长沙:中南大学出版社,2005.86詹仕华等编.汇编语言程序设计.北京:中国电力出版社,2008.27詹仕华等编.汇编语言程序设计习题解答及课程设计、设计辅导.北京:中国电力出版社,2008.28宋彩莉等编.汇编语言程序设计学习指导.西安:西安交通大学出版社,2008.2忽略此处. -14-

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922