




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
攀枝花学院学生课程设计(论文)题 目: 打字练习 学生姓名 学 号: 所在院(系): 计算机学院 专 业: 2009计算机科学与技术 班 级: 第 二 组 指 导 教 师: 何老师 职称: 讲师 2010年 01月 07日攀枝花学院本科学生课程设计任务书题目打 字 练 习1、课程设计的目的1、使同学们增进对汇编语言的认识,加强用汇编语言编程的能力。2、通过查找、运用设计资料,完成工程设计所必备的基本训练。3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)设计内容:编程实现如下功能:将26个字母中的任一字母从屏幕落下,用户要在这个过程中键入落下的字母,如果键入正确,字母消失;键入不正确,字母继续下落。按下列要求设计主菜单:按回车键进入打字练习;按Esc键返回主界面;按空格键暂停;按大写字母“E”程序结束。设计思路:循环调用BIOS的10H中断类型的09号功能,显示一个有提示信息的开始界面。调用DOS系统功能调用的1号功能,接受从键盘输入的字符到AL寄存器,如果(AL)为空格,进入打字练习界面;如果(AL)为“E”,则退出程序。在界面的第0行显示由26个字母组成的字符串。字母下落的设计过程是:(1)利用BIOS功能调用的2号功能,置光标位置。(2)10号功能在光标位置写字母。(3)延迟一段时间。(4)重置光标位置(列坐标不变,改变行坐标),利用10号功能在光标位置写空格,延迟一段时间。(5)重复(1)(4)。打字练习的实现过程是:当字母下落没有超过最大行坐标时,利用DOS系统功能调用的6号功能,接受从键盘输入的字符到AL寄存器。如果(AL)为1BH(Esc),则转向主界面显示的程序段;如果(AL)为空格,则字母在确定光标位置显示,延迟一段时间,直到(AL)再次为空合格;如果(AL)为任意字母,则判断其是否和下落字母相同,如果相同,则在相应光标位置显示空合格;否则,字母继续下落。重复以上过程。操作说明:运行可执行程序testword.exe,出现菜单主界面,按空格键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;否则,字母继续下落。按Esc键返回主菜单;按空格键暂停;按“E”退出。3、主要参考文献1汇编语言程序设计,吴向军等,高等教育出版社,20022IBM-PC汇编语言及程序设计实验教程,沈美明等,清华大学出版社 ,20013汇编语言程序设计, 钱晓捷等,电子工业出版社,20004汇编语言程序设计案例精编,李珍香等,中国水利水电出版社,20045 汇编语言程序设计,白小明,中国铁道出版社,2009-8-16 汇编语言程序设计,王成耀,姚琳,机械工业出版社,2003-03-014、课程设计工作进度计划时间内容安排1天分析设计准备3天编程调试阶段1天 编写课程设计报告指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日课程设计(论文)指导教师成绩评定表题目名称打 字 练 习评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微机计算机与DOS方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体的概念,初步掌握DOS开发方法,为以后进行实际的软件应用开发奠定良好的基础。 本设计是利用Masm for window集成实验环境来实现得打字练习程序,当前,在计算机和许多手机上流行许多小游戏,小软件,应用都很广泛,比如本次编写的练习打字小程序就很有趣,不仅让我们学习打字,更加重要的是我们在编写的过程中更好的掌握学过的知识,锻炼了我们的编程技能。通过运用汇编语言中有的循环,子程序调用等来完成程序的编写,并且通过对程序的调试,逐步的掌握汇编语言的功能,在自己不足的方面进行改正,进一步的巩固所学的知识,熟练应用汇编语言进行一些程序的制作,进一步培养了对编程的兴趣关键词 课程设计,软件调试,打字练习,编程1 设计内容简介1.1 设计任务设计主菜单:按回车键进入打字练习;按ESC键进入延缓界面;按空格键暂停;按大写字母“E”程序结束。将两位十进制数从屏幕上方落下,用户要在这个过程中键入落下的字母,在下落的过程中键入落下的数字,如果正确,数字消失;键入不正确,数字继续下落。若键入正确,则得分,没有键入正确,不扣分。在打字的过程中,每下落十个数记一次总成绩。1.2 设计思想用汇编语言实现打字程序的思想,首先用BIOS的10H中断类型的02H功能置光标位置,接着用DOS的21H中断类型的09H功能显示字符串来显示主界面;调用DOS的21H的08H功能,接受从键盘输入的字符到AL寄存器,判断AL如果为回车以默认速度开始游戏,如为S键则进入速度选择界面,如为E键则退出程序;进入速度选择界面后,调用DOS的21H的08H功能,选择速度后进入游戏;进入游戏后,随机落下一字母,通过21H的06H功能调用,接受从键盘输入的字符到AL寄存器,如键入ESC进入成绩界面,如键入空格则暂停游戏,如没有得到输入或输入错误则继续下落,输入正确则字母消失,并通过21H的02H功能调用发生响铃;接着继续下落其他字母,如果落下的字母数大于78个则退出游戏进入成绩界面。进入成绩界面后通过DOS的21H的02H功能调用显示击中字母的个数和丢失字母的个数,暂停大概2秒钟后自动回到主界面。1.3 设备环境 16位Windows 2000操作系统,文本编辑器使用写字板,汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用DEBUG.EXE。1.4 知识点运用Windows 2000操作系统、写字板、汇编程序等的基本使用规则;调用BIOS的1号功能、2号功能、6号功能、09号功能、10号功能等;汇编语言中,循环语句、判断语句的使用和嵌套;文本的建立,程序链接的方法;绘图和屏幕截图的方法;DEBUG调试程序。2 程序流程设计 主要流程图开始清屏,显示开始界面按空格键进入打字练习界面光标初始化在第一行显示由26个字母组成的字符串任一字母下落键入字符输入字母正确吗?消去字母字符为空格键吗?字符为Esc键吗?字母暂停键入任意字符返回主界面输入“E”结 束 图2.1打字练习程序流程图3 程序代码设计Init_game macro op1,op2,op3,op4,op5,op6 mov cx,00h mov dh,op1 mov dl,op2op6:mov ah,02h mov bh,00h int 10h push cx mov ah,0ah mov al,op3 mov bh,00h mov cx,01h int 10h pop cx inc cx inc op4 cmp cx,op5 jne op6 endmclear_screen macro op1,op2,op3,op4 ;本段程序主要是通过定义变量和调用实现清屏宏定义 mov ah,06h mov al,00h mov bh,07h mov ch,op1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h mov bh,00h mov dh,00h mov dl,00h int 10hendmmenu macro op1,op2,op3 ; 本段程序主要是通过定义变量和调用来实现菜单显示宏定义 mov ah,02h mov bh,00h mov dh,op1 mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21hendmdata segment ZK db WELCOME TO PLAY$ no db date:2010-12-31$meg db press Enter key to continue.$meg1 db when a letter is dropping,please hit it!$meg2 db press space key to pause!$meg3 db press ESC key to return main interface!$meg4 db press letter E to exit!$speed dw 600dletters db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoexrphysfqtvdcgljukdaletters_bak db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoexrphysfqtvdcgljukdaletter_counter db 0 life_flag db 78 dup(0)position_flag db 78 dup(0) present_position db 1 data ends;本段主要用于主界面的显示,起到提示作用stack segment para stack stack db 64 dup(0)stack endscode segment main proc far assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov letter_counter,00h mov present_position,1 lea si,position_flag mov ah,00h mov cx,00hinit_postion_flag: mov si,ah inc si inc cx cmp cx,78d jne init_postion_flag lea di,letters lea si,letters_bak mov cx,00hinit_letters: mov ah,si mov di,ah inc si inc di inc cx cmp cx,78d jne init_letters mov ah,00h lea si,life_flag mov cx,00hinit_life_flag: mov si,ah inc si inc cx cmp cx,78d jne init_life_flag mov cx,00h mov ah,01h or ch,b int 10hclear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ; 本段程序主要是对菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4put: mov ah,02h ;此段用来设置光标位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;通过本段代码,能够从键盘输入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exit exit: mov ah,4ch int 21h speed3: mov ax,speed+12 mov speed,ax jmp begin begin: clear_screen 01d,01d,23d,78d ;第二次使用清屏宏调用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,lettersnextletter: mov ah,02h ;用来示字母 mov dl,si int 21h inc si inc cx cmp cx,78d je nextcycle jmp extletterfrom_front: sub present_position,78d jmp gobackto_sifind_zero: cmp letter_counter,78d je recycle cmp present_position,78d je from_one mov ah,00h nextsi: add present_position,01h inc si cmp si,ah je gobackto_di cmp present_position,78d je from_one jmp nextsifrom_one:mov present_position,01h jmp gobackto_si recycle:mov letter_counter,00h mov present_position,01d lea si,position_flag mov cx,00h mov ah,00hclearsi: mov si,ah inc cx cmp cx,78d je nextcycle inc si jmp clearsinextcycle: lea di,letters lea si,position_flag add present_position,31d cmp present_position,78 ja from_frontgobackto_si: add si,word ptr present_position dec si mov ah,si cmp ah,01h je find_zerogobackto_di: mov ah,01h mov si,ah add di,word ptr present_position dec di mov dl,present_position mov ah,02h mov bh,00h mov dh,01h int 10h mov cx,00hnextrow: push cx mov cx,00hout_cycle: ;时间的延迟 push cx mov cx,00hin_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;从键盘输入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果键入ESC,则返回主菜单 je to_start1 cmp al, ;如果键入SPACE,则游戏暂停 je pause cmp al,di ;输入字母正确!则字母消失 je disappearpass: pop cx inc cx cmp cx,speed je print jmp out_cyclepause: push dx ;用来暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al, jne pause jmp passto_start1: ;用于返回主菜单 jmp startprint: mov ah,0ah ;在当前光标位置写空格 mov al, mov bh,00h mov cx,01h int 10h inc dh mov ah,02h ;用来改变光标位置 mov bh,00h int 10h mov ah,0ah ;在当前光标位置写字母 mov al,di mov bh,00h mov cx,01h int 10h pop cx inc cx cmp cx,21d je print_next_letter jmp nextrow ;下一行disappear: ;击中字母后输出空格 pop cx pop cx mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h jmp hit print_next_letter: lea si,life_flag add si,word ptr present_position dec si mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h inc dh mov ah,02h mov bh,00h int 10h mov ah,0ah mov al, mov bh,00h mov cx,01h int 10h mov ah,1 mov si,ah hit: mov ah,02h mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出现下一个新字母的数法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycle convey_letter: sub al,7ah add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10hnotkey: mov ah,07h int 21h cmp al,0dh je to_start cmp al,1bh je over jmp notkeyto_start: clear_screen 00,00,24,79 jmp startover: clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,15h int 10h mov ah,02h mov bh,00h mov dh,13d mov dl,15h int 10h mov ah,07h int 21h mov ah,07h int 21h clear_screen 00,00,24,79 mov ax,4c00h int 21hmain endpcode endsend start ;程序结束4 程序调试运行41调试阶段(1)打开windows命令窗口,进入masm程序的安装目录,汇编源文件,如图:图4.1.1 文件链接图(2)链接原文件,并运行可执行文件,如下图:图4.1.2 运行可执行文件图(3)进入主程序段显示提示信息,程序功能应该实现下图所示:图4.1.3 程序主界面图42运行阶段(1)按回车键进入打字练习页面,并且开始练习打
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕西货运从业资格证考试500题
- 某商超自救技能规定
- 幼儿园看图写人小故事9篇范文
- 蔬菜农资采购与存储管理系统协议
- 2025年高性能钴粉项目提案报告
- 2025年高性能陶瓷刀具材料项目规划申请报告
- 2025年新型结构不锈钢丝绳项目申请报告模板
- 智能停车车牌识别系统开发协议
- 2025年阿拉伯语等级考试冲刺复习试卷
- 2025年法语TEF考试试卷写作技巧与范文分析试题
- 2024-2025学年人教版一年级下数学期末试卷(含答案)
- 2025山西万家寨水务控股集团所属企业校园招聘82人笔试参考题库附带答案详解
- 牙科手术安全核查流程与标准
- 【MOOC】《中国哲学》(北京师范大学) 章节作业中国大学慕课答案
- 中国当代文学专题-003-国开机考复习资料
- 水利水电工程防渗墙工程质量检测
- 工程塑料 第六章聚甲醛
- YY_T 0681.2-2010无菌医疗器械包装试验方法 第2部分:软性屏障材料的密封强度
- 粘土密封墙专项施工方案
- 化验单申请单模板
- 《中药化学》课程标准
评论
0/150
提交评论