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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、汇编设计报告打字计时练习程序汇编语言课程设计报告( 2012 - 2013 年度第 1 学期)课题名称:打字计时练习程序目 录 1 设计目的 12 概要设计 12.1 系统总体分析 12.2 主模块框图 23 详细设计 23.1 主模块及子模块说明 23.2各模块详细设计 33.2.1主界面模块 33.2.2中断处理模块 33.2.3 打字计时模块 54 程序调试 84.1 运行界面分析 84.2 调试过程及分析 105 心得体会 105.1 设计体会 105.2 系统改进 11参考文献 12附 录 13附录1 源程序清单 13附录1.1 打字计时练习模块源程序 13打字计时练习程序1 设计目

2、的这次课程的任务是写一个在键盘上练习打字并能统计时间的程序,运行可执行程序后,按回车键出现主界面,进入英文打字练习并计时,通过课程设计,主要达到以下目的:1.增进对汇编语言的认识,加强运用汇编语言编程的能力;2.掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种调用功能,并由此实现对硬件的控制等;3.了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下坚实的基础; 4.通过课程设计可以使我们更加了解书上的知识,了解书上的语句并能用到自己的程序设计中;5.掌握屏幕输出显示的设计方法。2 概要设计2.1 系统总体分析在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母

3、输入练习,每输入完一行按回车键后,可显示出练习输入的时间。当一个句子输入完后(回车键作为结束符),屏幕上以min:sec:msec的格式显示出键入字符的时间。在每次打字之前,屏幕上先显示一个例句,然后打字员按照例句,将句中字符通过键盘输入。这个过程共进行五次,当键入一个Enter键时,退出打字计时练习程序。在键盘上联系的打字例句及其地址表、计时单位等预放在DATA数据段中。自编的中断程序Kbint检测按键时产生的中断,并把按键扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时做了简化,即只解释

4、了可显示字符(如英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只做字符码0来处理。在主程序部分保存原有09类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。当键盘中段处理后,主程序安排指令读取缓存区中的字符并显示在屏幕上。在主程序的末尾,利用DOS功能恢复原09类型的中断向量,然后返回DOS。在显示键入的字符时,还应判断字符是否为回车符(0DH)。如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示打字时间,然后顺序显示一个例句。如果所存放的例句都已显示完毕,则再次从第一个例句开始显示,直至键入某个功能(如ESC键等)退出程

5、序,结束打字练习。打字时间统计利用自编的定时器中断处理程序Clint来完成。每输入一个例句,计时一次。在此中断例行程序中,定时器中断的次数记录在计数单位count中,当count的计数值为18时,sec计数单位加1,当sec计数值打到60时,min计数单位加1.因为输入完一个句子无论如何也不会达到小时级,所以hours计数值的调整判断,实际上只起到退出定时器的作用。 加入一个显示菜单程序,使得原来的程序更具有观赏性;显示时间的子程序disptime分别将各计时单位的二进制数转换为十进制,并以min:sec:msec的形式出来。其中msec是由count中的计数值转换成的。Count*1s/18

6、.2=count*55ms 此式中,18.2是计算机系统中产生的一个时间中断,每秒18.2次。2.2 主模块框图 程序的核心模块是打字计时,通过显示的例句进行打字练习,最后显示出运行时间,主体流程图如下:a建立汇编原程序通过b。编译为目标文件d.连接为可执行文件 c.不通过,重新修改(语句错误) f.不正确,用调式工具调式,重新修改(逻辑错误) e.运行 正确g.完成3 详细设计3.1 主模块及子模块说明主模块:运行可执行程序显示打字主界面缓冲区:BUFFER, BUFPT1 ,BUFPT2 调用中断8259,键盘中断,时钟中断,设置打字计时文件输入所显示的例句、显示所用时间、回到主界面程序顺

7、序。3.2各模块详细设计3.2.1主界面模块主界面模块:采用宏调用的方式将界面清屏并显示主界面和字母组成的乱序行界面。程序运行后,我们首先要进行选择要继续进行即进入打字练习程序还是终止练习退出程序。所以需要设置一个程序判断键盘键入的字符,规定E键和ENTER键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入E后,退出程序;当键盘输入为ENTER时进入打字练习程序。程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中,则AL中即为由键盘键入的字符。在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序

8、开头部分的宏定义已经令CR为0DH),如果是的话,程序将跳转到程序speed3,speed3是定义的又一个程序,该程序即为打字练习程序的核心部分。如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMPAL,45H来实现,其中45H是E键的ACSII码的十六进制的表示。如果是E键的话,程序将跳转到exit子程序,再通过exit程序来判断是否要退出打字练习程序。如果键盘键入的既不是ENTER也不是E键的话,程序将继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。3.2.2中断处理模块利用DOS提供的程序控制硬件。优点是兼容性好,使用方便。DOS是IBM

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

10、存器中放入该功能所要求的入口参数3.在执行INT 21H指令。4.分析出口参数用户自编中断处理程序基本形式(1)将原中断向量保存在堆栈中或自设的存储单元中。 mov ah,35h mov al,int-type int 21h mov keep-ip,bx mov keep-cs,es(2)设置自编处理程序的中断向量:push ds mov dx,offset routinemov ax,seg routinemov ds,axmov al,int-typemov ah,25hint 21hpop ds(3)当中断程序结束时,必须恢复原来的中断向量,否则后续程序不能正确使用系统提供的例行程序。

11、push ds mov dx,keep-ipmov ax,keep-csmov ds.axmov al,int-typemov ah,25hint 21hpop ds(4)编写中断处理子程序以完成中断处理功能,结束时由IRET返回中断点。routine proc farpush axsti:mov al,20hmov 20h,alpop axiretroutine endp3.2.3 打字计时模块打字的计时部分就是定时器中断处理部分。定时器的终端类型为08H,中断优先级比键盘高,只要在键盘中断处理程序KBINT中用一条STI指令允许高级中断,那么在整个键盘的输入过程中,定时器会以每秒18.2次

12、的频率产生中断。根据计时的需求,在整个键盘的输入过程中,必须把定时器中断的次数转换成时间,因此需要使用1CH中断扩充原定时期例行程序的功能。在自编的1CH中断例行程序中,定时器中断的次数记录在计数单元count中,当count计数值为18时,sec计数单元加1,当sec计数值达到60时,main计数单元加1.当然,输入一个句子无论如何也不会达到小时计,所以对hours计数值的调整判断,实际上只起到推出定时器中断的作用。当打完一个例句后按Enter键显示打字练习时间: call disptime lea dx,crlf mov ah,09h int 21h add si,2 cmp si,5*2

13、 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 push ds mov bx,data mov ds,bx lea bx,count inc word ptrbx cmp word

14、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 mov 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,0 div cx mov bx,0 add al,30h mov ah,0e

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

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