




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息科学与技术学院 微机原理与接口技术课程设计课 题 名 称: 打 字 练 习 程 序 学 生 姓 名: 魏爱英 学 号: 2007081852 专业 、年级: 计科07-1 指 导 教 师: 农峰 时 间: 2009.9 1、题目及要求:1.1、题目:打字练习程序 1.2、要求: 1)、缓冲区中预放了一些字母2)、运行时,可按照屏幕上显示的字母输入练习3)、当按结束,可显示出练习输入的时间,并且能显示出正确率。4)、要求界面美观。2、功能设计: 2.1、功能模块:1)主程序模块-主要是随机产生字符并将字符送入缓冲区,通过调用其他子程序和宏设置窗口、字符总数和正确个数,并实现打字练习功能,计算出正确率及打字输入的总时间。打字结果计算与显示模块( UseTimeAndOut,true_rate_out):主要计算打字输入所用的总时间及打字正确率并输出总时间和打字正确率。设置字符颜色模块(change_char_color):主要设置打字时缓冲区字符和打字区字符的颜色,包括错误时字符的颜色显示。字符满行处理模块(manhang):主要功能是当字符输入满行时进行换行。输出模块(OutTime,btod_out):输出程序运行时的时间。统计模块(TONGJI):统计字符个数和正确个数并记录时间。2)宏的作用:清屏(qp):用于清屏,产生不同颜色、不同大小的窗口。 设置光标位置(gbdw):用于移动光标位置,以便按要求输出。读光标位置(dugb):用于读取当前光标位置。提示(tishi)用于输出提示语句。2.2、功能图:YNY退出打字结束缓冲区中字符是否打完N开始段地址初始化随机产生字符开窗口将产生的字符串输到屏幕上开始打字输入字符屏幕上显示结果字符-27?3、详细设计:3.1、设计方法: 该课程设计只是应用了些简单的函数调用,中断,宏调用。其中随机产生字符的实现是通过调用中断(ah=2ch,int 10)取系统时间的1/100 来得到一组随机数,把这些随机数当做指针,然后取指针对应的字符表中相应的字符,来得到一串字符。在把结果显示到屏幕上时将数据拆分后输出到屏幕上。如123在屏幕上显示时必须一个一个输出,还有在输出小数点时也采取了相应的办法。在计算时间上记录系统在打字开始和结束时的时间,然后相减得到。在打字时通过比较记录正确个数,最终除以总个数得到正确率。在打字过程中还通过设置字符属性来区分正确和错误字符的不同。3.2、各功能模块及流程图 输出正确率模块 计算打字时间并输出模块输出正确率true_rate_out计算正确率:mov ax,zqgs; mov cx,100mul cx;div Sum输出整数部分输出小数点输出小数部分输出%结束YYNNNY计算打字时间并输出提取打字结束时系统时间计算打字时间的秒数Jns bbadd dh,60; dec cl计算打字所用的分钟数Jns vvJz bbadd cl,60; dec ch计算打字所用的小时数调用显示时间的函数输出打字时间结束 数据打印输出模块NYYNNNYYN输出bx的内容mov ax,bx; mov si,3mov bl,10; div bl mov tempsi,ah延时程序Si=0?mov bp,1;mov si,1mov dl,tempsi; add dl,0;cmp dl,0Dl=0?Bp=0输出字符Inc siBp=1?Si=3?输出字符退出Bp=?记录当前时间和 改变字符颜色模块 正确个数及已打个数模块YBp=0?temp1=1sub temp0,1add temp1,50设置光标及字符属性YNN改变字符颜色读光标位置计算输入字符的行数计算光标定位的行数和列数add dh,al;add dl,ah光标定位及字符属性设置sub temp1,1mov bx,bp;dec bx结束记录当前时间和正确个数及已打个数开窗口设置光标位置输出提示时间输出字符正确与总的个数比结束3.3重点难点及解决办法: 学习了汇编语言,对汇编语言的的一些基本指令有所理解。刚开始看到这个题目的时候,我感觉这个题目还是很简单的,在数据区直接存放一串字符,接着输入字符与已有字符做比较,记录正确个数和总的字符个数,然后二者一除就得到正确率了, 至于打字时间就是取两次系统时间,结束和开始时间相减便得到了。当我着手做时我才发现这并不是我想象的那样。我遇到的问题是怎么才能在屏幕上正确的显示信息,当要在屏幕上显示 12:21:23这些时我不知道该怎么解决了。我最终的解决办法是将字符拆开一个一个输出。在本程序中已知字符串我采用了随机产生,在随机产生时我遇到的问题是产生的字符由于程序运行时间太短而都是同一字符,后来我通过向同学请教,采用延时的办法解决了这个问题。4、总结: 程序设计是一门很注重理论和实践相结合的科目,要求我们在掌握了课本理论知识后灵活应用于实践之中。通过不断的实践了解自己在学习中的知识的欠缺和动手能力的不足,进而通过思考和查阅资料自主完成课题实践。通过这次的课题实践让我深刻的明白了基础理论的重要性。编程过程中的有些错误并非什么难解之处,相反,正是某些基础细节的错误理解导致了编程中的错漏。因此,在今后的学习中,我会更加注重牢固基础知识,提高编程速度,减少出错率。在这次的实践课题的完成过程中,虽然遇到些小的问题,但是,通过查阅书本资料和请教同学都已克服。由于,此次的课题与某些学习中的实践有些相似之处,所以,课题完成的比较顺利。通过完成接口的有关课题,也进一步培养了我的动手实践能力,并且对于我的之前所学的知识有所巩固和提高。5、参考文献: 1 IBM-PC汇编语言程序设计 沈美明 清华大学出版社 2001年8月第2版 2 IBM-PC汇编语言程序设计例题习题集沈美明 清华大学出版社 1991年6月第1版 3 微机系统和接口应用技术朱世鸿 著 清华大学出版社 2006年9月第1版 6、附: 源程序;*zfys MACRO zf,ys push ax ;寄存器压栈 push bx push cx push dx mov ah,9h ;在光标位置显示字符和字符属性 mov al,zf ;AL字符ASCII码 mov bh,0 ;显示页号 mov bl,ys ;设置字符属性 mov cx,1 ;字符重复个数 int 10h mov ah,03h ;读光标位置 mov bh,0 ;显示页号 int 10h mov ah,02 ;置光标位置 inc dl ;列 int 10h pop dx ;寄存器出栈 pop cx pop bx pop axENDM;*backzifu MACRO zf,ys mov ah,02h ; mov dl,08h ;退格 int 21h zfys zf,ysENDM;*qp MACRO al1,bh1,ch1,cl1,dh1,dl1;清屏窗口 push ax push bx push cx push dx mov al,al1 ;上卷行数 mov bh,bh1 ;卷入行属性 mov ch,ch1 ;左上角行数 mov cl,cl1 ;左上角列数 mov dh,dh1 ;左下角行数 mov dl,dl1 ;左下角列数 mov ah,06h int 10h pop dx pop cx pop bx pop axENDM;*gbdw MACRO bh1,dh1,dl1 ;设置光标位置 push ax push bx push cx push dx mov bh,bh1 ;显示页号 mov dh,dh1 ;行 mov dl,dl1 ;列 mov ah,2 ;置光标位置 int 10h pop dx pop cx pop bx pop axENDM; *dugb MACRO bh1 ;读光标位置 push ax push bx push cx push dx mov bh,bh1 ;显示页号 mov ah,03h ;读光标位置 int 10h mov gbattr0,dh ;记录光标行 mov gbattr1,dl ;记录光标列 pop dx pop cx pop bx pop axENDM;*hm MACRO hzd,hsr ;一行是否输满并进行相应操作 push ax push bx push cx push dx mov ax,hsr cmp ax,0 jz exit1 mov dx,0 cwd mov bx,hzd div bx cmp dx,0 jz ln jmp exit1ln: mov mhbz,1exit1: pop dx pop cx pop bx pop axENDM;*tishi MACRO row,col,addrr ;输出提示语句 push ax push dx gbdw 0,row,col;设置光标位置 mov ah,09h lea dx,addrr int 21h pop dx pop axENDM; *data segment buf db 400 dup($) jbzf db abcdefghijklmnopqrstuvwxyz0123456789$ ;基本字符 jbzf1 db 400 dup($) Sum dw 0 ;总字符个数 zqgs dw 0 ;正确字符个数 mhzfs dw 0 ;满行的字符数 LineAct dw 0 ;当前行字符数 mhbz db 0 ; 1满行,0未满 gbattr db 2 dup(0) ;存放字符所在行列 Sumtime db 3 dup(0) temp db 5 dup(0) cd1 db Sumtime:$ cd2 db Rate:$ cd3 db all time:$ cd4 db all letters:$ cd5 db true Rate:$ cd6 db any key to end!$ cd7 db Quit by pressing an key printed Q!$ cd8 db *Typewrite practising*$data endscode segment assume ds:data,cs:codestart: mov ax,data mov ds,ax; * mov di,0 ;随机产生字符 mov bx,65 zifu: mov ah,2ch int 21h mov al,dl cbw mov si,ax cmp si,35 ja zifu mov al,jbzfsi mov bufdi,al inc di dec bx push di push si mov di,100h ;/延时Aa1: mov si,0ff00hAa2: dec si jnz Aa2 dec di jnz Aa1 pop si pop di cmp bx,0 jnz zifu ; * qp 0,30h,0,10,23,69 ;开窗口,做菜单 qp 0,50h,4,14,22,34 qp 0,50h,4,36,22,64 qp 0,25H,12,36,12,64 ;qp 0,07,8,16,17,63 qp 0,57,10,16,20,32; * gbdw 0,0,30 ;输出上面提示语句 qp 0,25h,0,20,2,60 mov ah,09h lea dx,cd8 int 21h gbdw 0,2,24 mov ah,09h lea dx,cd7 int 21h ; * gbdw 0,5,36 mov di,0 mov cx,0ffffhAD: mov dl,bufdi ;装载字符 cmp dl,$ jz A2 push dx mov bp,di CALL manhang pop dx mov ah,02h ;输出预存在缓存区的字符 int 21h inc di loop ADA2: mov ah,2ch ;取系统时间 int 21h mov Sumtime0,ch mov Sumtime1,cl mov Sumtime2,dh gbdw 0,13,36 CALL TONGJI mov cx,0ffffh mov di,0hAS: cmp bufdi,$ jnz hh jmp qqhh: mov bp,di CALL manhang mov bp,di CALL change_char_color ;改变字符颜色; *typeinput: ;输入字符开始打字 dugb 0 mov ah,01 int 21h cmp al,27 ;是否退出 jnz ff jmp exit; *ff: cmp al,0dh jnz gg gbdw 0,gbattr0,gbattr1 jmp typeinputgg: cmp al,08 jnz mm cmp gbattr1,14 jnz jj gbdw 0,gbattr0,gbattr1 jmp typeinputjj: mov ah,02h mov dl, int 21h mov ah,02h mov dl,08h int 21h dec di dec Sum push ax mov al,jbzf1di cmp al,bufdi jnz kk dec zqgskk: pop ax CALL TONGJI mov bp,di CALL change_char_color ;改变字符颜色 jmp typeinput ; *mm: inc Sum CALL TONGJI mov jbzf1di,al cmp al,bufdi jnz pp inc zqgs CALL TONGJIA3: inc di loop nn nn: jmp ASqq: jmp exitpp: mov temp1,al backzifu temp1,74h ;设定打字字符的颜色 jmp A3exit: tishi 11,16,cd3 call type_time_out tishi 13,16,cd4 mov bx,Sum call data_out tishi 15,16,cd5 call true_rate_out tishi 17,16,cd6 mov ah,08 int 21h mov ah,4ch int 21h; *true_rate_out proc near ;输出正确率 push ax push bx push cx push dx mov ax,zqgs;正确字符个数 mov cx,100 mul cx div Sum ;字符总数 mov bx,ax CALL data_out push dx mov ah,02h mov dl,. int 21h pop dx mov ax,dx mul cx div Sum mov bx,ax CALL data_out mov ah,2h mov dl,% int 21h pop dx pop cx pop bx pop ax rettrue_rate_out endp; *type_time_out proc near ;计算打字时间并输出 mov ah,2ch int 21h sub dh,Sumtime2 jns bb jz bb add dh,60 dec clbb: sub cl,Sumtime1 jns vv jz bb add cl,60 dec chvv: sub ch,Sumtime0 CALL OutTime rettype_time_out endp; *OutTime proc near ;显示时间ch:cl:dh mov al,ch cbw mov bx,ax CALL data_out mov ah,02h mov dl,: int 21h mov al,cl cbw mov bx,ax CALL data_out mov ah,02h mov dl,: int 21h mov al,dh cbw mov bx,ax CALL data_out retOutTime endp; *-TONGJI proc near ;记录当前时间和正确个数及已打个数 push ax push bx push cx push dx dugb 0 gbdw 0,6,17 qp 0,70h,6,16,6,32 mov ah,09h lea dx,cd1 int 21h mov ah,2ch int 21h call type_time_out gbdw 0,8,17 qp 0,70h,8,16,8,32 mov ah,09h lea dx,cd2 int 21h mov ax,zqgs mov bx,ax call data_out mov ah,2h mov dl,/ int 21h mov ax,Sum mov bx,ax call data_out gbdw 0,gbattr0,gbattr1 pop dx pop cx pop bx pop ax retTONGJI endp; *data_out proc near ;输出BX中内容 把数据打印输出 push ax push cx push dx push bp mov ax,bx mov si,3rota1: mov bl,10 div bl mov tempsi,ah and ax,00ffh dec si cmp si,0 jnz rota1 mov bp,1 mov si,1rota2: mov dl,tempsi add dl,0 cmp dl,0 jz btodeal mov bp,0btrt1: mov ah,02h int 21hbtrt2: inc si cmp si,3 jna rota2; * cmp bp,1 ;全部为0时输出一个0 jnz RT mov ah,2h int 21h; * jmp RTbtodeal: cmp bp,1 jz btrt2 jmp btrt1RT: pop bp pop dx pop cx pop ax retdata_out endp ; *manhang proc near ;满行后换行 push ax
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泰语二级考试试题及答案
- 解读语文面试题及答案
- 思想品德考试试题及答案
- 校园保安安全知识培训课件
- 电工操作面试题及答案
- 客房清扫考试题及答案
- 2025年国能铜陵发电有限公司招聘考试试题(含答案)
- 2025年广州市从化区社区专职人员招聘考试笔试试题(含答案)
- 消毒技术基础知识参考题库(附答案)
- 2025年导游知识培训考试题附答案
- 新解读《JTG 5120-2021公路桥涵养护规范》
- 国家保安员资格考试试卷(十套)
- 基本药物临床应用管理制度
- 四年级四年级下册阅读理解20篇(附带答案解析)经典
- 放射科新技术介绍
- 盆底功能障碍问卷(PFDI20)
- 居住证申请表(正式版)
- 护士临床思维建立
- 公共场所卫生知识培训材料
- 证据目录范本
- 标准档案盒脊背(格式已设置好)
评论
0/150
提交评论