ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:163.63KB ,
资源ID:30500803      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30500803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(打字计时练习.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

打字计时练习.docx

1、打字计时练习学生课程设计(论文)题 目:打字计时练习 * *学号:*所在院(系):计算机学院专 业:计算机科学与技术班 级:计算机科学与技术(1)班* * *2011年 12 月 31日 攀枝花学院本科学生课程设计任务书题目打字计时练习1、课程设计的目的通过本课程设计教学所要达到的目的是:1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知分析问题、解决问题的能力。2、通过查找、运用设计资料,完成工程设计所必备的基本训练。3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)设计

2、内容:设计一个在键盘上练习打字并能统计时间的程序。设计思路:在键盘上练习的打字例句及其地址表、计时单元等预先放在DATA数据段中,自编的中断程序kbint检测按键时产生的中断,并把按键的扫描码转换为ASCII码存入缓存区buffer,这个工作和ROM09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,即只解释了可显示字符,如英文字母、数字及一些符号;其他特殊键,如组合键、双态键、功能键等都未作解释,只作为字符码0来处理。在主程序部分保存原09类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。当键盘中断处理后,主程序中安排指令读取缓冲区中的字符并显示

3、在屏幕上。在主程序的末尾,利用DOS功能恢复原09类型的中断向量,然后返回DOS。在显示键入的字符时,还应判断字符是否为回车(0DH)。如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示出打字时间,然后顺序显示下一个例句。如果所存放的例句都已显示完,则又从第一个例句开始显示,直至键入某一功能键(如Esc键、Shift键等)退出程序,结束打字练习。打字时间统计利用自定时器中断处理程序clint来完成。每输完一例句,计时一次。在此中断例行程序中,定时器中断的次数记录在计数单元count中,当count计数值为18时,sec计数单元加1 ,当sec计数值达到60时,min计数单元加1 。

4、因为输入完一个句子无论如何也不会达到小时级,所以对hours计数值的调整判断,实际上只起到退出定时器中断的作用。显示时间的子程序disptime分别将各遍野单元的二进制数转换为十进制数,并以min:sec:msec的形式显示出来。其中msec是由count记数值转换成的:count1秒/18.2count55ms3、主要参考文献1汇编语言程序设计,吴向军等,高等教育出版社,20022IBM-PC汇编语言及程序设计(第2版), 沈美明等,清华大学出版社,20013IBM-PC汇编语言及程序设计实验教程,沈美明等,清华大学出版社 ,20014汇编语言程序设计, 钱晓捷等,电子工业出版社,20005

5、汇编语言程序设计, 张志明等,重庆大学出版社,19974、课程设计工作进度计划时间(天) 内容安排1 分析设计准备3 编程调试阶段1 编写课程设计报告指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能

6、运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插

7、图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘要微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握DOS开

8、发方法,为以后进行实际的软件应用开发奠定良好的基础。 本设计是利用Masm for window集成实验环境来实现的打字练习计时程序,在程序中利用自编的中断程序kbint检测按键时产生的中断,并把按键的扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,既只解释了可显示字符(入英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只作字符码0来处理。另外加入一个菜单模块,增加了程序的观赏性。关键词: 打字计时,寄存器,缓冲区,中断向量1.设计概述1.1设计

9、任务 设计一个在键盘上练习打字并能统计时间的程序。通过它练习英文打字练习,并能够统计时间。屏幕上显示出提示信息和练习例句,按照例句从键盘上输入字母即可,每输入完一行后按回车键,可显示出练习输入的时间和下一行例句。按Esc键可退出程序。1.2设计要求在本系统中,要求所需执行的操作由相应的开关状态反映,其驾驶操作与灯光信号对应关系如下:。1)自行编制键盘中断和时间中断处理程序,并保存原中断向量,程序运行时,使用自编的中断向量处理程序,程序退出时,恢复中断向量;2)在缓冲区中预放了一些字母,程序运行时,可按照屏幕上显示的小写字母进行输入练习;3)每输入完一行按回车键后,可显示出练习输入的时间。1.3

10、设计目的 熟悉与掌握有关键盘和时间的中断及字符显示技术。1.4设备环境 在本设计中,所用到的设备环境如下所示:A.计算机一台;B.2.设计环境C.Masm for window集成实验环境; 2. 设计环境2.1 Masm for window集成实验环境介绍 Masm for Windows 集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言的学习软件,它具有错误信息自动定位、关键字实时帮助(动画演示汇编指令执行过程)、语法着色、无限的撤消与恢复、WORD式的查找、替换、定位、支持中文长文件名、软件可以安装在任意文件夹等功能;a.建立汇编源程序通过b.编

11、译为目标文件d.连接为可执行文件 c.不通过,重新修改(语句错误) f.不正确,用调试工具调试,重新修改(逻辑错误) e运行 正确g.完成2.2 DOS中断介绍 使用DOS提供的程序控制硬件。优点是兼容性好,使用方便。DOS是IBM PC系列微机的操作系统(现在的微机仍能运行DOS,而且新的操作系统也能继续提供几乎所有的DOS功能调用)负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。DOS的功能调用不依赖于具体的硬件系统。所有的DOS系统功能调用都是利用软件中断指令INT 21H来实现的。也就是说,在程序中需要调用DOS功能的时候,只要使用一条INT 21H指令即可

12、。INT 21H是一个具有90多个子功能的中断服务程序,这些子功能大致可以分为四类:设备管理、目录管理、文件管理和其他。其功能一览表可参见附录。为了方便用户使用这些子功能,INT 21H对每一个子功能都进行了编号称为功能号。这样,用户就能通过指定功能号来调用INT 21H的不同子功能。DOS系统功能调用的方法如下:1)-功能号。2)在其他寄存器中放入该功能所要求的人口参数。3)在执行INT 21H指令。4)分析出口参数。用户程序与DOS、BIOS和硬件的关系见图3.软件设计方案3.1 软件设计思想在键盘上练习的打字例句及其地址表、计时单元等预先放在DATA数据段中。自编的中断程序kbint检测

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

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

15、单程序,使得原来的程序更具有观赏性;显示时间的子程序disptime分别将各计时单元的二进制数转换为十进制数,并以min:sec:msec的形式出来。其中msec是有count中的计数值转换成的: Count*1s/18.2=count*55ms此式中,18.2是计算机系统产生的一个时间中断,每秒18.2次 3.2程序流程图3.3源程序stack segment para stack stack db 256 dup(0)top label wordstack endsdata segment para public databuffer db 16h dup(0)bufpt1 dw 0buf

16、pt2 dw 0kbflag db 0prompt 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.evenoldcs9 dw ?oldip9 dw ?str1 db abcd efgh ijkl mnop qrst uvwx yz. db 0dh,0ah,$str2 db there are

17、 some newspapers on the table. db 0dh,0ah,$str3 db there are some clouds in the sky. db 0dh,0ah,$str4 db she always eats her lunch at noon. db 0dh,0ah,$str5 db i do not like autumn and winter.crlf db 0dh,0ah,$colon db :,$evensaddr dw str1,str2,str3,str4,str5count dw 0sec dw 0min dw 0hours dw 0save_l

18、c dw 2 dup(?)data endscode segment assume cs:code,ds:data,es:data,ss:stackmain proc farstart: mov ax,stack mov ss,ax mov sp,offset top push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax ; mov ah,0 ; mov al,4 ; int 21h ; mov ah,0bh ; mov bh,0 ; mov bl,4 ; int 11h mov ah,35h mov al,09h int 21h

19、mov oldcs9,es mov oldip9,bx push ds mov dx,seg kbint mov ds,dx mov dx,offset kbint mov al,09h mov ah,25h int 21h pop ds mov ah,35h mov al,1ch int 21h mov save_lc,bx mov save_lc+2,es push ds mov dx,seg clint mov ds,dx mov dx,offset clint mov al,1ch mov ah,25h int 21h pop ds in al,21h and al,11111100b

20、 out 21h,al first: mov ah,0 mov al,3 int 10h mov dx,offset prompt mov ah,9 int 21h mov si,0next: mov dx,saddrsi mov ah,09h int 21h mov count,0 mov sec,0 mov min,0 mov hours,0 stiforever: call kbget test kbflag,80h jnz endint push ax call dispchar pop ax cmp al,0dh jnz forever mov al,0ah call dispcha

21、r call disptime lea dx,crlf mov ah,09h int 21h add si,2 cmp si,5*2 jne next jmp firstendint: cli push ds mov dx,save_lc mov ax,save_lc+2 mov ds,ax mov al,1ch mov ah,25h int 21h pop ds push ds mov dx,oldip9 mov ax,oldcs9 mov ds,ax mov al,09h mov ah,25h int 21h pop ds sti retmain endpclint proc near p

22、ush ds mov bx,data mov ds,bx lea bx,count inc word ptrbx cmp word ptrbx,18 jne return call inctadj: cmp hours,12 jle return sub hours,12return: pop ds sti iretclint endpinct proc near mov word ptrbx,0 add bx,2 inc word ptrbx cmp word ptrbx,60 jne exit call inctexit: retinct endpdisptime proc near mo

23、v ax,min call bindec mov bx,0 mov al,: mov ah,0eh int 10h mov ax,sec call bindec mov bx,0 mov al,: mov ah,0eh int 10h mov bx,count mov al,55d mul bl call bindec retdisptime endpbindec proc near mov cx,100d call decdiv mov cx,10d call decdiv mov cx,1 call decdiv retbindec endpdecdiv proc near mov dx,

24、0 div cx mov bx,0 add al,30h mov ah,0eh int 10h mov ax,dx retdecdiv endpkbget proc near push bx cli mov bx,bufpt1 cmp bx,bufpt2 jnz kbget2 cmp kbflag,0 jnz kbget3 sti pop bx jmp kbgetkbget2: mov al,buffer+bx inc bx cmp bx,16h jc kbget3 mov bx,0kbget3: mov bufpt1,bx pop bx retkbget endpkbint proc nea

25、r push bx push ax in al,60h push ax in al,61h or al,80h out 61h,al and al,7fh out 61h,al pop ax test al,80h jnz kbint2 mov bx,offset scantab xlat scantab cmp al,0 jnz kbint4 mov kbflag,80h jmp kbint2kbint4: mov bx,bufpt2 mov buffer+bx,al inc bx cmp bx,16h jc kbint3 mov bx,0kbint3: cmp bx,bufpt1 jz k

26、bint2 mov bufpt2,bxkbint2: cli mov al,20h out 20h,al pop ax pop bx sti iretkbint endpdispchar proc near push bx mov bx,0 mov ah,0eh int 10h pop bx retdispchar endpcode ends end start4、调试与运行4.1实验步骤:1)打开windows命令窗口2)进入masm程序的安装目录,汇编源文件,如图: 图4.1.2 汇编程序3)连接程序,并查看生成可执行文件wordtest.exe。图4.1.3 查看生成可执行文件4)关闭对

27、话框,打开可执行文件wordtest.exe,开始打字计时练习。4.2运行程序:1)设置主程序段显示提示信息,程序功能应该实现下图所示:图4.2.1 程序调试2)调用DISPCHAR PROC NEAR 显示用户字条,调用DISPTIME PROC NEAR显示时间,然后输出下一句提示程序应该实现下图所示:图4.2.2 程序调试3)如此循环多次,当第五个例句输入完成后,再返回第一句继续打字计时。图4.2.3 程序调试4.3调试中出现的问题没有注意到要操作的目标数据(内存中的数据)的大小和使用的操作容器(寄存器)的大小没有一致。 另外,对于处理数据的ds:bx方式,如mov ds:bx,dx a

28、dd bx,2在循环中应注意bx的递增或递减大小,如果处理字节,比如用dl,循环中就加或减1;如果处理字,比如用dx,就加或减2。在以后应该留意这个一致性。 在8086上,ss和sp都是16位的,栈所处理数据的最小单位也是16位的,即最小是一个字,栈一次读和一次写,都至少是一个字那么大。5.总结 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的

29、过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。 一个星期个学习过去,我通过查阅书籍,以及在老师的精心指导下,我终于完成了此次设计。经过这两个星期的学习,我对微机的认识有了很大的提高。我觉得任何一次课程设计的最终目的不是看我们的设计结果是否符合标准,也不是想方设法证明我们自己多么优秀,更重要的是让我们体验实践的快乐、团结的力

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1