汇编语言打字练习程序课程设计报告18页_第1页
汇编语言打字练习程序课程设计报告18页_第2页
汇编语言打字练习程序课程设计报告18页_第3页
汇编语言打字练习程序课程设计报告18页_第4页
汇编语言打字练习程序课程设计报告18页_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、课课程程设设计计说说明明书书题目: 打字练习 院 系: 专业班级: 学 号: 学生姓名: 指导教师: 2010 年 12 月 31 日 安徽理工大学课程设计(论文)任务书安徽理工大学课程设计(论文)任务书计算机科学与工程学院计算机科学与工程学院 硬件硬件 教研室教研室学学 号号 学生姓名学生姓名 专业(班级)专业(班级) 设设计计题题目目题目一:判断闰年题目二: 简单计算器题目三: 代码转换程序题目四:字符图形程序题目五: 学生成绩管理题目六: 打字练习 设设计计技技术术参参数数1 熟悉汇编指令、宏汇编语言的编程方法 2 BIOS 中断调用、系统功能中断调用方法 3 磁盘文件、及文件内容操作设

2、设计计要要求求写一个程序,运行可执行程序后,出现主界面,按回车键出现由 26 个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按 ESC 键返回主界面;按空格键暂停;按E退出。 工工作作量量1. 完成所选题目的软件设计;2.课程设计说明书 1000 字(不包括程序源代码)左右。工工作作计计划划第 1 次熟悉软件环境。第 2 次绘制程序流程图。第 3 次用编写程序。第 4 次用调试运行程序。第 5 次编写课程设计说明书参参考考资资料料1温冬蝉,沈美明.IBM PC 汇编语言程序设计.第 2 版.北京:清华大学出版社,2002.32 王爽

3、.汇编语言.北京:清华大学出版社,2003.93 李敬兆.8086/8088 和基于 ARM 核汇编语言程序设计.第二版.合肥:中国科学技术大学出版社,2008.9指导教师签字指导教师签字教研室主任签字教研室主任签字 20102010 年年 1212 月月 1717 日日安徽理工大学课程设计(论文)成绩评定表安徽理工大学课程设计(论文)成绩评定表指导教师评语:成绩: 指导教师: 年 月 日摘要 汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。打字练习是计算机常用的小应用程

4、序,可以给想练习打字的人提供一个好的练习空间。本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。关键词:关键词:功能模块,核心代码,随机字符,模块调用,功能分析I目录 1 设计目的.12 概要设计.22.1 系统总体分析.22.2 主模块框图及说明.23 详细设计.43.1 主模块及子模块说明.43.2 各模块详细设计.43.2.1 主界面模块.43.2.2 随机字母产生模块.63.2.3 字母落下模块.73.2.4 暂停模块.93.2.5 返回主界面模块.94程序调试.104.1 运行界面分析.104.2 调试过程及分析.115 心得体会.125.1 设计体会.

5、125.2 系统改进.12参考文献.13安徽理工大学课程设计(论文)-1-1 设计目的设计目的这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26 个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按 ESC 键返回主界面;按空格键暂停;按E退出。通过课程设计,主要达到以下目的:1. 增进对汇编语言的认识,加强用汇编语言编程的能力;2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好

6、基础;4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;5. 掌握屏幕输出显示的设计方法。安徽理工大学课程设计(论文)-2-2 概要设计概要设计2.1 系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:1.由 26 字母乱序组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。4.按下“Ese”键则程序返回到主界面。5.按空格键游戏暂停。6.在主界面按“E”则程序退出。打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以上及部分,最主要的部分就是第二三两个部分,这是打

7、字练习的重点,需要详细设计其所需要的功能。2.2 主模块框图及说明程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令 ENTER 进入打字界面开始打字,E 退出程序,空格在打字练习时执行暂停的功能,ESC 是从打字界面返回到主界面。核心模块的流程大体如下面的流程图图 2-1:安徽理工大学课程设计(论文)-3-E 其他键 ENTER ENTER 是否是是否 是 是 图 2-1 程序设计流程图结束随即字母落下当前字母消失暂停判断输入按键键入字符是否与下落一致从键盘输入字符是否是空格开始输入空格是否是ESC安徽理工大学课程设计(论文

8、)-4-3 详细设计详细设计3.1 主模块及子模块说明 主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断) 、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)3.2 各模块详细设计 3.2.1 主界面模块当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序还是终止练习退出程序。所以,在这里我们需要设置一个程序,该程序要判断键盘键入的字符,我们不妨规定 ESC 键和

9、ENTER 键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入 ESC 后,退出程序;当键盘输入为 ENTER 时进入打字练习程序。单元程序如下:menu db *,0dh,0ah db Welcome to word type exercise,0dh,0ah db press Enter key to continue.,0dh,0ah db when a letter is dropping,please hit it!,0dh,0ah db press space key to pause!,0dh,0ah db press ESC key to return ma

10、in interface!,0dh,0ah db press letter E to exit!,0dh,0ah db *$以上设置主界面的显示方式。clear_screen 00d,00d,24d,79d Init_write 00d,00d,0ah,dl,80d,nextsign1 Init_write 24d,00d,0ah,dl,80d,nextsign2 Init_write 00d,00d,0ah,dh,25d,nextsign3 Init_write 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜单信息的宏调用 menu 07h,1

11、5d,no menu 09d,15d,meg安徽理工大学课程设计(论文)-5- 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 je speed3 cmp al,45h je exit以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单显示后的光标位置,以方便使用者的操作。 in

12、_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 disappearto_start1: ;返回主菜单安徽理工大学课程设计(论文)-6- jmp start上述程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中

13、,则AL中即为由键盘键入的字符。在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序开头部分的宏定义已经令CR为0DH) ,如果是的话,程序将跳转到程序disappear,disappear是定义的又一个程序,该程序即为打字练习程序的核心部分。如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMPAL,1BH来实现,其中1BH是E键的ACSII码的十六进制的表示。如果是E键的话,程序将跳转到TZD_1子程序,再通过TZD_1程序来判断是否要退出打字练习程序。如果键盘键入的既不是ENTER也不是E键的话,程序将

14、继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。3.2.2 随机字母产生模块当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列的程序。程序段如下:letters db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoexrphysfqtvdcgljukdaletters_bak db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoe

15、xrphysfqtvdcgljukdaletter_counter db 0begin: clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d Init_write 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,letters上述的程序段中,begin 实现了输出的字符的随机显示,当然这个随机是我们要事先通过自己随机定义一段由 26 个字母随机组成的序列,然后由 beg

16、in 来调用,从而间安徽理工大学课程设计(论文)-7-接来实现随即字母的产生。Begin 段利用了 INT10,其功能是设置屏幕显示方式,灵活的利用 INT10 丰富的指令功能,可以巧妙的设计出想要的程序来。INT10 中断规定,DH和 DL 共同控制着字符输出的位置,其中 DH 为字符输出的行标,DL 为字符输出的列标,通过改变 DH 和 DL 的值,可以改变字符在命令符输出屏幕上的位置;如果 AH=09H 时,则 AL=字符,BL 则是控制着输出的字符属性或颜色;计数器 CX 中存放的则是重复输出字符的个数。本程序中令 CX 中存放 78,也就是说 loop 循环程序将循环 78 次,程序

17、的输出为 78 个字符,当 loop 循环程序运行结束之后,程序将执行下一条指令,调用DAZIRUKOU 子程序。使得程序继续运行,让用户按照程序自动产生的字符串来进行打字练习。3.2.3 字母落下模块程序自动进入打字功能,自动落下字符,等待键盘输入字符以此来判断输入者想什么,如果键盘输入与预期的相符合则程序自动执行相关功能。如果输入字符与落下字符相同,程序执行当前字母消失和产生下一落下字母的功能,字母落下功能的实现是通过逐行替换的方法实现的,字母在当前行出现会有一个延迟时间,当过了这个延迟时间时,程序执行当前位置清空操作,并在下一行显示上一行的字母。代码如下:hit: mov ah,02h

18、mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出现下一个新字母的数法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycleconvey_letter: sub al,7ah安徽理工大学课程设计(论文)-8- add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov

19、 di,al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10hdisappear: ;击中字母后输出空格 pop cx pop cx mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h jmp hit 3.2.4 暂停模块如果输入空格,则程序执行暂停功能,暂停功能的实现是通过以下方法实现

20、的,当从键盘输入空格时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时,程序收到暂停结束指令,跳转回到主程序模块,继续执行主模块的功能。代码如下:安徽理工大学课程设计(论文)-9-pause: push dx ;暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al, jne pause jmp passpass: pop cx inc cx cmp cx,speed je print jmp out_cycle3.2.5 返回主界面模块如果键盘输入 ESC,程序结束当前运行,返回到程

21、序的主界面,然后等待主界面当中键盘的输入,这又跳回到主界面模块。相关代码包含在主界面功能代码段当中。 安徽理工大学课程设计(论文)-10-4程序调试程序调试4.1 运行界面分析程序运行后的主界面如图 4-1,主界面第一行是欢迎语,第二行是作者,然后往下是操作说明,为使用者说明该程序的使用方法。背景设置为蓝色,字体为白色。图 4-1 程序主界面 当用户按下 ENTER 键时,程序自动跳入到图 4-2 的界面,字母随机落下,用户便可以开始打字练习了。练习只要按照说明来做就可以了。安徽理工大学课程设计(论文)-11-图 4-2 打字界面4.2 调试过程及分析程序在运行之后提示语不在一行,检查程序发现

22、控制提示语位置的 DL,DH 有问题,将一开始的 sub dl,19 改为 add dl,02H,此时再次运行之后可以看到提示语在适当的位置,满足要求。 一开始写程序时,代码写得特别多,当程序主体完成后,便对程序做了优化,主要是对代码量的缩减,主要缩减了一段为随机字母分配空间的代码,一开始在定义的时候别给内存空间赋值为 0,而后又在功能段的时候对该内存空间赋 0 值,这样一来便重复了,所以后来就把功能段的那段代码去掉了,代码量一下少了许多。安徽理工大学课程设计(论文)-12-5 心得体会心得体会5.1 设计体会通过这次课程设计,我受益匪浅。感觉到了学习汇编语言的重要性以及趣味性,我发现了对于汇编语言的了解还很浅显,感到很惭愧。在此次编程过程中,出现了很多平时没有注意到的问题,

温馨提示

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

评论

0/150

提交评论