汇编设计报告打字计时练习程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言课程设计报告

( 2012 -- 2013 年度第 1 学期)

课题名称:

打字计时练习程序

目录

1 设计目的 (1)

2 概要设计 (1)

2.1系统总体分析 (1)

2.2主模块框图 (2)

3 详细设计 (2)

3.1主模块及子模块说明 (2)

3.2各模块详细设计 (3)

3.2.1主界面模块 (3)

3.2.2中断处理模块 (3)

3.2.3 打字计时模块 (5)

4 程序调试 (8)

4.1运行界面分析 (8)

4.2调试过程及分析 (10)

5 心得体会 (10)

5.1设计体会 (10)

5.2系统改进 (11)

参考文献 (12)

附录 (13)

附录1源程序清单 (13)

附录1.1 打字计时练习模块源程序 (13)

打字计时练习程序

1 设计目的

这次课程的任务是写一个在键盘上练习打字并能统计时间的程序,运行可执行程序后,按回车键出现主界面,进入英文打字练习并计时,通过课程设计,主要达到以下目的:

1.增进对汇编语言的认识,加强运用汇编语言编程的能力;

2.掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种调用功能,并由此实现对硬件的控制等;

3.了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下坚实的基础;

4.通过课程设计可以使我们更加了解书上的知识,了解书上的语句并能用到自己的程序设计中;

5.掌握屏幕输出显示的设计方法。

2 概要设计

2.1 系统总体分析

在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间。当一个句子输入完后(回车键作为结束符),屏幕上以min:sec:msec的格式显示出键入字符的时间。在每次打字之前,屏幕上先显示一个例句,然后打字员按照例句,将句中字符通过键盘输入。这个过程共进行五次,当键入一个Enter键时,退出打字计时练习程序。

在键盘上联系的打字例句及其地址表、计时单位等预放在DATA数据段中。自编的中断程序Kbint检测按键时产生的中断,并把按键扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时做了简化,即只解释了可显示字符(如英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只做字符码0来处理。在主程序部分保存原有09类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。当键盘中段处理后,主程序安排指令读取缓存区中的字符并显示在屏幕上。在主程序的末尾,利用DOS功能恢复原09类型的中断向量,然后返回DOS。在显

示键入的字符时,还应判断字符是否为回车符(0DH)。如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示打字时间,然后顺序显示一个例句。如果所存放的例句都已显示完毕,则再次从第一个例句开始显示,直至键入某个功能(如ESC键等)退出程序,结束打字练习。打字时间统计利用自编的定时器中断处理程序Clint来完成。每输入一个例句,计时一次。在此中断例行程序中,定时器中断的次数记录在计数单位count中,当count的计数值为18时,sec计数单位加1,当sec计数值打到60时,min计数单位加1.因为输入完一个句子无论如何也不会达到小时级,所以hours计数值的调整判断,实际上只起到退出定时器的作用。

加入一个显示菜单程序,使得原来的程序更具有观赏性;显示时间的子程序disptime分别将各计时单位的二进制数转换为十进制,并以min:sec:msec的形式出来。其中msec是由count中的计数值转换成的。

Count*1s/18.2=count*55ms

此式中,18.2是计算机系统中产生的一个时间中断,每秒18.2次。

2.2 主模块框图

程序的核心模块是打字计时,通过显示的例句进行打字练习,最后显示出运行时间,主体流程图如下:

a.建立汇编原程序—通过———→b。编译为目标文件—↓——→d.连接为可执行文件↑↓

∣ c.不通过,重新修改(语句错误)↓

∣———————————————————↓

↑f.不正确,用调式工具调式,重新修改(逻辑错误)↓

﹂———————————————————————e.运行

正确g.完成

3 详细设计

3.1 主模块及子模块说明

主模块:运行可执行程序显示打字主界面

缓冲区:BUFFER, BUFPT1 ,BUFPT2

调用中断8259,键盘中断,时钟中断,设置打字计时文件输入所显示的例句、显示所用时间、回到主界面程序顺序。

3.2各模块详细设计

3.2.1主界面模块

主界面模块:采用宏调用的方式将界面清屏并显示主界面和字母组成的乱序行界面。

程序运行后,我们首先要进行选择要继续进行即进入打字练习程序还是终止练习退出程序。所以需要设置一个程序判断键盘键入的字符,规定E键和ENTER 键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入E后,退出程序;当键盘输入为ENTER时进入打字练习程序。

程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中,则AL中即为由键盘键入的字符。在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序开头部分的宏定义已经令CR 为0DH),如果是的话,程序将跳转到程序speed3,speed3是定义的又一个程序,该程序即为打字练习程序的核心部分。如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMP AL,45H来实现,其中45H是E键的ACSII码的十六进制的表示。如果是E键的话,程序将跳转到exit子程序,再通过exit程序来判断是否要退出打字练习程序。如果键盘键入的既不是ENTER也不是E 键的话,程序将继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。

3.2.2中断处理模块

利用DOS提供的程序控制硬件。优点是兼容性好,使用方便。DOS是IBM PC 系列微机的操作系统负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。DOS的功能调用不依赖于硬件系统。所有的DOS系统功能调用都是利用软件中断指令INT 21H来实现的。也就是说在程序中需要调用DOS功能的时候,只要使用一条INT 21H指令即可。INT 21H是一个具有90多个子功能的中断服务程序,这些子功能大致可以分为4类:设备管理、目录管理、文件管理和其他。为了方便用户使用这些子功能,INT 21H对每一个子功能都进行了编号—称为功能号。这样用户就能通过指定功能号来调用INT 21H的不同子功能.

DOS系统功能调用的方法如下:

1.AH->功能号。

2.在其他的寄存器中放入该功能所要求的入口参数

3.在执行INT 21H指令。

4.分析出口参数

相关文档
最新文档