汇编语言课程设计报告-打字练习程序
打字练习程序
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
3)、当按结束,可显示出练习输入的时间,并且能显示出正确率。
4)、要求界面美观。
2、功能设计:
2.1、功能模块:
1)主程序模块-----主要是随机产生字符并将字符送入缓冲区,通过调用其他子程序和宏设置窗口、字符总数和正确个数,并实现打字练习功能,计算出正确率及打字输入的总时间。
打字结果计算与显示模块( UseTimeAndOut,true_rate_out):主要计算打字输入所用的总时间及打字正确率并输出总时间和打字正确率。
3.2、各功能模块及流程图
输出正确率模块计算打字时间并输出模块
数据打印输出模块
记录当前时间和改变字符颜色模块
正确个数及已打个数模块
3.3重点难点及解决办法:
学习了汇编语言,对汇编语言的的一些基本指令有所理解。刚开始看到这个题目的时候,我感觉这个题目还是很简单的,在数据区直接存放一串字符,接着输入字符与已有字符做比较,记录正确个数和总的字符个数,然后二者一除就得到正确率了,至于打字时间就是取两次系统时间,结束和开始时间相减便得到了。当我着手做时我才发现这并不是我想象的那样。我遇到的问题是怎么才能在屏幕上正确的显示信息,当要在屏幕上显示 ‘12:21:23’这些时我不知道该怎么解决了。我最终的解决办法是将字符拆开一个一个输出。在本程序中已知字符串我采用了随机产生,在随机产生时我遇到的问题是产生的字符由于程序运行时间太短而都是同一字符,后来我通过向同学请教,采用延时的办法解决了这个问题。
C语言打字练习程序课程设计报告
青岛理工大学《C语言程序设计》题目打字练习程序指导教师:李兰老师姓名:学号:2011班级:专业:计算机科学地点:现代教育中心机房201时间:2012.6.26 至2012.6.29一、内容本程序主要实现的是对使用者的打字速度进行练习和提高。
因为界面友好亲和,因此能让使用者在轻松愉快中练习并快速提高自己的打字速度和准确性。
程序主要的功能有记录使用者在本次使用中的击中数和总下落字母的个数之比。
并且游戏设置了九个等级,随着数字的增加,等级越高,字母下落的速度逐步提高,这样能够更好的迎合不同水平的用户需求。
使用本程序很简单,因为在写代码时,我很注重的是界面的友好,所以,在用户的每次操作前,界面上都有详细的操作提醒,只要跟着提示输入就能很快速地进入并开始练习。
二、上机环境操作系统:windows XP(win7兼容)开发工具:VC6.0三、函数调用关系图四、各函数功能说明1、void main( ) 主函数2、void printScreen( ) 刷新屏幕函数3、int levelChoice( ) 游戏等级选择函数4、int newWord( ) 生成新字符函数5、int moving( ) 字符下降函数6、int wordHit( ) 击中字符函数7、int result ( ) 结果输出函数8、int start( ) 程序开始提示操作9、void leave( ) 函数结束五、流程图六、程序运行效果图七、总结通过这次的C语言课程设计,我对程序设计的过程有了很具体的认识,我明白了作为一个开发者应该具有坚持和吃苦耐劳的素质和乐于交流和共享的品德。
而且由于在程序设计和代码编写的时候,程序中用到的很多函数是我们在课堂上并没有接触到甚至是没有听说过的,因此我们还得大量地参考有关书籍,并且从互联网上查找函数等的相关信息。
与此同时,与同学的交流更是并不可少的,这个也是作为将来的一个开发者必须要具备的素质,那就是团队合作精神。
打字练习软件课程设计报告
燕山大学专业综合设计报告题目打字练习软件学院(系)信息科学与工程学院年级专业07计算机软件2班学生姓名李成武指导教师陈子阳日期2010 年10 月13日目录1 概述 (1)1.1软件开发环境、工具和方法 (1)1.2软件功能简介 (1)2 软件功能设计 (2)2.1系统的总体功能描述 (2)3 编码设计 (3)3.1打字练习部分 (3)3.2数据库部分 (5)3.3F LASH部分 (7)3.4主要模块实现 (8)4 测试 (10)4.1黑盒测试 (12)4.2白盒测试 (13)5 总结 (15)参考文献 (16)1 概述1.1 软件开发环境、工具和方法打字练习软件是基于Windows操作平台,以Visual Studio 2005为开发环境,利用MFC编写的。
可在Windows XP操作系统中安全运行。
本软件界面的设计主要通过Visual C++提供的多种控件来构建的,例如,RicheEdit2.0控件用来实现显示和输入字符串;Shockwave Flash Object控件打开Flash 打字游戏;List Control控件读取并显示数据库内容等等。
本软件采用Access 2003作为数据库,用来记录软件使用者的部分信息,如姓名、字母打字得分和数字打字得分等数据。
1.2 软件功能简介本软件对打字练习方法经过合理的安排,使之形成完善的应用系统。
下面将介绍此打字练习软件的基本功能:(1) 教程功能这是打字入门的基础。
正确的打字姿势习惯关于整个打字练习的成败。
这个功能将为那些初学打字或者打字姿势不正确的人提供一个正确的指导,为形成良好的打字习惯奠定坚实的基础。
(2) 练习功能即提供给使用者进行打字练习,使其熟悉键盘上相应字母的指法并正确的打出相应的字母或者数字。
由于键盘可大致分为两个部分,一个是主键盘区,另一个是数字键盘区。
熟悉整个键盘并能熟练的进行盲打,使我们设计此软件的宗旨。
因此,练习功能必须包含字母练习功能和数字键盘区练习。
打字练习课程设计
1.引言汇编语言程序设计是电子信息类专业的重要基础课程,是计算机应用开发人员必须接受的最重要的专业基础训练之一,是计算机软,硬件研究的基础,是一个优秀计算机工作者必须掌握的基础知识和基本技能。
汇编语言也是计算机能够提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间个时间的要求很高的场合,汇编语言的应用时必不可少的。
2.设计任务与要求1、随机显示一段字符(可含有字母和数字)2、根据屏幕显示进行打字练习,出错时声响报警3、打字完成后统计正确率和打字时间4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书3.设计方案(1)本次课程设计通过对8253 的设置,使之产生一定频率的波形,将该波形输出到中断口IRQ。
每次进入中断都刷新LED点阵上的字母显示,从而控制打字练习的速度。
通过改变8253的计数初值可以改变速度。
(2)8253 通道1 工作于方式3,输入1MHZ 的时钟,设置分频系数为1000,输出1KHZ 的方波,此输出作为通道0 的输入时钟。
通道0 工作于方式3,分频系数为用户输入的速度等级×1000。
[注:速度等级:1---快速 2---中速 3----慢速](3)将8255 的A 口接到LED 点阵的COL1-8,C 口接到LED 点阵的ROW1-8,每当进入中断,就把在数据段存好的字母的段码送到A 口和C 口,显示相应的字母。
(4) 每个字母都需要分段循环显示,利用人眼的视觉暂留便可看见点阵上显示整个字母。
(5)为避免中断服务程序过长,在写中断服务程序时,只需要把中断标志置1即可,其余操作可在主程序中进行。
(6)在字母显示期间,要不断读取按键输入,直到按键正确或进入下一次中断(即表示该字母的出现时间已经结束),准备出现下一个字母。
(7)在字母显示期间,若读入的按键是错误的,则在屏幕上显示“错误”,并继续显示该字母,等待按键或中断;若未能在字母消失前按下正确的键,则在屏幕上显示“超时”,并显示下一个字母;若在字母消失前按下正确的键,则在屏幕上显示“正确”,往A 口和C 口输出00H,使字母消失,分数加1,并准备显示下一个字母。
汇编语言打字练习程序课程设计报告
课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室ﻩ2010年12月17日安徽理工大学课程设计(论文)成绩评定表摘要汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。
鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。
打字练习是计算机常用的小应用程序,可以给想练习打字的人提供一个好的练习空间。
本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。
关键词:功能模块,核心代码,随机字符,模块调用,功能分析目录1设计目的ﻩ错误!未定义书签。
2概要设计 .......................................................................... 错误!未定义书签。
2.1系统总体分析 ...................................................................................................... 错误!未定义书签。
2.2主模块框图及说明ﻩ错误!未定义书签。
3 详细设计 ......................................................................... 错误!未定义书签。
3.1主模块及子模块说明 ........................................................................................ 错误!未定义书签。
3.2各模块详细设计ﻩ错误!未定义书签。
3.2.1主界面模块.................................................................................................. 错误!未定义书签。
汇编语言课程设计打字游戏
目录1. 课程设计目的及内容 (2)1.1 课程设计目的 (2)1.2 课程设计内容 (2)2. 开发环境 (2)2.1 软、硬件环境 (2)2.2 MASM开发环境 (3)3.功能分析 (3)3.1 基本功能设计 (3)3.2系统程序流程图 (4)4. 调试和运行程序 (5)4.1 程序调试 (5)4.2 程序运行 (6)5. 课程设计总结 (8)6. 参考文献 (8)附录 (9)源程序代码 (9)打字游戏1. 课程设计目的及内容1.1 课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。
学会查阅和汇编语言相关的规范,手册等技术资料。
能正确绘制和使用流程图。
掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。
1.2 课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。
2. 开发环境2.1 软、硬件环境软件环境:操作系统:Windows 8 64位(DirectX 11)、BIOS系统DOS系统硬件环境:处理器:英特尔第三代酷睿i3-3110M @ 2.40GHz 双核内存:4GB(三星DDR3 1333MHz)主硬盘:希捷ST500LM012 HN-M500MBB (500GB/5400转/分)显示器:三星SEC3649(14 英寸)2.2 MASM开发环境Masm是汇编编译器,是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成obj文件,通过link工具连接成可执行文件exe。
汇编语言程序设计课程设计-打字练习程序的设计
课程设计2013~ 2014学年第二学期设计题目汇编语言程序设计课程设计-打字练习程序的设计院(系)计算机科学与信息工程学院专业网络工程提交日期 2014年7月5日上海应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):杨晶鑫2014年6 月25 日2014年6 月25 日目录上海应用技术学院课程设计任务书..................................................... i错误!未定义书签。
目录.................................................................................................................................... i ii 1概述. (1)1.1基本功能 (1)1.2拓展功能 (1)1.3代码的格式 (1)2详细设计说明 (4)2.1原“TYPETEST.ASM”程序结构 (4)2.2已经实现的功能(修改的、新编写的)程序结构 (5)2.3各模块功能 (7)2.3.1用户验证模块: (7)2.3.2功能选择模块: (9)2.3.3游戏选择模式: (12)2.3.4游戏模块: (15)2.3.5游戏结束模式: (22)2.3.6退回主菜单: (23)3课程设计总结 (25)3.1设计体会 (25)3.2系统改进 (25)4软件使用说明 (26)4.1用户密码: (26)4.2运行环境: (26)4.3使用方法 (26)参考文献 (34)附录 (35)源代码: (35)1 概述本次课程设计主要是设计一个打字游戏,通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作, 加深对汇编语言程序设计的认识,提高阅读理解复杂程序的能力和程序设计能力。
本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出;程序包括自动计分功能,根据打字的快慢分别获得不同的分数,根据打字的难度,分别变化不同的颜色,并且设置了用户名和密码,使软件运行起来更加安全。
打字练习计时程序设计说明书
学号:课程设计题目打字练习计时程序设计学院专业班级姓名指导教师2014 年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 打字计时练习程序设计要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个打字计时练习的程序,在缓冲区中预放一些字母,运行时,可按照屏幕上显示的字母输入练习。
2.按某个键开始练习,每输入完一行按回车键后,可显示出练习的时间及正确率。
3.撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:12月30日-----12月31日查阅资料及方案设计1月2日-----1月3日编程1月6日调试程序1月7日-----1月8日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1.设计要求 (2)1.1设计任务 (2)1.2设计要求 (2)1.3设计目的 (2)2.算法设计 (3)2.1设计思路 (3)2.2程序流程图 (3)3设计说明 (5)3.1BIOS中断 (5)3.1.1显示输出管理 (5)3.2DOS中断 (6)3.2.1DOS中断 (6)3.2.2 DOS中断和BIOS中断使用方法 (6)4.程序说明 (8)4.1计算正确率子程序 (8)4.2键盘获取子程序 (9)5.调试与运行 (11)5.1运行程序: (11)5.2调试中出现的问题 (12)6.总结 (13)参考文献 (14)附录 (15)摘要计算机的不断更新发展,在各个领域的应用越来越多。
而汇编语言是计算机能够提供用户使用的最快而又最好最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可。
微机原理课程设计--打字计时练习
打字计时练习1设计目的通过课程设计,主要达到以下目的:1.使学生增进对汇编语言的认识,加强用汇编语言编程的能力。
2.使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
3.使学生了解和掌握汇编语言程序设计过程、方法及实现,巩固微机原理课程上学到的知识。
4.通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中.5.进一步掌握屏幕输出显示的设计方法.2设计思想题目的要求是通过系统时钟得到输入30个字符所需的时间间隔,并在屏幕上显示输入字符和时间间隔。
用汇编语言实现打字程序的思想,首先用指针保存30个测试用的字符,接着用DOS的21H中断类型的09H功能显示字符串来显示主界面;调用DOS的21H的01H功能,接受从键盘输入的第一个字符字符,然后调用DOS的21H的2cH功能获取系统时间,将系统时间存入TIMEBUFF中。
接着将输入的剩余29个字符放在循环中,待输入30个字符完毕后再次调用DOS的21H的2cH功能获取系统时间,将此次的时间运算后放入dx中,将开始输入的时间放入ax中,将两次的时间差放入cx中,其中ch放秒钟十位,cl放个位。
调用比较输入的字符是否正确的函数,通过DOS的21H的02H功能调用显示输入的字母和其中输错字母的个数,然后显示时间间隔。
调用DOS的21H中断类型的07H,当接下来输入如果是”q”就退出,是其他字符就清空错误的数目还有30个字符的指针,开始新一轮的打字计时。
3软件流程图是4程序DATA segmentTIPdb0DH,0AH,'-----------now begin-----------',0DH,0AH,'$'TIMEBUFF1 db 0 ;保存考试输入时的分钟数TIMEBUFF2 db 0 ;保存开始输入时的秒STR1 db 'abcdefghijklmnopqrstuvwxyzabcd',0DH,0AH,'$' ;30个字符ERRORFLAG db 0 ;保存30个字符的指针ERROR db 0 ;保存错误的数目TIMEIS db 0DH,0AH,'the time is ','$' ERRORIS db 0DH,0AH,'the error is ','$'RESTART db 0DH,0AH,'>>press q to exit or others to restart','$' DATA endsACK segmentdw 20 dup(0)ACK endsCODE segmentassume cs:CODE,ds:DATA,ss:ACKstart:mov ax, ACKmov ss, axmov sp, 40mov ax, DATA ;屏幕初始显示mov ds, axmov dx, offset TIPmov ah, 9int 21Hmov dx, offset STR1 ;显示30个字符mov ah, 9int 21Hmov ah, 1 ;调用1号中断接受第一个字符int 21hcall Comparemov ah, 2CH ;调用2CH号中断,获取系统时间int 21Hmov TIMEBUFF1, cl ;将系统时间存入TIMEBUFF中mov TIMEBUFF2, dhmov cx, 29 ;剩余的29个字符放在循环中loops:mov ah,1int 21Hcall Compareloop loopsmov ah, 2CH ;输入完毕,再次获取系统时间int 21Hmov al, cl ;将此次的时间运算后放入dx中mov cl, 60mul clmov cl, 8shr dx, cladd ax, dxmov dx, axmov al, TIMEBUFF1 ;将开始输入的时间放入ax中mov cl, 60mul clxor cx, cxmov cl, TIMEBUFF2add ax, cxsub dx, ax ;将两次的时间差放入cx中,其中ch放秒钟十位,cl放个位mov ax, dxmov cl, 10div clmov ch, almov cl, ahmov ax, DATA ;显示“the time is”mov dx, offset TIMEISmov ah, 9int 21Hmov dl, ch ;显示时间间隔add dl, 48mov ah,2int 21hmov dl, cladd dl, 48mov ah,2int 21hmov ax, DATA ;显示“the error is”mov dx, offset ERRORISmov ah, 9int 21Hxor dx,dx ;显示errormov dl, ERRORmov ax, dxmov cl, 10div clmov cx, axmov dl, aladd dl, 48mov ah,2int 21hmov dl, chadd dl, 48mov ah,2int 21hmov ax, DATA ;显示“press q to exit or others to restart'mov dx, offset RESTARTmov ah, 9int 21Hmov ah,7 ;如果是q就退出,其他的继续int 21hcmp al,'q'jne REjmp KOUTRE:mov bl, ERRORFLAG ;如果继续的话清空错误的数目还有30个字符的指针mov bh, ERRORmov bx, 0mov ERRORFLAG, blmov ERROR, bhjmp startKOUT:mov ah, 4CHint 21hCompare: ;比较输入的字符是否正确的函数push bxpush cxpush dxxor bx,bxmov bl, ERRORFLAGmov dl, ERRORmov cl, STR1[bx]cmp al, clje nextinc dlnext:add bl, 1mov ERROR,dlmov ERRORFLAG,blpop dxpop cxpop bxretCODE endsend start5调试运行结果初步调试的时候遇到很多错误,后来经过检查发现是因为输入法不对输入的标点计算机无法识别,从而不能编译成功。
微机课设报告 打字游戏汇编语言的设计
学号09750223实习报告微型计算机原理及应用课程设计报告打字游戏程序设计起止日期:2012 年1 月3 日至2012年 1 月6 日学生姓名马聪班级09电气2班成绩指导教师(签字)电子与信息工程系2012年1月05日摘要为了更好地掌握学习微机原理的知识,我们进行了这次课程实验,以完善我们的知识体系,我们通过汇编语言在PC机上完成了一个打字游戏的设计,它具有练习打字的功能。
本有游戏主要针对指法练习,并提供字母和单词两种选择。
根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。
同时本游戏提供显示得分,正确率和失败个数的功能。
当失败个数超过一定个数后,游戏结束并提示是否继续。
目录一、课程设计题目 (2)二、设计思路模块划分流程图 (2)㈠设计思路 (2)㈡模块划分 (2)㈢流程图 (3)三、程序源代码 (4)四、调试过程,运行结果和出现的问题及解决 (12)1、调试结果 (12)2、在调试中碰到问题 (14)五、课程设计心得 (14)六、成绩单 (15)一、课程设计题目、内容和实现的功能字母打字游戏基本功能:0 菜单主界面由“开始”“速度调整”“暂停”“结束”“统计得分”等项组成1 按ESC键退出游戏,显示得分,正确打字数和错误打字数.二、设计思路、模块划分、流程图(一)设计思路:利用计算机控制发声的原理,来演奏乐曲的程序。
乐曲按一定的高低、长短和强弱关系组成的音调。
根据歌谱,来编写歌程序的音符表和节奏表。
组成乐谱的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。
通过来设时间值,然后通过发声程序“*”来播放音乐。
通过键盘控制扬声器发出各种音符声音,使计算机键盘变成钢琴键盘,这是可以用它来演奏各种简单的声音。
弹奏时对应乐谱上的q音符,按下1,程序将接收到的1键的频率为262Hz送入程序中。
1、音乐播放选择从键盘上输入“1”,则播放“新年好”;从键盘上输入“q”,则退出;从键盘上输入其它字符,则等待重新输入。
汇编语言专题实验报告
汇编语言专题实验报告设计题目:键盘打字游戏姓名:班级:计算机85学号:20080551262010 年11 月28 日一、对课程设计的认识制作这款打字小游戏是为了对汇编语言程序设计有一个更深刻的了解,将所学的知识应用于实践,提高自己的编程水平。
鉴于用汇编语言编程的复杂性,为了使游戏能够实现自己预先的构想,所以自创了这款相对比较简单的打字游戏。
在游戏制作工作中会应用到80x86的指令系统和寻址方式,输入输出程序设计等,涉及到的知识领域还是很全面的,所以在通过完成这次编程,相信能得到不小的提高。
二、功能需求描述经过多次尝试和验证,本程序大体能实现一下功能:1、出现菜单主界面,按回车键出现由26个字母组成的乱序行,这时其中任一个字母落下;2、在键盘上敲入该字母,如果输入正确,字母消失;3、按ESC键返回主界面;4、按空格键暂停;5、按‘E’退出。
三、程序方案设计程序首先通过宏的定义以及调用宏来画出游戏边框,再通过定义一个函数并调用MOV AH,09 INT 21H 来显示字符串, DS:DX定义字符串位置。
游戏主程序调用BIOS INT 10 的9号功能实现对目标文本的颜色和定位。
游戏主程序可以用MOV AH,00 INT 16H从键盘读取输入的字符再调用MOV AH,01 INT 21H 让键盘输入显示在屏幕中 AL=输入的字符,用CMP指令对输入的文本和目标文本进行比较,再利用选择语句在打错字符后对wrong的基数加1,在打对字符后对right的基数加1,并调用清屏函数clear将该字符消除。
对于要求柱形图实时显示正确和错误的数目,可以通过利用“*”在竖向上叠加来实现,字符串结束后直接退到dos环境。
整体设计方案流程图四、程序详细设计1、程序流程详细说明首先运行程序,进入主界面,通过键盘输入字符,先判断是否是“E”,是则直接退出,如果不是“E”,则进入下一步判断是否为数字1,是就按速度1 下落字母,否就进入下一步判断,是否为数字2,是就按速度2下落字母,否就进入下一步判断,是否为数字3,是就按速度3下落字母,否就返回重新输入。
汇编打字练习
攀枝花学院学生课程设计(论文)题目:打字练习学生姓名学号:所在院(系):计算机学院专业:2009计算机科学与技术班级:第二组指导教师:何老师职称:讲师2010年01月07日攀枝花学院本科学生课程设计任务书摘要微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微机计算机与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个则退出游戏进入成绩界面。
最新汇编语言打字练习程序课程设计报告
课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年12月17 日安徽理工大学课程设计(论文)成绩评定表摘要汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。
鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。
打字练习是计算机常用的小应用程序,可以给想练习打字的人提供一个好的练习空间。
本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。
关键词:功能模块,核心代码,随机字符,模块调用,功能分析目录1设计目的 (1)2概要设计 (2)2.1系统总体分析 (2)2.2主模块框图及说明 (2)3 详细设计 (4)3.1主模块及子模块说明 (4)3.2各模块详细设计 (4)3.2.1主界面模块 (4)3.2.2随机字母产生模块 (6)3.2.3字母落下模块 (7)3.2.4暂停模块 (8)3.2.5返回主界面模块 (9)4.程序调试 (9)4.1运行界面分析 (10)4.2调试过程及分析 (11)5心得体会 (12)5.1设计体会 (12)5.2系统改进 (12)参考文献 (13)1设计目的这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。
通过课程设计,主要达到以下目的:1. 增进对汇编语言的认识,加强用汇编语言编程的能力;2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;5. 掌握屏幕输出显示的设计方法。
汇编设计报告打字计时练习程序
汇编语言课程设计报告( 2012 -- 2013 年度第 1 学期)课题名称:打字计时练习程序目录1 设计目的 (1)2 概要设计 (1)2.1系统总体分析 (1)2.2主模块框图 (2)3 详细设计 (2)3.1主模块及子模块说明 (2)3.2各模块详细设计 (3)3.2.1主界面模块 (3)3.2.2中断处理模块 (3)3.2.3 打字计时模块 (5)4 程序调试 (8)4.1运行界面分析 (8)4.2调试过程及分析 (10)5 心得体会 (10)5.1设计体会 (10)5.2系统改进 (11)参考文献 (12)附录 (13)附录1源程序清单 (13)附录1.1 打字计时练习模块源程序 (13)打字计时练习程序1 设计目的这次课程的任务是写一个在键盘上练习打字并能统计时间的程序,运行可执行程序后,按回车键出现主界面,进入英文打字练习并计时,通过课程设计,主要达到以下目的:1.增进对汇编语言的认识,加强运用汇编语言编程的能力;2.掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种调用功能,并由此实现对硬件的控制等;3.了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下坚实的基础;4.通过课程设计可以使我们更加了解书上的知识,了解书上的语句并能用到自己的程序设计中;5.掌握屏幕输出显示的设计方法。
2 概要设计2.1 系统总体分析在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间。
当一个句子输入完后(回车键作为结束符),屏幕上以min:sec:msec的格式显示出键入字符的时间。
在每次打字之前,屏幕上先显示一个例句,然后打字员按照例句,将句中字符通过键盘输入。
这个过程共进行五次,当键入一个Enter键时,退出打字计时练习程序。
在键盘上联系的打字例句及其地址表、计时单位等预放在DATA数据段中。
自编的中断程序Kbint检测按键时产生的中断,并把按键扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时做了简化,即只解释了可显示字符(如英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只做字符码0来处理。
汇编课程设计打字游戏
;程序中要用到的一些宏指令及其说明
getChar MACRO char;调用1号功能,接收一个字符,将字符放在char里
PUSHAX
MOVAH,1
INT 21H
MOVchar,AL
POPAX
ENDM
showChar MACRO char;调用2号功能显示字符
PUSHAX
PUSHDX
INT 10H
POPAX
ENDM
initWindow MACRO A,B,C1,C2,D1,D2;初始化窗口或窗口内容向上卷动,也可以用于清屏
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,A;上卷行数
MOVBH,B;卷入行属性(颜色)
MOVCH,C1;左上角行号
MOVCL,C2;左上角列号
DB'Start',0dh,0ah,'$'
DB'Setting',0dh,0ah,'$'
DB'Quit',0dh,0ah,'$'
KickDB?
XDB?
YDB?
ErrorMsgDB'Error!',0dh,0ah,'$'
EXITMsgDB' You really want to exit,enter Y to exit,and N to continue! (Y/N)',0dh,0ah,'$'
在具体实现的过程中遇到了很多困难。由于自己的电脑是64位的不兼容,所以平时对编好的程序在windows环境下用记事本打开程序对其进行说明注释,由于使用了中文,所以回到dos环境时出现了乱码。本次课程设计让我们充分了解了汇编在实际软件开发中的作用和地位。在这次课程设计过程中我们把课堂上的知识充分运用了还是不能完成实际软件开发。这说明程序开发是不能够停留在书本上的,想要把程序作好,必须要不断通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用到实际编程中,要学以致用。本次课程设计是自由分组、自由选题。我们可以根据我们的兴趣和优势来选择题目。通过这次编写打字游戏程序的课程设计,最基本的收获是我了解了汇编语言编写程序的步骤:先确定程序要实现的功能,接着定义需要的寄存器、存储器,画出流程图。然后逐个模块实现其功能。此次的课程设计,提高了我阅读和分析程序的能力,以及模仿能力。编程能力实事求是地说还有待提高,觉得自己逻辑性太差,但相对于原来学的高级语言,对汇编很感兴趣,最终虽然不会从事汇编的编程工作,但知识就是力量,学习汇编拓展了自己的知识面。
汇编程序
汇编-打字练习程序设计论文_百度文库</title><script>var PDC={_version:"0.1",_render_start:newDate().getTime(),_analyzer:{loaded:false,url:"/tb/pms/wpo.pda.js?v=0. 1?v=0.1",callbacks:[]},_opt:{is_login:false,sample:0,product_id:0,page_id:0,common_resources:[ ],special_resources:[],ds_resources:null,display:false},_timing:{},init:function(a){for(var b in a){this._opt[b]=a[b]}},mark:function(a){this._timing[a]=newDate().getTime()},view_start:function(){this.mark("vt")},tti:function(){this.mark("tti")},page_rea dy:function(){this.mark("fvt")},metadata:function(){var a=this._opt;var b={env:{user:(a.is_login==true?1:0),product_id:a.product_id,page_id:a.page_id},common_resour ces:mon_resources,special_resources:a.special_resources,render_start:this._render_start,timi ng:this._timing,ds_resources:a.ds_resources,display:a.display};returnb}};(function(){if(document.attachEvent){window.attachEvent("onload",function(){PDC.mark("l et");PDC._load_analyzer()})}else{window.addEventListener("load",function(){PDC.mark("lt")},f alse)}})();</script> <meta name="description" content="在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他用户的文档,同时,也可以利用分享文档获取的积分下载文档"><script type="text/javascript" src="/js/pass_uni_loginWrapper.js"></script><scripttype="text/javascript"src="/static/widget/common/base_js/base_js_7944c76c.js"></script><script type="text/javascript">F._fileMap({'/static/widget/common/framework_static/framework_static_ 4f5efbae.js' : ['/static/common/lib/tangram/base/base.js','/static/common/lib/fis/data/data.js']});</script><script type="text/javascript">F._fileMap({'/static/widget/common/module_static/module_static_c7b7a507.js' : ['/static/common/ui/js_core/log/log.js','/static/common/ui/js_core/widget/widget.js','/static/common/ui/js_core/upload/upload.js','/static/common/ui/js_core/Suggestion/Suggestion.js','/static/common/ui/js_core/tabs/tabs.js','/static/common/ui/js_core/mask/mask.js','/static/common/ui/js_core/dropDown/dropDown.js','/static/common/ui/js_core/_dialog/mask.js','/static/common/ui/js_core/_dialog/_dialog.js','/static/common/ui/js_core/pager/pager.js','/static/common/ui/js_core/dialog/dialog.js','/static/common/ui/js_core/tree/tree.js','/static/common/ui/js_core/accordion/animate/easing.js','/static/common/ui/js_core/accordion/animate/fx.js','/static/common/ui/js_core/accordion/animate/animate.js','/static/common/ui/js_core/accordion/accordion.js','/static/common/ui/js_core/mvp/model/model.js','/static/common/ui/js_core/mvp/event/event.js','/static/common/ui/js_core/mvp/presenter/presenter.js','/static/common/ui/js_core/mvp/view/view.js','/static/common/ui/js_core/mvp/template/template.js','/static/common/ui/js_core/mvp/route/route.js','/static/common/ui/js_core/console/console.js','/static/common/ui/js_core/popmessage/popmessage.js','/static/common/ui/js_core/rightCornerPop/rightCornerPop.js','/static/common/ui/js_core/login/login.js','/static/common/ui/js_core/util/util.js','/static/common/ui/js_core/carousel/carousel.js','/static/common/ui/js_core/category/category.js','/static/common/ui/js_core/layerControl/layerControl.js','/static/common/ui/js_core/tips/tips.js','/static/common/ui/js_core/join_course/join_course.js','/static/widget/common/header/search_box/search_box.js','/static/widget/common/user_bar/user_bar.js','/static/widget/common/360tip/360tip.js']});</script><link type="text/css" rel="stylesheet" href="/static/widget/common/module_static/module_static_991dcbf7.css"/ ><script type="text/javascript">F._fileMap({'/static/widget/view/module_static/module_static_2f76d890.js ' : ['/static/widget/view/doc_info/doc_info.js','/static/widget/view/relate_doc/relate_doc.js','/static/widget/view/doc_remind/doc_remind.js','/static/widget/view/same_series_doc/same_series_doc.js','/static/widget/view/doc_reader/doc_reader.js','/static/widget/view/relate_alblum/relate_alblum.js','/static/widget/view/doc_upload/doc_upload.js','/static/widget/view/edit_doc/edit_doc.js','/static/widget/view/other_like_doc/other_like_doc.js','/static/widget/view/down_doc/down_doc.js','/static/widget/view/doc_header/doc_header.js','/static/view/ui/course_view/reader_pace/reader_pace.js','/static/view/ui/view/favorite/favorite.js','/static/view/ui/view/operate/operate.js','/static/view/ui/view/doc_report/doc_report.js','/static/view/ui/view/mediator/mediator.js','/static/view/ui/view/config/config.js','/static/view/ui/view/doc_share/doc_share.js','/static/view/ui/view/page_list/page_list.js','/static/view/ui/view/star/star.js','/static/view/ui/view/reader_pace/reader_pace.js','/static/view/ui/view/down_doc/down_doc.js','/static/view/ui/util/util.js','/static/view/ui/flashReaderCreater/flashReaderCreater.js','/static/common/lib/tangram/base/base.js','/static/common/lib/fis/data/data.js']});</script><link type="text/css" rel="stylesheet" href="/static/widget/view/module_static/module_static_af284517.css"/> <scripttype="text/javascript">F._fileMap({'/static/view/index/index_97e6f4df.js' : ['__virsul__']});e('__virsul__');</script><linkhref="/static/view/index/index_44ff7a1a.css" rel="stylesheet" type="text/css"/></head><body> <script>PDC.mark("ht");(function(){var a=PDC.ready=function(){varg=false,f=[],c;if(document.addEventListener){c=function(){document.removeEventListener("DO MContentLoaded",c,false);d()}}else{if(document.attachEvent){c=function(){if(document.readySt ate==="complete"){document.detachEvent("onreadystatechange",c);d()}}}}functiond(){if(!d.isReady){d.isReady=true;for(var k=0,h=f.length;k<h;k++){f[k]()}}}function b(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(b,1);return}d()}functio ne(){if(g){return}g=true;if(document.addEventListener){document.addEventListener("DOMConte ntLoaded",c,false);window.addEventListener("load",d,false)}else{if(document.attachEvent){docu ment.attachEvent("onreadystatechange",c);window.attachEvent("onload",d);varh=false;try{h=window.frameElement==null}catch(i){}if(document.documentElement.doScroll& &h){b()}}}}e();returnfunction(h){d.isReady?h():f.push(h)}}();a.isReady=false})();PDC.ready(function(){PDC.mark("d rt")});PDC.mark("vt");</script> <!-- page begin--><style type="text/css">.threeY earBaner{margin-left:220px;}</style><a href="/event/3year?fr=banner" target="_blank"><img class="threeY earBaner" style="position: absolute;left: 50%;top: 18px;z-index:1" src="/img/iknow/wenku/topic/3year/fuli/3333.gif" alt=""></a><script>var _zoneUrl = window.location.href.toString();if(_zoneUrl.indexOf("org")>-1 || _zoneUrl.indexOf("verifyteacher")>-1){document.getElementsByTagName("html")[0].style.background="#FFF";}if(_zoneUrl.indexOf("topic")>-1){var _isHaveEgg = document.getElementById("Wrap-superEgg");if(_isHaveEgg){_isHaveEgg.style.display = "none";}}e(['/static/common/lib/tangram/base/base.js', '/static/common/lib/fis/data/data.js', '/static/common/ui/js_core/login/login.js'], function(T, Data, Login) {var login = Login.login;T.dom.ready(function() {if (T.cookie.get('BAIDU_DOC_NACT') === 'upload') {T.cookie.remove('BAIDU_DOC_NACT');}/*var sortBtn=T.dom.query(".sort_5")[0];var sortBtn2=T.dom.query(".sort_5")[1];if(sortBtn){sortBtn.style.display="none";sortBtn2.style.display="none";var tipPop = T.dom.query(".tipsPop")[0];if(tipPop){tipPop.style.visibility="hidden";}}*/var WkInfo = Data.get('WkInfo') || {};var _pathname=window.location.pathname+'';if(_pathname == '/room'){(newImage()).src='/static/widget/usercenter/filesManagement/images/btn_flash _upload.png?t='+(new Date()).getTime();}else if (/^\/org\/index$/) {var list = T.dom.query('#slide-banner-0 li a');if (list && list[0]) {if (/\org\/request/.test(T.dom.getAttr(list[0], 'href'))) {T.event.on(list[0], "click", function(e) {T.event.stop(e);login.check(function() {T.ajax.post("/async", "app=verify_user_org&uname=" + erName, function(xhr, res) {var errno = (eval("(" + res + ")"));switch (Number(errno.errno)) {case 0:case 3:location.href = "/org/request";break;}});});});}}}});});</script><style type="text/css">#baidu-top-tip .close{background:url(/img/iknow/docshare/img/close_bg.png) no-repeat 0 -1px!important;}#doc .ic-pptx {background:url(/static/widget/common/module_static/module_static_z209 76ac6.png) no-repeat -1098px 0;}.user-bar .mn-lk, .ui-crumbs li{background-image:url("/img/iknow/docshare/img/module_static_z69a01da 9.png");}.user-bar .mn-lk{background-position: right 6px;}.ui-crumbs li{background-position: right -5px;}</style><script type="text/javascript">e(['/static/common/lib/fis/data/data.js'],function(Data){var WkInfo = Data.get("WkInfo") || {};WkInfo.PageInfo = {'isLogin' : false, 'copyright' : "1", 'tpl' : "wk_info",'docTypeList':[[ 'none', '' ], [ 'doc', 'Word文档' ],[ 'xls', 'Excel表格' ],[ 'ppt', 'PPT文稿' ],[ 'doc', 'Word文档' ],[ 'xls', 'Excel表格' ],[ 'ppt', 'PPT文稿' ],[ 'pdf', 'pdf文档' ],[ 'txt', 'txt文档' ],[ 'wps', 'Word(金山)' ],[ 'et', 'Excel(金山)' ],[ 'dps', 'PPT(金山)' ],[ 'vsd', 'V isio绘图' ],[ 'rtf', 'rtf文档' ],[ 'pot', 'PPT模板' ],[ 'pps', 'PPT放映' ],[ 'epub', 'ePub文档' ]]};Data.set("WkInfo",WkInfo);});</script><div class="user-bar"> <ul class="inner"> <li><a href="/?l=7.1" target="_blank">百度文库首页</a></li> <li class="line">|</li> <li><a href="/search/wenku/kehuduanfabu/APP_iphone.html" class="logSend" data-logsend='{"send":["general","wapindex",{"login":0}]}' target="_blank">手机文库</a></li> <li class="line">|</li> <li><a href="/" class="logSend" data-logsend='{"send":["general","bdindex",{"login":0}]}'>百度首页</a></li> <li class="line">|</li> <li><a href="https:///v2/?login" id="login"class="logSend" data-logsend='{"send":["view","loginclick"]}'>登录</a><a href="/static/common/html/reg/index.html" id="reg" target="_blank" c lass="logSend" data-logsend='{"send":["view","regclick"]}'>注册</a></li> </ul></div><script>e('/static/widget/common/user_bar/user_bar.js');</script><div id="doc" class="page"><div id="hd"> <script type="text/javascript">e(['/static/common/lib/fis/data/data.js'],function(Data){var WkInfo = Data.get("WkInfo") || {};WkInfo.DocInfo = {'creater' : 'wy23668677', 'title' : '汇编-打字练习程序设计论文', 'docId' : 'e1d09cc19ec3d5bbfd0a74d9', 'docType' : 'doc', 'docTypeNum' : '1', 'flag' : '0','cats' : '3-63-160-0', 'cid1' : '3', 'cid2' : '63', 'cid3' : '160', 'cid4' : '0', 'price' : '2', 'size' : '168950', 'rateNum' : '0', 'totalPageNum' : '23', 'catal' : '0','relateDoc' : '10','otherLikeDoc' : '5','relateAlblum' : '0','sameSeriesDoc' : '0','readerV ersion' : (function(){var version = '3';if(version!=1&&version!=2&&version!=3){version=1;}return version;})()};WkInfo.PaceInfo = {'rate' : '30'};WkInfo.docType={'0' : '','1' : 'doc','2' : 'xls','3' : 'ppt','4' : 'docx','5' : 'xlsx','6' : 'pptx','7' : 'pdf','8' : 'txt','9' : 'wps','10': 'et','11': 'dps','12': 'vsd','13': 'rtf','14': 'pot','15': 'pps','16': 'epub'};Data.set("WkInfo",WkInfo);});</script> <div class="box top-search-box "> <div class="media"> <a href="/"><img src="/img/iknow/docshare/img/logo-wk-137-46.png" width="137" height="46" alt="百度文库_文档分享平台"></a> </div> <div class="content"> <div class="s_nav"> <div class="s_tab"> <a data-href="" href="/ns?word=word&tn=news&cl=2&rn=20&ct=1&fr=wenku"class="logSend" data-logsend='{"send":["general", "toptablink",{"to":"news"}]}' wdfield="word" onmousedown="setHeadUrl(this)">新闻</a><a data-href="" href="/s?wd=word&fr=wenku" class="logSend " data-logsend='{"send":["general","toptablink",{"to":"webpage"}]}' wdfield="wd" onmousedown="setHeadUrl(this)">网页</a><a data-href="" href="/f?kw=word&fr=wenku" class="logSend " data-logsend='{"send":["general","toptablink",{"to":"tieba"}]}' wdfield="kw" onmousedown="setHeadUrl(this)">贴吧</a><a data-href="" href="/q?word=word&ct=17&pn=0&tn=ikaslist&rn=10&lm=0&fr=wenk u" class="logSend" data-logsend='{"send":["general","toptablink",{"to":"zhidao"}]}' wdfield="word" onmousedown="setHeadUrl(this)">知道</a><a data-href="" href="/search?&fr=wenku&key=word" class="logSend " data-logsend='{"send":["general","toptablink",{"to":"music"}]}' wdfield="key" onmousedown="setHeadUrl(this)">音乐</a><a data-href="" href="/i?ct=201326592&cl=2&nc=1&lm=-1&st=-1&tn=baiduimage&isty pe=2&fm=&pv=&z=0&word=word&fr=wenku" class="logSend " data-logsend='{"send":["general","toptablink",{"to":"image"}]}' wdfield="word" onmousedown="setHeadUrl(this)">图片</a><a data-href="" href="/v?fr=wenku&ct=301989888&s=25&word=word" class="logSend " data-logsend='{"send":["general","toptablink",{"to":"video"}]}' wdfield="word" onmousedown="setHeadUrl(this)">视频</a><a data-href="" href="/?newmap=1&ie=utf-8&s=s&wd=word&fr=wenku" class="logSend" data-logsend='{"send":["general","toptablink",{"to":"map"}]}' wdfield="wd" onmousedown="setHeadUrl(this)">地图</a><a data-href=""href="/search/word?word=word&pic=1&sug=1&fr=wenku"class="logSend " data-logsend='{"send":["general","toptablink",{"to":"baike"}]}' wdfield="word" onmousedown="setHeadUrl(this)">百科</a><b>文库</b> </div> </div> <form action="/search" name="ftop" id="topSearchBox" method="get"> <span class="s_ipt_wr"> <input id="kw" name="word" class="s_ipt" maxlength="256" tabindex="1" value="" autocomplete="off"> </span><span class="s_btn_wr"> <input type="submit" id="sb" value="搜索文档" class="s_btn" onmouseover="this.className='s_btn s_btn_h'" onmousedown="this.className='s_btn s_btn_d'" onmouseout="this.className='s_btn'"> </span><span class="s_tools"><a href="/search/wenku/help.html" target="_blank">帮助</a> </span> <div class="g-sl"> <label for="t_all"><input type="radio" name="lm" value="0" id="t_all" checked >全部</label> <label for="t_doc"><input type="radio" name="lm" value="1" id="t_doc" >DOC</label> <label for="t_ppt"><input type="radio" name="lm" value="3" id="t_ppt" >PPT</label> <label for="t_txt"><input type="radio" name="lm" value="5" id="t_txt" >TXT</label> <label for="t_pdf"><input type="radio" name="lm" value="2" id="t_pdf" >PDF</label> <label for="t_xls"><input type="radio" name="lm" value="4" id="t_xls" >XLS</label> <div style="clear:both"></div> </div> <input type="hidden" name="od" value="0"> <input type="hidden" name="fr" value="top_home"> </form> </div></div><script>escapeSymbol = function(source) {return String(source).replace(/[#%&+=\/\\\ \\f\r\n\t]/g, function(all) {return '%' + (0x100 + all.charCodeAt()).toString(16).substring(1).toUpperCase();});};setHeadUrl = function(a) {if(!document.getElementById('kw').value) {var diff = new RegExp("[?]");if (diff.test(a.href)) {var temple = a.href;a.href = a.getAttribute('data-href');a.setAttribute('data-href',temple);}}else{var diff = new RegExp("[?]");if (!diff.test(a.href)) {var temple = a.href;a.href = a.getAttribute('data-href');a.setAttribute('data-href',temple);}a.href = a.href.replace('?newmap=1&ie=utf-8&s=s%26wd%3D','?newmap=1&ie=utf-8&s=s&wd=');a.href = a.href.replace(new RegExp("(" + a.getAttribute('wdfield') + "=)[^&]*"), '$1' + encodeURIComponent(document.getElementById('kw').value)).replace('?newmap=1&ie=utf-8&s =s&wd=','?newmap=1&ie=utf-8&s=s%26wd%3D');a.href = a.href.replace(new RegExp("(" + a.getAttribute('wdfield') + "=)[^&]*"), '$1' + escapeSymbol(document.getElementById('kw').value));}};e('/static/widget/common/header/se arch_box/search_box.js');</script> </div><div id="bd"> <div id="page-curmbs" class="crumbs ui-crumbs mb10"> <ul> <li><a href="/" class="logSend" data-logsend='{"send":["general","crumb1"]}'>百度文库</a></li> <li><a href="/pro/index" class="logSend" data-logsend='{"send":["general","crumb2"]}'>专业资料</a></li> <li><a href="/list/63" class="logSend" data-logsend='{"send":["general","crumb3"]}'>IT/计算机</a></li> <li class="current logSend"><a href="/list/160" data-logsend='{"send":["general","crumb4"]}'>电脑基础知识</a></li> </ul></div><div class="body"><div class="aside"><div class="doc-upload mt20"><a id="uploadDoc-0" href="###" class="ic view-sps btn-upload logSend" data-logsend='{"send":["submit","submit",{"fr":"view","copyright":"1"}]}'>上传文档</a></div><scripttype="text/javascript">e(['/static/common/lib/tangram/base/base.js','/static/common/ui/js_core /login/login.js'],function(T,Login){setTimeout(function() {var login =Login.login;T.event.on("uploadDoc-0","click",function(e){T.event.stop(e);login.verlogin(function (){location.href = "/new?fr=view";},null,null,{'actionName':"upload", 'fromMod': "upload"});});}, 250);});</script><div class="mod topic_image_link"><div class="wenku-join-btn mt10"></div><style type="text/css">.wk-book-media-b {width:92px;height:117px;}</style></div><script type="text/javascript">var wenku=wenku || {};wenku.readerBanner = function(){if("Array"){var jsonStr = "{\"banner\":[],\"bottom\":[],\"side\":[]}";if(jsonStr.toLowerCase()==="null"){jsonStr = "";}return jsonStr;}else{return "";}}</script> <div class="mod doc-info pt20"><b class="top"><b class="tl"></b><b class="tr"></b></b><div class="inner"><div class="hd title-info clearfix"><h4>文档信息<b id="hookId-2" class="gbma-d logSend" data-logsend='{"send":["view","docInfo",{"subType":"toggleClick","copyright":"1"}]}'></b></h4 ></div><div class="bd"><p class="rate"><span id="docRate-2"></span><span class="rate-tip" id="rateTip-2"></span></p><p class="c-gray9">已有<span class="c-gray3">0</span>人评价</p><p><span class="tail-info">浏览:</span><span class="tail-info"><span id="viewCount-2"></span>次</span> <span class="tail-info">下载:</span><span class="tail-info"><span id="downCount-2"></span>次</span></p><p id="docCreater"><span class="tail-info">贡献者:</span><a href="/?business&aid=6&un=wy23668677#7"target="_blank">wy23668677</a></p><p class="hidden-info"><span class="tail-info">贡献者等级:</span>初试锋芒二级</p><p class="hidden-info"><span class="tail-info">贡献时间:</span>2012-07-30</p><p class="hidden-info"><span class="tail-info">格式:</span><b class="ic ic-doc"></b><span class="ml5">doc</span></p><p class="keyword hidden-info"><span class="tail-info">关键词:</span>暂无 </p></div></div><b class="bottom"><b class="bl"></b><b class="br"></b></b></div><scripttype="text/javascript">e(['/static/common/lib/tangram/base/base.js','/static/widget/view/doc_in fo/doc_info.js'], function(T,docInfo){setTimeout(function() { docInfo.toggleInfo('hookId-2', 'hidden-info');docInfo.docRate({el : T.g("docRate-2"),tip : T.g("rateTip-2"),className : "rateStar",rateNum : '0.0'});docInfo.viewCount({view : "viewCount-2",down : "downCount-2"});}, 250);});</script><div class="mod page-doc-list relate-doc pt20"><b class="top"><b class="tl"></b><b class="tr"></b></b><div class="inner"><div class="hd clearfix"><div class="act page-control"><span class="page-info"><span id="pageNum-4" class="current-page">1</span><span class="tail-info">/2</span></span><spanclass="tabControl"><a id="pagePre-4" class="view-sps pre-null" href="javascript:void(0);"></a><a id="pageNext-4" class="view-sps next" href="javascript:void(0);"></a></span></div><script>e(['/static/common/lib/tangram/base/ba se.js','/static/common/ui/js_core/log/log.js'],function(T, log){T.on('pagePre-4', 'click', function(e){T.event.stop(e);log.send("view","relateDoc",{"right":"pageClick","copyright":"1",'pageNo': Number(T.g('pageNum-4').innerHTML)-1});});T.on('pageNext-4', 'click', function(e){T.event.stop(e);log.send("view","relateDoc",{"right":"pageClick","copyright":"1",'pageNo': Number(T.g('pageNum-4').innerHTML)+1});});})</script><h4><a href="/search?word=%BB%E3%B1%E0-%B4%F2%D7%D6%C1%B7% CF%B0%B3%CC%D0%F2%C9%E8%BC%C6%C2%DB%CE%C4&lm=0&od=0"target="_blank">相关文档推荐</a></h4></div><div class="bd"><ul id="pageList-4" class="tabContent"><li class="current"><div class="item"><p class="doc-title"><b class="ic ic-pdf"></b><a href="/view/1a0c379951e79b896802267f.html" class="logSend" data-logsend='{"send":["view","relateDoc",{"from":"related","right":"docClick","copyright":"1"," listNo":"0"}]}' target="_blank" title="(汇编)打字练习程序设计论文">(汇编)打字练习程序设计论...</a></p><div class="gd-g tail-info"><div class="gd-g-u gd-u-11-24"><span title="4分,7人评"><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-off"></b></span></div><div class="gd-g-u gd-u-1-4">26页</div><div class="gd-g-u gd-u-7-24">免费</div></div></div><div class="item"><p class="doc-title"><b class="ic ic-doc"></b><a href="/view/8c45b50302020740be1e9b6f.html" class="logSend" data-logsend='{"send":["view","relateDoc",{"from":"related","right":"docClick","copyright":"1"," listNo":"1"}]}' target="_blank" title="汇编语言打字练习课程设计报告(内附源程序)">汇编语言打字练习课程设...</a></p><div class="gd-g tail-info"><div class="gd-g-u gd-u-11-24"><span title="4分,63人评"><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-off"></b></span></div><div class="gd-g-u gd-u-1-4">32页</div><div class="gd-g-u gd-u-7-24">1财富值</div></div></div><div class="item"><p class="doc-title"><b class="ic ic-doc"></b><a href="/view/d28e14c3aa00b52acfc7ca43.html" class="logSend" data-logsend='{"send":["view","relateDoc",{"from":"related","right":"docClick","copyright":"1"," listNo":"2"}]}' target="_blank" title="汇编课程设计论文打字练习">汇编课程设计论文打字练习</a></p><div class="gd-g tail-info"><div class="gd-g-u gd-u-11-24"><span title="5分,4人评"><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b></span></div><div class="gd-g-u gd-u-1-4">20页</div><div class="gd-g-u gd-u-7-24">2财富值</div></div></div><div class="item"><p class="doc-title"><b class="ic ic-doc"></b><a href="/view/4562110a581b6bd97f19ea89.html" class="logSend" data-logsend='{"send":["view","relateDoc",{"from":"related","right":"docClick","copyright":"1"," listNo":"3"}]}' target="_blank" title="汇编课程设计打字练习课程设计论文">汇编课程设计打字练习课程...</a></p><div class="gd-g tail-info"><div class="gd-g-u gd-u-11-24"><span title="4分,25人评"><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-on"></b><b class="ic ic-star-s-off"></b></span></div><div class="gd-g-u gd-u-1-4">36页</div><div class="gd-g-u gd-u-7-24">5财富值</div></div></div><div class="item"><p class="doc-title"><b class="ic。
汇编程序设计 打字游戏. 24docx
汇编程序设计打字游戏. 24docx计算机与信息工程学院《汇编语言》课程设计打字游戏的设计专业:计算机科学与技术班级:控制11-2姓名:蔡磊学号:24指导教师:郝维来2013年6月28日AbstractWith the continuous development of the computer updates, a significant role in all areas of application. Assembly language is presented to the user computer can use the fastest and the best language in the world. Microcomputer principle and interface technology as the basic knowledge of computer science, in spite of the high speed development of computer science, but the basic principles remain the same, learning and mastering the microcomputer principle and interface technology that knowledge is very important, through the understanding of the knowledge can be simple to write some classical control procedures in daily life.This course is designed to design a keyboard typing games, through the assembly language programming to achieve through the keyboard to control the end of the game start, pause, etc. Should not only have strong theoretical knowledge as foreshadowing, must also have the ability of integrating theory with practice. In terms of programming, invoking macros, use BIOS and DOS interrupt function, and debugging. Need to have confidence and patience to overcome the difficulty.目录I.正文1.背景分析及意义 (1)2.总体设计思想 (1)3.完成主要功能 (1)4.软件环境要求 (2)5.程序流程图 (2)6.使用说明 (5)II.设计总结 (8)III.参考文献 (8)IV.程序清单 (9)1.背景分析及意义随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提供全套毕业设计,欢迎咨询汇编语言课程设计报告程序题目:打字练习程序学生姓名:XX班级:2010级计算机科学与技术专业4班学号:XXX院系:计算机科学学院指导教师:XXX目录1设计目的本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。
通过课程设计,主要达到以下目的:1. 增进对汇编语言的认识,加强用汇编语言编程的能力;2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;5. 掌握屏幕输出显示的设计方法。
2概要设计2.1 系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。
2.字母自动落下。
3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。
4.按下“Ese”键则程序返回到主界面。
5.按空格键游戏暂停。
6.在主界面按“E”则程序退出。
打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。
对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。
2.2主模块框图及说明是否否是是图2-1程序设计流程图程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER 进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。
核心模块的流程大体如下面的流程图图2-1:3 详细设计3.1 主模块及子模块说明主界面是程序的初始入口,也是其他功能模块的接入点。
主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。
子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)3.2 各模块详细设计3.2.1主界面模块当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序还是终止练习退出程序。
所以,在这里我们需要设置一个程序,该程序要判断键盘键入的字符,我们不妨规定ESC键和ENTER键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入ESC后,退出程序;当键盘输入为ENTER时进入打字练习程序。
单元程序如下:data segmentZK db "HELLO,WELCOME TO HERE!$"no db "My name isXX,my student number is:XX.$"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!$";以上设置主界面的显示方式。
clear_screen 00d,00d,24d,79dInit_game 00d,00d,0ah,dl,80d,nextsign1Init_game 24d,00d,0ah,dl,80d,nextsign2Init_game 00d,00d,0ah,dh,25d,nextsign3Init_game 00d,79d,0ah,dh,25d,nextsign4menu 05d,15d,ZK ;菜单信息的宏调用menu 07h,15d,nomenu 09d,15d,megmenu 11d,15d,meg1menu 13d,15d,meg2menu 15d,15d,meg3menu 17d,15d,meg4put: mov ah,02h ;设置光标位置mov bh,00hmov dh,22dmov dl,33dint 10hmov ah,01h ;从键盘输入任意字符int 21hcmp al,0dhje speed3cmp al,45hje exit以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单显示后的光标位置,以方便使用者的操作。
in_cycle:add cx,01hcmp cx,1000jne in_cyclepush dxmov ah,06h ;从键盘输入字符mov dl,0ffhint 21hpop dxjz passcmp al,1bh ;如果键入ESC,则返回主菜单je to_start1cmp al," " ;如果键入SPACE,则游戏暂停je pausecmp al,[di] ;输入字母正确!则字母消失je disappearto_start1: ;返回主菜单jmp start上述程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中,则AL中即为由键盘键入的字符。
在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序开头部分的宏定义已经令CR为0DH),如果是的话,程序将跳转到程序disappear,disappear是定义的又一个程序,该程序即为打字练习程序的核心部分。
如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMP AL,1BH来实现,其中1BH是E键的ACSII码的十六进制的表示。
如果是E键的话,程序将跳转到TZD_1子程序,再通过TZD_1程序来判断是否要退出打字练习程序。
如果键盘键入的既不是ENTER也不是E键的话,程序将继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。
3.2.2随机字母产生模块当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列的程序。
程序段如下:letters db "jwmilzoeucgpravskntxhdyqfb"db "iytpkwnxlsvxrmofzhgaebudjq"db "nwimzoexrphysfqtvdcgljukda"letters_bak db "jwmilzoeucgpravskntxhdyqfb"db "iytpkwnxlsvxrmofzhgaebudjq"db "nwimzoexrphysfqtvdcgljukda"letter_counter db 0begin: clear_screen 01d,01d,23d,78d ;清屏宏调用clear_screen 01d,01d,23d,78dInit_game 23d,01d,01h,dl,78d,nextsign5mov ah,02hmov bh,00hmov dh,01hmov dl,01hint 10hmov cx,00hlea si,letters上述的程序段中,begin实现了输出的字符的随机显示,当然这个随机是我们要事先通过自己随机定义一段由26个字母随机组成的序列,然后由begin来调用,从而间接来实现随即字母的产生。
Begin段利用了INT10,其功能是设置屏幕显示方式,灵活的利用INT10丰富的指令功能,可以巧妙的设计出想要的程序来。
INT10中断规定,DH和DL共同控制着字符输出的位置,其中DH为字符输出的行标,DL为字符输出的列标,通过改变DH 和DL的值,可以改变字符在命令符输出屏幕上的位置;如果AH=09H时,则AL=字符,BL则是控制着输出的字符属性或颜色;计数器CX中存放的则是重复输出字符的个数。
本程序中令CX中存放78,也就是说loop循环程序将循环78次,程序的输出为78个字符,当loop循环程序运行结束之后,程序将执行下一条指令,调用DAZIRUKOU子程序。
使得程序继续运行,让用户按照程序自动产生的字符串来进行打字练习。
3.2.3字母落下模块程序自动进入打字功能,自动落下字符,等待键盘输入字符以此来判断输入者想什么,如果键盘输入与预期的相符合则程序自动执行相关功能。
如果输入字符与落下字符相同,程序执行当前字母消失和产生下一落下字母的功能,字母落下功能的实现是通过逐行替换的方法实现的,字母在当前行出现会有一个延迟时间,当过了这个延迟时间时,程序执行当前位置清空操作,并在下一行显示上一行的字母。
代码如下:hit: mov ah,02hmov bh,00hmov dh,01hmov dl,present_positionint 10hmov al,[di] ; 出现下一个新字母的数法add al,7cmp al,7ahja convey_lettermov ah,0ahmov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01hjmp nextcycleconvey_letter:sub al,7ahadd al,61hmov ah,0ahmov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01hjmp nextcycleclear_screen 01,01,23,78mov ah,02hmov bh,00hmov dh,11dmov dl,20dint 10hinc dhinc dhmov ah,02hmov bh,00hint 10hdisappear: ;击中字母后输出空格pop cxpop cxmov ah,0ahmov al," "mov bh,00hmov cx,01hint 10hjmp hit3.2.4暂停模块如果输入空格,则程序执行暂停功能,暂停功能的实现是通过以下方法实现的,当从键盘输入空格时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时,程序收到暂停结束指令,跳转回到主程序模块,继续执行主模块的功能。