打字计时练习-汇编语言课程设计+源程序+流程图
1.设计目的及内容
汇编语言是一项实用性很强的技术,只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。通过运用MASM设计开发打字计时练习的程序,加深对汇编程序基本概念的了解,熟悉了运用MASM设计程序的方法,巩固学习成果。
通过本次课程设计加深了解了汇编语言的基本概念,语法,语义和数据类型的使用特点。熟练的掌握汇编语言的开发应用程序的一般步骤和方法及编程技巧,掌握调试程序的基本方法及上机操作方法,同时也提高实际动手能力及对计算机硬件的了解,掌握计算机软件与硬件之间的联系。更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。
2.开发环境
Windows XP/98/2000 操作系统,使用Microsoft 公司推出 MASM 汇编语言开发平台。MASM 包含TE.EXE编辑程序,MASM.EXE汇编程序和LINK.EXE连接程序。
首先应用TE.EXE编辑源程序,生成.ASM文件。再用MASM.EXE对源程序进行汇编生成.OBJ文件。最后用LINK.EXE对.OBJ文件进行连接生成.EXE可执行文件。
3.功能分析
在IBM-PC系统中,驻留的ROM中有8KB的BIOS。它实现对系统中种种常用设备的输入输出操作的管理。其中的16H中原文请找腾讯752018766辣;文-论'文.网http://www.751com.cn 能。本程序是一个在键盘上练习打字并能统计时间的程序,在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间。通过它练习英文打字练习,并能够统计时间。程序运行时,使用自编的中断向量处理程序。程序退出时,恢复中断向量。
3.1 设计思路
在键盘上练习的打字例句及其地址表、计时单元等预先放在DATA数据段中,自编的中断程序kbint检测按键时产生的中断,并把按键的扫描码转换为ASCII码存入缓存区buffer,这个工作和ROM09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,即只解释了可显示字符,如英文字母、数字及一些符号;其他特殊键,如组合键、双态键、功能键等都未作解释,只作为字符码0来处理。在主程序部分保存原09类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。当键盘中断处理后,主程序中安排指令读取缓冲区中的字符并显示在屏幕上。在主程序的末尾,利用DOS功能恢复原09类型的中断向量,然后返回DOS。在显示键入的字符时,还应判断字符是否为回车(0DH)。如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示出打字时间,然后顺序显示下一个例句。如果所存放的例句都已显示完,则又从第一个例句开始显示,直至键入某一功能键(如Esc键、Shift键等)退出程序,结束打字练习。打字时间统计利用自定时器中断处理程序clint来完成。每输完一例句,计时一次。在此中断例行程序中,定时器中断的次数记录在计数单元count中,当count计数值为18时,sec计数单元加1 ,当sec计数值达到60时,min计数单元加1 。因为输入完一个句子无论如何也不会达到小时级,所以对hours计数值的调整判断,实际上只起到退出定时器中断的作用。
显示时间的子程序disptime分别将各遍野单元的二进制数转换为十进制数,并以min:sec:msec的形式显示出来。其中msec是由count记数值转换成的:
count×1秒/18.2=count×55ms
3.2 程序流程图
4.源程序代码
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(0)
TOP LABEL WORD
STACK ENDS
DATA SEGMENT PARA PUBLIC 'DATA'
BUFFER DB 16H DUP(0) ;缓冲区大小
BUFPT1 DW 0 ;缓冲区1
BUFPT2 DW 0 ;缓冲区2
KBFLAG DB 0 ;参数,80H表示允许,00表示不允许
PROMPT DB ' *PLEASE PRACTISE TYPING*',0DH,0AH,'$' ;定义提示语句
SCANTAB DB 0,0,'1234567890-=',8,0 ;定义键盘
DB 'QWERTYUIOP[]',0DH,0 ;定义键盘第一行英文字母及符号
DB 'ASDFGHJKL;',0,0,0,0 ;键盘第二行英文字母及符号
DB 'ZXCVBNM,./',0,0,0 ;键盘第三行英文字母及符号
DB ' ',0,0,0,0,0,0,0,0,0,0,0,0,0
DB '789-456+1230.'
******设置一些存储地址便于理解******
EVEN
OLDCS9 DW ? ;9号中断向量地址
OLDIP9 DW ? ;9号中断向量首地址
******预设置打字练习的句子******,1699