- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言设计报告 课题:打字计时练习程序 专业 计算机科学与技术(网络工程) 学生姓名 张飞龙 班级 B计算机092 学号 0910704226 指导教师 王志宏 完成日期 2011年6月22日 打字计时练习程序设计 1.问题提出及功能要求 设计一个在键盘上练习打字并能统计时间的程序。通过它练习英文打字练习,并能够统计时间。 要求:在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,,每输入完一行后按回车键,可显示出练习输入的时间和下一行例句。按Esc键可退出程序。 2.算法设计 2.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 2.2程序流程图 保存原中断09H到自设的单元中 保存原中断09H到自设的单元中 设置自编处理程序的中断向量09H 保存原中断向量1CH到自设的单元中 设置自编处理程序的中断向量1CH 设置允许键盘和定时器中断 设置显示方式为80×25 显示提示信息 在屏幕上显示例句 初始化变量count、sec、min、hours 开中断 Call kbget Kbflag=80h?(键盘输入的是控制键或功能键吗) 开始 Call dispchar 显示该字符 Call dispchar Call disptime 显示回车换行符 检测并等待键盘中断的子程序 显示打字时间 显示回车换行符字符 5个例句都练习完了吗? 恢复原中断向量1CH、09H,返回操作系统 Y 输入的字符为回车符0DH? AL←换行符(0AH) N N N Y 3.代码设计 3.1功能模块说明 3.1.1定义数据段,设置主要参数: 缓冲区:BUFFER, BUFPT1 ,BUFPT2 3.1.2代码段 调用中断8259,键盘中断,时钟中断,设置打字计时文件程序顺序 3.1.3使用子程序分化各子功能 DISPTIME PROC NEAR BINDEC PROC NEAR ;将二进制转化为十进制显示时间 DECDIV PROC NEAR ;转化成字符显示 DISPCHAR PROC NEAR KBGET PROC NEAR ;获取键盘键入的信息 KBINT PROC NEAR ;查表查到相应的字符 RESET09 PROC ;重新设置09号中断 RESET1C PROC ;重新设置1c功能 RESET PROC ;回复1C与09 3.2源程序 STACK SEGMENT PARA STACK STACK DB 256 DUP(0) TOP LABEL WORD STACK ENDS DATA SEGMENT PARA PUBLIC DATA BUFFER DB 16H DUP(0)
有哪些信誉好的足球投注网站
文档评论(0)