打字计时练习程序设计微机原理课程设计
微机课设打字计时程序
目录一、设计要求 (1)二、设计目的 (1)三、设计的具体实现 (1)1.系统概述 (2)2.软件程序设计 (3)四、结论与展望 (14)五、心得体会及建议 (15)六、参考文献 (16)打字计时练习设计报告一、设计要求本系统中,要求所需执行的操作由相应的开关状态反映,其驾驶操作与灯光信号对应关系如下:。
1)在缓冲区中预放了一些字母,程序运行时,可按照屏幕上显示的小写字母进行输入练习;2)每输入完一行按回车键后,可显示出练习输入的时间。
二、设计目的通过课程设计,主要达到以下目的:1. 使学生增进对汇编语言的认识,加强用汇编语言编程的能力。
2. 使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
3. 使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。
4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中。
5. 进一步掌握屏幕输出显示的设计方法。
三、设计的具体实现1.系统概述1.1设计环境程序主要利用Masm for window集成实验环境来编辑、编译、运行和调试。
Masm for Windows 集成实验环境是一个简单易用的汇编语言的学习软件,它具有错误信息自动定位、关键字实时帮助(动画演示汇编指令执行过程)、语法着色、无限的撤消与恢复、WORD式的查找、替换、定位、支持中文长文件名等功能。
程序中也广泛的运用Dos和Bios功能。
DOS是IBM PC系列微机的操作系统(现在的微机仍能运行DOS,而且新的操作系统也能继续提供几乎所有的DOS功能调用)负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。
DOS的功能调用不依赖于具体的硬件系统。
1.2设计思路将打字计时练习程序的功能分块实现成子程序、宏指令和中断等形式,并通过主程序将它们沟通起来,从而最终实现用程序来打字计时练习的目标。
打字计时练习程序设计微机原理课程设计 精品
摘要 (1)1 设计任务 (2)1.1初始条件 (2)1.2要求完成的主要任务 (2)1.3设计目的 (2)1.4设备环境 (2)2 方案比较与认证 (3)2.1在缓冲区中预放一些字母的方法及比较 (3)2.2显示出练习的时间的方法及比较 (3)3 软件设计方案 (4)3.1软件设计思想 (4)3.2程序流程图 (5)3.2.1主程序流程图 (5)3.2.2其他子程序原理及流程图 (6)4 程序调试及问题分析 (12)4.1调试记录 (12)4.2调试中出现的问题 (13)结束语 (14)参考文献 (15)附录 (16)微机原理对于我们自动化的学生来说是一门非常重要的基础课程,它与以往的课程不太相同,它的实践性非常的强,其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法。
加强我们的自身解决问题的能力,通过对题目的了解,进而对基本编程方法更加熟悉,使我们可以更加熟练的使用汇编语言,来实现基本的功能。
对于打字程序的设计,需考虑到计算机内各种数制之间的转换,考虑到界面等问题,对于程序的编写、调用应灵活运用。
关键词:汇编语言 DOS调用子程序调用打字计时器打字计时练习程序设计1 设计任务1.1初始条件设计一个打字计时练习程序,在屏幕实现,并显示正确率及计时。
1.2要求完成的主要任务1.在缓冲区中预放一些字母,运行时,可按照屏幕上显示的字母输入练习。
2.按某个键开始练习,每输入完一行按回车键后,可显示出练习的时间及正确率。
1.3设计目的熟悉与掌握有关键盘和时间的中断及字符显示技术。
1.4设备环境在本设计中,所用到的设备环境如下所示:A.计算机一台;B.MFPCI98集成实验环境;2 方案比较与认证2.1在缓冲区中预放一些字母的方法及比较一是在数据段中预先存放一字符串,在程序运行时直接按顺序提取这一字符串;二是在缓冲区中预先存放字符串后,再在程序运行时随机提取字母进行显示。
打字练习程序
信息科学与技术学院微机原理与接口技术课程设计课题名称:打字练习程序学生姓名:学号:专业、年级:指导教师:时间:1、题目及要求:1.1、题目:打字练习程序1.2、要求:1)、缓冲区中预放了一些字母2)、运行时,可按照屏幕上显示的字母输入练习3)、当按结束,可显示出练习输入的时间,并且能显示出正确率。
4)、要求界面美观。
2、功能设计:2.1、功能模块:主程序模块-----主要是随机产生字符并将字符送入缓冲区,调用其他子程序和宏设置窗口及时间、字符总数和正确个数。
打字结果计算与显示模块( UseTimeAndOut,RightRata_out)-----主要计算所用时间及正确率并输出。
设置字符颜色模块(clew_char)-----主要设置打字时缓冲区字符和打字区字符的颜色,包括错误时字符的颜色显示。
字符满行处理模块(isFullLine)-----主要功能是当字符输入满行时进行换行。
输出模块(OutTime,btod_out)-----输出程序运行时的时间。
统计模块(Tongji)-----统计字符个数和正确个数并记录时间。
宏的作用:清屏(Clear)----- 用于按要求清理屏幕(不同颜色),以便产生想要的窗口。
设置光标位置(SETGB)-----用于移动光标位置,以便按要求输出。
读光标位置(READGB)-----用于读取当前光标位置。
提示(Tishi)-----用于输出提示语句。
2.2、功能图:图1 功能图3、详细设计:3.1、设计方法:根据设计要求,该课程设计只应用了些简单的函数调用,中断,宏调用。
其中随机产生字符的实现是通过调用中断(ah=2ch,int 10)取系统时间的1/100 来得到一组随机数,把这些随机数当做指针,然后取指针对应的字符表中相应的字符,得到一串字符。
在把结果显示到屏幕上时将数据拆分后输出到屏幕上。
如‘123’在屏幕上显示时必须一个一个输出,还有在输出小数点时也采取了相应的办法。
打字计时练习
学生课程设计(论文)题目:打字计时练习学生姓名:李*学号:************所在院(系):计算机学院专业:计算机科学与技术班级:计算机科学与技术(1)班指导教师:李**2011年 12 月 31日攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写。
摘要微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握DOS开发方法,为以后进行实际的软件应用开发奠定良好的基础。
本设计是利用Masm for window集成实验环境来实现的打字练习计时程序,在程序中利用自编的中断程序kbint检测按键时产生的中断,并把按键的扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,既只解释了可显示字符(入英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只作字符码0来处理。
另外加入一个菜单模块,增加了程序的观赏性。
关键词: 打字计时,寄存器,缓冲区,中断向量1.1设计任务设计一个在键盘上练习打字并能统计时间的程序。
通过它练习英文打字练习,并能够统计时间。
屏幕上显示出提示信息和练习例句,按照例句从键盘上输入字母即可,每输入完一行后按回车键,可显示出练习输入的时间和下一行例句。
按Esc键可退出程序。
1.2设计要求在本系统中,要求所需执行的操作由相应的开关状态反映,其驾驶操作与灯光信号对应关系如下:。
1)自行编制键盘中断和时间中断处理程序,并保存原中断向量,程序运行时,使用自编的中断向量处理程序,程序退出时,恢复中断向量;2)在缓冲区中预放了一些字母,程序运行时,可按照屏幕上显示的小写字母进行输入练习;3)每输入完一行按回车键后,可显示出练习输入的时间。
微机原理课程设计打字
微机原理课程设计打字一、课程目标知识目标:1. 理解微机原理的基本概念,掌握计算机硬件的基本组成及其工作原理;2. 学习并掌握打字的基本技巧,熟悉键盘布局,了解打字的正确姿势及指法;3. 了解打字软件的基本功能,能够运用软件进行打字练习和测试。
技能目标:1. 培养学生具备一定的打字速度和准确性,提高信息处理能力;2. 学会使用打字软件进行自主练习,养成独立学习的良好习惯;3. 能够运用所学知识,解决实际打字过程中遇到的问题。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣和好奇心,激发学习积极性;2. 培养学生具备耐心、细心的品质,提高克服困难的自信心;3. 增强团队合作意识,学会在小组合作中互相学习、互相帮助;4. 培养学生遵守网络道德规范,养成良好的计算机使用习惯。
课程性质:本课程为实践性较强的课程,注重理论知识与实际操作相结合。
学生特点:学生处于掌握基本计算机知识的阶段,对新鲜事物充满好奇,但学习耐心和自律性有待提高。
教学要求:结合学生特点,注重启发式教学,以学生为主体,教师为主导,培养学生的实际操作能力。
在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能达到课程目标。
将目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 计算机硬件基本组成:讲解微机原理中的CPU、内存、输入输出设备等硬件组成,及其工作原理;相关教材章节:第一章 计算机硬件基本组成2. 键盘指法训练:介绍键盘布局,教授打字的正确姿势及指法,进行基础指法练习;相关教材章节:第二章 键盘与指法3. 打字技巧与练习:讲解打字的基本技巧,如盲打、连打等,组织学生进行打字练习;相关教材章节:第三章 打字技巧与练习4. 打字软件的使用:介绍打字软件的基本功能,教授如何使用软件进行打字练习和测试;相关教材章节:第四章 打字软件的使用5. 实践操作与提高:组织学生进行实际打字操作,提高打字速度和准确性,针对学生个体差异进行指导;相关教材章节:第五章 实践操作与提高教学内容安排与进度:第一周:计算机硬件基本组成学习;第二周:键盘指法训练;第三周:打字技巧与练习;第四周:打字软件的使用;第五周:实践操作与提高,进行总结测试。
汇编语言打字练习程序课程设计报告
课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室ﻩ2010年12月17日安徽理工大学课程设计(论文)成绩评定表摘要汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。
鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。
打字练习是计算机常用的小应用程序,可以给想练习打字的人提供一个好的练习空间。
本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。
关键词:功能模块,核心代码,随机字符,模块调用,功能分析目录1设计目的ﻩ错误!未定义书签。
2概要设计 .......................................................................... 错误!未定义书签。
2.1系统总体分析 ...................................................................................................... 错误!未定义书签。
2.2主模块框图及说明ﻩ错误!未定义书签。
3 详细设计 ......................................................................... 错误!未定义书签。
3.1主模块及子模块说明 ........................................................................................ 错误!未定义书签。
3.2各模块详细设计ﻩ错误!未定义书签。
3.2.1主界面模块.................................................................................................. 错误!未定义书签。
打字练习计时程序设计说明书
学号:课程设计题目打字练习计时程序设计学院专业班级姓名指导教师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)摘要计算机的不断更新发展,在各个领域的应用越来越多。
而汇编语言是计算机能够提供用户使用的最快而又最好最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可。
微机课设报告 打字游戏汇编语言的设计
学号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”,则退出;从键盘上输入其它字符,则等待重新输入。
打字计时练习程序设计微机原理设计
录目
书明说计设程课》计设口接与理原机微《学大工理汉武
1
器时计字打 用调序程子 用调 SOD 言语编汇�词键关
。用运活灵 应用调、写编的序程于对�题问等面界到虑考�换转的间之制数种各内机算计到 虑考需�计设的序程字打于对。能功的本基现实来�言语编汇用使的练熟加更以 可们我使�悉熟加更法方程编本基对而进�解了的目题对过通�力能的题问决解 身自的们我强加 。法方用使和程编、理原作工的式方 SOD 与机算计型微握掌面全 �识知学所用运合综于在的目计设程课其 �强的常非性践实的它 �同相太不程课的 往以与它�程课础基的要重常非门一是说来生学的化动自们我于对理原机微
段据数 ATAD 在放先预等元单时计、表址地其及句例字打的习练上盘键在
想思计设件软 1.3
案方计设件软
3
书明说计设程课》计设口接与理原机微《学大工理汉武
5
图程流序程主 1-3 图 束结
果结示显上幕屏
态状字打出退 Y 毕完入输 否是符字中区冲缓 N �18 于等符字 Y
N
符字入输字打盘键
出输串符字载装
。用作的器时定出退到起只上际实�断判整调的值数
tnuoc 元单数计在录记数次的断中器时定�中序程行例断中此在。次一时计�句 例个一入输每。成完来 tnilC 序程理处断中器时定的编自用利计统间时字打
nim�时 06 到打值数计 ces 当�1 加元单数计 ces�时 81 为值数计的 tnuoc 当�中
N
始开
块模出输及间时字打算计�4�
书明说计设程课》计设口接与理原机微《学大工理汉武
9
束结
符字出输 N 1=FZ
Y
较比行进 1 与 pb Y 1=FA 较比行进 3 与 is�1+iS Y 0=FZ N Y 较比行进 1 与 pb N 符字出输 0=pd 0=FZ 较比行进’0’与 ld ’’+ ’0’+ld,ld 入送容内]is[pmet 将 1=FZ 0 为否是 is 针指断判 1-iS 位高 xa 蔽屏,01/lB 容内中 XB 出输 N N
微机原理课程设计-打字练习(正文)
打字练习程序1设计目的这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘Q’退出。
通过课程设计,主要达到以下目的:(1)增进对汇编语言的认识,加强用汇编语言编程的能力;(2)掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;(3)了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;(4)通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;(5)掌握屏幕输出显示的设计方法。
2概要设计图2-1 主程序流程图2.1 系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:(1)由26字母乱序组成一行显示行;(2)字母自动落下;(3)从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下;(4)按下“Esc”键则程序返回到主界面;(5)按空格键游戏暂停;(6)在主界面按“Q”则程序退出。
打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。
对于以上几个部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。
2.2主模块框图及说明程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令:ENTER进入打字界面开始打字,“Q”退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。
核心模块的程序流程大体如下面的流程图图2-1。
3详细设计3.1 主模块及子模块说明主界面是程序的初始入口,也是其他功能模块的接入点。
主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。
子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)。
打字计时练习程序设计
目录1 设计目的 (3)2 设计任务 (3)3 设计过程 (4)3.1 方案比较与认证 (4)3.2 程序设计思想 (4)3.3 程序流程图设计 (5)3.3.1 主程序流程图设计 (5)3.3.2 其他子程序原理及流程图 (6)3.4 调试过程及结果 (11)3.4.1 调试过程出现的问题及解决 (11)3.4.2 程序运行结果 (12)4 结束语 (14)参考文献 (15)附录 (16)摘要作为一门新兴技术,微机及接口技术的发展在二十至二十一世纪非常迅速,现在对于技术的进步已成为了不可或缺的部分。
微机的应用十分的广泛,种类也很丰富,而且现在科技的进步使得人们对微机的运用变得越来越成熟。
然而提到微机,必不可少的便是汇编语言了,虽说现在的各种高级语言如:C语言、VB等早已变得比汇编语言更加适合于编程人员的使用,但是作为一个想真正学好微机的人,汇编语言是必不可少的工具。
相对于高级语言,汇编更加“接近”硬件,懂得汇编的人员在出现故障时可以更容易发现问题所在,用汇编编写程序可以更加清晰地知道程序的执行过程。
此外,用汇编语言编写的程序相对高级语言来说所占的内存要小的多,且一般执行起来要快得多。
所以,学习汇编对于我们来说仍是很有益的。
本次课程设计就是想通过运用汇编语言来编写程序以达到题目所给的要求,使得对微机(这里是8086)的知识更见牢固,也使得我们能对汇编语言更加灵活地运用。
要想顺利完成这次课程设计的任务,首先得对微机的内部结构有一定的了解,还要有对汇编语言的掌握与熟悉,比如各种指令的灵活运用,各种语句语法的运用以及对程序的灵活调制。
本次课程设计的任务是编写一个打字计时练习的程序,这将会比平时的学习与练习都复杂得多,因此在完成这次课设的过程势必会遇到不少挑战,但与此同时也会给予更多的锻炼和提高。
关键词:微机原理汇编语言打字计时程序调制打字计时练习程序设计1 设计目的微机原理是所需掌握的现代科学中必不可少的一门,微机原理和接口技术的运用以及渗入到生活的方方面面,在人们的技术进步过程中有必不可少的作用。
31微机原理课程设计打字计时练习
课程设计题目打字计时练习的程序学院自动化专业电气工程及其自动化班级电气1101姓名李萌指导教师石云2014 年 1 月11 日课程设计任务书学生姓名:李萌专业班级:电气1101指导教师:石云工作单位:自动化学院题目: 打字计时练习的程序初始条件:在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间。
按Q退出程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:12月30日~12月31日:收集资料,方案选择1月2日~1月6日:整体流程,程序细节,调试程序1月7日~1月8日: 课程设计报告撰写1月9:交报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日摘要 (1)1. 设计概述 (2)1.1设计任务 (2)1.2设计要求 (2)1.3设计目的 (2)1.4设备环境 (2)2. Masm for window集成实验环境 (3)2.1 Masm for window集成实验环境介绍 (3)2.2 DOS中断介绍 (3)3.课程设计的思路及内容 (5)3.1.硬件设计 (5)3.2软件设计 (6)3.3程序流程图 (6)4.代码设计 (8)4.1功能模块说明 (8)4.1.1定义数据段,设置主要参数: (8)4.1.2代码段 (8)4.1.3使用子程序分化各子功能 (8)4.2系统运行过程描述 (17)4.3程序的调试与运行 (17)4.3.1打字练习的运行情况 (17)4.3.2结果分析 (19)4.4调试中出现的问题 (19)5.总结 (20)参考文献 (22)微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握DOS开发方法,为以后进行实际的软件应用开发奠定良好的基础。
微机原理课程设计之打字练习
STACK SEGMENTDB 256 DUP(0)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER DB 16H DUP(0) ;缓冲区大小BUFPT1 DW 0 ;缓冲区1BUFPT2 DW 0 ;缓冲区2KBFLAG DB 0 ;参数,80H表示允许,00表示不允许PROMPT 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,0DB'789-456+1230.'OLDCS9 DW?;9号中断向量地址OLDIP9 DW?;9号中断向量首地址STR1 DB'I AM SORRY THAT I CAN NOT FINISH THIS JOB IN TIME.';句子1 DB 0DH,0AH,'$'STR2 DB'IT IS A HARD WORK TO DO THIS DESIGNING HOMEWORK.';句子2 DB 0DH,0AH,'$'STR3 DB'THERE ARE SOME GREY CLOUDS IN THE SKY.';句子3DB 0DH,0AH,'$'STR4 DB'SHE ALWAYS HAS HER MEAL IN DORMITORY.';句子4DB 0DH,0AH,'$'STR5 DB'I DO NOT LIKE WINTER,BECAUSE IT IS SO COLD.';句子5 DB 0DH,0AH,'$'STR6 DB?CRLF DB 0DH,0AH,'$'COLON DB':','$'EVENSADDR DW STR1,STR2,STR3,STR4,STR5,STR6;*****定义时间参数******COUNT DW 0 ;计时器计数SEC DW 0 ;秒MIN DW 0 ;分HOURS DW 0 ;时SAVE_LC DW 2 DUP(?) ;1C向量地址IN_BUF DB 100 DUP(0) ;保存输入的数据IN_LEN DW 0 ;输入的句子长度STR_LEN DW 0 ;例句长度TIPS DB'TOTAL_LEN=','$'TIPS1 DB' CORRECT_LEN=','$'TIPS2 DB' INCORRECT_LEN=','$'TIPS3 DB' TIME:','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKMAIN PROC FARSTART:MOV AX,STACKMOV SS,AXMOV SP,OFFSET TOPPUSH DS ;保护现场SUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AX; ******将原中断向量09H保存在自设的单元中******MOV AH,35H ;取中断向量的功能调用MOV AL,09HINT 21HMOV OLDCS9,ESMOV OLDIP9,BX;******设置自编的处理程序的中断向量******PUSH DSMOV DX,SEG KBINT1 ;自编中断类型程序地址放入DSMOV DS,DXMOV DX,OFFSET KBINT1;自编中断类型程序偏移地址放入DXMOV AL,09HMOV AH,25H ;设置中断向量功能调用INT 21HPOP DS;****** 将原中断向量1CH保存在自设单元****** MOV AH,35HMOV AL,1CHINT 21HMOV SAVE_LC,BXMOV SAVE_LC+2,ES;******** 设置自编处理程序的中断向量********PUSH DSMOV DX,SEG CLOCKMOV DS,DXMOV DX,OFFSET CLOCKMOV AL,1CHMOV AH,25HINT 21HPOP DS;******键盘中断******IN AL,21H ; 键盘中断AND AL,11111100BOUT 21H,AL;***** 设置显示方式******FIRST: MOV AH,00HMOV AL,03H ;设置显示器模式 02H80×2516 色文本 INT 10H;******* 显示提示信息*******MOV DX,OFFSET PROMPT ;显示提示信息MOV AH,09HINT 21H;******在屏幕上显示例句******MOV SI,0NEXT: MOV DX,SADDR[SI] ; 显示例句MOV AH,09HINT 21H;****** 初始化变量******MOV COUNT,0 ;设置初值MOV SEC,0MOV MIN,0MOV HOURS,0MOV DI,0MOV IN_LEN,0STIFOREVER:CALL KBGET ;调用键盘获取信息TEST KBFLAG,80H ; 检测是否有效JNZ ENDINT ; 无效转PUSH AXCALL DISPCHARPOP AX;保存输入的字符MOV BYTE PTR IN_BUF[DI],ALINC DIINC IN_LENCMP AL,0DHJNZ FOREVERMOV AL,0AHCALL DISPCHAR;防止之后的操作获取出错MOV BYTE PTR IN_BUF[DI],0DHMOV BYTE PTR IN_BUF[DI+1],0AHMOV BYTE PTR IN_BUF[DI+2],'$';输入的实际长度DEC IN_LEN;统计CALL CNT_PERCENT;*****显示时间*******CALL DISPTIMELEA DX,CRLFMOV AH,09HINT 21H;******显示例句是否结束******ADD SI,2CMP SI,6*2JNE NEXTJMP FIRST;******原来的中断向量******** ENDINT: CLIPUSH DSMOV DX,SAVE_LCMOV AX,SAVE_LC+2MOV DS,AXMOV AL,1CH ;恢复中断向量1CHMOV AH,25HINT 21HPOP DSPUSH DSMOV DX,OLDIP9MOV AX,OLDCS9MOV DS,AXMOV AL,09HMOV AH,25HINT 21HPOP DSSTIRETMAIN ENDP;.........计算正确率CNT_PERCENT PROCPUSH AXPUSH BXPUSH CXPUSH SIPUSH DI;取例句地址MOV DI,SADDR[SI]MOV STR_LEN,0;计算当前句子长度CNT_LEN:INC STR_LENINC DICMP BYTE PTR[DI],0DH ; 判断句子是否结束,如果[DI]=0DH,则结束JNE CNT_LEN;判断输入的句子与当前显示的句子那个长,以短的句子为基础比较MOV AX,IN_LENCMP AX,STR_LENJNA COMPARE ;IN_LEN<=STR_LEN转到COMPAREMOV AX,STR_LENCOMPARE:SUB BX,BX ;清零,保存正确的字符个数MOV CX,AX ;设置比较的次数MOV SI,SADDR[SI] ;取句子地址LEA DI,IN_BUF ;取输入的句子地址;获取相同的字符个数COM:MOV AL,BYTE PTR[SI]CMP AL,BYTE PTR[DI]JNE NEXT1INC BX ;字符相等加1NEXT1:INC SIINC DILOOP COMPUSH BX ;保存正确的个数MOV AX,STR_LEN ;例句长度LEA DX,TIPSCALL SHOW_MARK ;显示例句长度POP AX ;正确个数PUSH AX ;保存正确的个数LEA DX,TIPS1CALL SHOW_MARK ;显示正确个数POP BXMOV AX,STR_LENSUB AX,BX ;求得错误个数LEA DX,TIPS2CALL SHOW_MARK ;显示错误个数LEA DX,TIPS3 ;显示TIMEMOV AH,09HINT 21HPOP DIPOP SIPOP CXPOP BXPOP AXRETCNT_PERCENT ENDPSHOW_MARK PROCPUSH AXMOV AH,09HINT 21HPOP AXMOV CX,10DCALL DECDIVMOV CX,1DCALL DECDIVRETSHOW_MARK ENDP;*******定时器中断处理程序********CLOCK PROC NEARPUSH AXPUSH DSMOV AX,DATA ; 从主程序的数据段取出段地址MOV DS,AXINC COUNTCMP COUNT,18 ; 判断是否到一秒JNE LL ; 不到一秒,退出MOV COUNT,0 ; 将计数单元清零INC SEC ; 秒位加一CMP SEC,60 ; 判断是否到一分JNE LL ; 不到一分,退出MOV SEC,0 ; 将秒位清零INC MIN ; 分位加一CMP MIN,60 ; 判断是否到一小时JNE LL ; 不到一小时,退出MOV MIN,0 ; 将分位清零LL: POP AX ;MOV DS,AX ;POP AX ;STI ;IRETCLOCK ENDPINCT PROC NEARMOV WORD PTR[BX],0ADD BX,2INC WORD PTR[BX]CMP WORD PTR [BX],60JNE EXITCALL INCTEXIT:RETINCT ENDP;****显示打字时间*******DISPTIME PROC NEAR ;显示时间主段PUSH AXMOV AX,MIN ;分移动到AX寄存器CALL BINDEC ;显示数字MOV BX,0MOV AL,':'MOV AH,0EH ;显示冒号INT 10HMOV AX,SEC ;秒移动到AXCALL BINDECPOP AXMOV BX,0MOV AL,':'MOV AH,0EHINT 10HMOV BX,COUNTMOV AL,55D ;百分秒MUL BLCALL BINDECRETDISPTIME ENDP;*******将二进制转换为十进制显示时间******** BINDEC PROC NEARMOV CX,100D ;显示百位CALL DECDIVMOV CX,10D ;显示十位CALL DECDIVMOV CX,1D ;显示个位CALL DECDIVRETBINDEC ENDPDECDIV PROC NEARMOV DX,0DIV CXMOV BX,0ADD AL,30HMOV AH,0EHINT 10HMOV AX,DXRETDECDIV ENDP;**********获取键盘键入的信息***********KBGET PROC NEARPUSH BXCLIMOV BX,BUFPT1 ;标志缓冲区大小CMP BX,BUFPT2JNZ KBGET2CMP KBFLAG,0 ;!=00H的时候,一直获取键盘JNZ KBGET3STICMP BX,3BHPOP BXJMP KBGETKBGET2:MOV AL,[BUFFER+BX]INC BXCMP BX,16HJC KBGET3MOV BX,0KBGET3:MOV BUFPT1,BXPOP BXRETKBGET ENDP;*********键盘中断处理程序**********KBINT1 PROC NEARPUSH BXPUSH AXIN AL,60H ;从60H端口读入扫描码PUSH AX ;保存堆栈段IN AL,61H ;置键盘应答控制信号OR AL,80H ;先将61H端口的D7位置1OUT 61H,AL ;读数据AND AL,7FH ;将61H端口的D7位置0OUT 61H,ALPOP AX ;从堆栈中取出扫描码TEST AL,80H ;检查扫描码的D7位JNZ KBINT2 ;D7为1,表示释放键操作,转到出口MOV BX,OFFSET SCANTAB ;查表输出字符XLAT SCANTAB ; 查表CMP AL,0JNZ KBINT4MOV KBFLAG,80HJMP KBINT2KBINT4:MOV BX,BUFPT2MOV [BUFFER+BX],ALINC BXCMP BX,16HJC KBINT3MOV BX,0KBINT3:CMP BX,BUFPT1JZ KBINT2MOV BUFPT2,BXKBINT2: CLIMOV AL,20HOUT 20H,ALPOP AXPOP BXSTIIRETKBINT1 ENDPDISPCHAR PROC NEAR ;显示字符PUSH BXMOV BX,0MOV AH,0EH ;显示一个字符在AH里 INT 10H ;显示一个字条符POP BXRETDISPCHAR ENDPCODE ENDSEND START。
打字练习汇编语言程序程序设计
目录1 方案论证 (1)1.1题目要求 (1)1.2算法说明 (1)1.2.1输入/输出算法 (1)1.2.2时间计算算法 (2)1.2.3正确率计算算法 (2)2程序流程图 (3)2.1主程序流程图 (3)2.2时间计算流程图 (4)2.3正确率计算流程图 (5)3.设计关键问题 (7)3.1输入输出 (7)3.1.1 输出显示信息 (7)3.1.2 输入十个字符 (8)3.2 输入字符串所用时间计算 (9)3.3 正确率判断 (10)4.调试运行结果分析 (12)心得体会 (15)参考文献 (16)附录 (17)打字练习汇编语言程序程序设计1 方案论证1.1题目要求本次《微机原理与接口技术》课程设计的题目是打字练习汇编语言程序设计,要求在屏幕输出提示信息及一串有十个字符的字符串的同时开始记录系统时间,当输入十个字符后,再次记录系统时间,计算输入字符串的时间,及输入字符串的正确率,并将最终结果显示在屏幕上。
只有完全正确才能进入下一字符串的练习,并最后显示赞赏提示信息,否则,继续练习该字符串的输入,知道全部输入正确;一串字符串输入结束后,如果不想继续打字练习,则按‘1’退出打字练习如果想继续进行打字练习,则按任意键进入下一字符串的练习,直到练习完三串字符串,按‘1’退出。
1.2算法说明打字练习汇编语言程序设计的主要算法是进行时间的计算和正确率的判断,并将最后结果显示在屏幕上。
1.2.1输入/输出算法DOS功能调用的过程为:首先,将DOS功能调用号送入寄存器AH中,其次,如果序言按要求给定输入参数(有的不需要输入参数),最后,写入终端指令INT21H。
DOS的输入输出包括单字符输入输出和多字符输入输出。
(1)单字符输入输出算法单字符的输入,是DOS的01H号功能调用,没有输入参数,输出参数是AL=要输入字符的ASCII码。
单字符的输出,是DOS的02H号功能调用,输入参数为DL=要输出的字符的ASCII码,无数除参数。
微机原理课程设计-打字练习附页
课程设计任务书学生姓名:专业班级:自动化0806 指导教师:杨胤铎工作单位:自动化学院题目: 打字练习程序初始条件:按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失。
按Q退出程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:1月10日~1月12日:收集资料,方案选择1月13日~1月17日:整体流程,程序细节1月18日~1月20日;调试程序,报告撰写1月21日:交设计报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月这次汇编程序设计题目是打字练习,其要求的要实现的功能是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘Q’退出。
从设计目的,概要设计,详细设计,程序调试以及心得体会五部分来对该程序的设计进行详细解释和说明,并且结合了流程图和实际界面截图。
从构思,编写,调试到完整的实现,每一部分都做了深入的分析和说明。
关键词:功能模块,核心代码,随机字符,模块调用,功能分析1设计目的 (1)2概要设计 (2)2.1系统总体分析 (2)2.2主模块框图及说明 (3)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程序调试 (10)4.1运行界面分析 (10)4.2调试过程及分析............................. 错误!未定义书签。
8086微机原理打字练习程序
1课程设计题目与要求设计题目:打字练习程序课程设计内容:设计一个在键盘上练习打字的程序。
先在屏幕上显示一段文字,用户按照它在键盘上输入,如果按错键则以红色显示并报警,正确的输入,则正常显示。
课程设计目的:熟悉和掌握有关键盘ASCⅡ码,中断及字符显示技术。
课程设计要求:自行编制报警中断和显示错字红色中断处理程序,为保存原中断向量。
程序运行时,通过条件调用自编的中断向量处理程序。
程序退出时,恢复中断向量。
屏幕上显示出提示信息和练习的字符段,按照字符段从键盘上输入字符即可,每输入完一行后能自动刷新练习的字符段按Esc键可退出程序。
2相关理论知识2.1扬声器驱动PC机上的大多数I/O都是由主板上的8255(或8255A)可编程外围接口芯片(PPI)管理,用PPI输出寄存器中的PB0和PB1来控制扬声器的驱动,而8253的通道2的输出端与扬声器相连,PB0连接通道2的CKL2,PB1和通道2的OUT2通过一与非门连接扬声器,在PB0与PB1都为高电平时,由8253产生的脉冲就进入扬声器产生声音。
2.2 相关指令1)无条件转移指令无条件转移指令必须指定转移的目标地址(或称为转向地址),将程序无条件地转移到目标地址,去执行从该地址开始的指令。
如“JMP 目标地址”2)条件转移指令条件指令是根据执行该指令前标志位的状态而决定是否发生的控制转移指令。
每条指令测试不同的标志位组合,看是否满足条件。
若不满足,则继续执行跟在条件转移指令后面的指令;若满足则将程序控制指令转移到改指令给出的目标地址,去执行那里开始的程序。
如用到的“JA 目标地址”用到的标志符:JC-------CF标志为1,则转移JNC-------CF标志为0,则转移JA-------高于/不低于等于转移JB-------低于/不高于等于转移JG-------大于/不小于等于转移3)循环控制指令在设计循环程序时,可用于控制指令来控制循环是否继续。
如loop指令,其指令格式“loop 目标地址”4)子程序调用和返回指令CALL指令:实现子程序(或过程)的调用。
打字练习课程设计
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,并准备显示下一个字母。
微机原理课程设计打字练习
微机原理课程设计打字练习一概述1.课程设计分析计算机的不断更新发展,在各个领域的应用越来越多。
而汇编语言是计算机能够提供用户使用的最快而又最好最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可。
设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
通过具体的问题分析、设计、调试、运行程序。
在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。
就这个程序具体而言:调用宏,显示主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。
这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。
2. 课程设计目的1 对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
2培养综合运用所学知识,独立完成汇编程序课题的能力3 能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
4 培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
5 培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
3. 课程设计的要求1、自行编制键盘中断和时间中断处理程序,并保存原中断向量。
程序运行时,使用自编的中断向量处理程序。
程序退出时,恢复中断向量。
2、在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的小写字母输入练习。
3、每输入完一行按回车键后,可显示出练习输入的时间提高要求:改进程序,将原设计中固定的例句改为随机变化的例句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 设计任务 (2)初始条件 (2)要求完成的主要任务 (2)设计目的 (2)设备环境 (2)2 方案比较与认证 (3)2.1在缓冲区中预放一些字母的方法及比较 (3)显示出练习的时间的方法及比较 (3)3 软件设计方案 (4)软件设计思想 (4)程序流程图 (5)主程序流程图 (5)其他子程序原理及流程图 (6)4 程序调试及问题分析 (12)4.1调试记录 (12)4.2调试中出现的问题 (13)结束语 (14)参考文献 (15)附录 (16)微机原理对于我们自动化的学生来说是一门非常重要的基础课程,它与以往的课程不太相同,它的实践性非常的强,其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法。
加强我们的自身解决问题的能力,通过对题目的了解,进而对基本编程方法更加熟悉,使我们可以更加熟练的使用汇编语言,来实现基本的功能。
对于打字程序的设计,需考虑到计算机内各种数制之间的转换,考虑到界面等问题,对于程序的编写、调用应灵活运用。
关键词:汇编语言 DOS调用子程序调用打字计时器打字计时练习程序设计1 设计任务初始条件设计一个打字计时练习程序,在屏幕实现,并显示正确率及计时。
要求完成的主要任务1.在缓冲区中预放一些字母,运行时,可按照屏幕上显示的字母输入练习。
2.按某个键开始练习,每输入完一行按回车键后,可显示出练习的时间及正确率。
设计目的熟悉与掌握有关键盘和时间的中断及字符显示技术。
设备环境在本设计中,所用到的设备环境如下所示:A.计算机一台;B.MFPCI98集成实验环境;2 方案比较与认证2.1在缓冲区中预放一些字母的方法及比较一是在数据段中预先存放一字符串,在程序运行时直接按顺序提取这一字符串;二是在缓冲区中预先存放字符串后,再在程序运行时随机提取字母进行显示。
方案比较:第一种方法显示的始终是同一组字符串,对于练习来说过于单一,对练习打字得不到很好的效果。
第二种方法在显示时是在缓冲区预存的字符串中随机选取,因此具有随机性能够很好的起到练习的效果,但同时程序更为复杂。
为了实现“在缓冲区中预放一些字母”这一功能,采用了第二种方法。
显示出练习的时间的方法及比较一是在输入过程中无时间显示,只有当输入完了按回车后才能显示练习所用的时间;二是在练习的过程中始终有时间显示,即显示系统时间。
方案比较:第一种方法现实出的一段练习后的时间,第二种方法中一直有时间显示,整体效果会更好,同时,第二种方法基本包括了第一种方法,因此,选择方法二。
3 软件设计方案软件设计思想在键盘上练习的打字例句及其地址表、计时单元等预先放在DATA数据段中。
自编的中断程序kbint检测按键时产生的中断,并把按键的扫描码转换为ASCII码存入缓存区BUFFER(内存中的一个区域),这个工作和EOM 09类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,既只解释了可显示字符(入英文小写字母、数字及一些字符),其他特殊键(如组合键、双态键、功能键等)都未做解释,只作字符码0来处理。
在主程序部分保存原有09类型的中段向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。
当键盘中断处理后,主程序安排指令读取缓存区中的字符并显示在屏幕上。
在主程序的末尾,利用DOS功能恢复原09类型的中断向量,然后返回DOS。
在显示键入的字符时,还应判断字符是否为回车符(0DH)。
如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示出打字时间,然后顺序显示一个例句。
如果所存放的例句都已显示完毕,则再次从第一个例句开始显示,直至键入某一个功能(如Esc键、Shift键等)退出程序,结束打字练习。
打字时间统计利用自编的定时器中断处理程序Clint来完成。
每输入一个例句,计时一次。
在此中断例行程序中,定时器中断的次数记录在计数单元count 中,当count的计数值为18时,sec计数单元加1,当sec计数值打到60时,min 计数单元加1.因为输入完一个句子无论如何也不会到达小时级,所以对hours计数值的调整判断,实际上只起到退出定时器的作用。
加入一个显示菜单程序,使得原来的程序更具有观赏性;显示时间的子程序disptime分别将各计时单元的二进制数转换为十进制数,并以min:sec:msec的形式出来。
其中msec是有count中的计数值转换成的:Count*1s/=count*55ms此式中,是计算机系统产生的一个时间中断,每秒次程序流程图主程序流程图图3-1主程序流程图 N Y Y N 段地址初始化 产生随机字符串 打开窗口 字符等于81? 宏调用清屏 缓冲区中字符是否输入完毕 屏幕上显示结果 退出打字状态 结束 开始 装载字符串输出 键盘打字输入字符其他子程序原理及流程图打字结果计算与显示模块( UseTimeAndOut,RightRata_out)-----主要计算所用时间及正确率并输出。
设置字符颜色模块(clew_char)-----主要设置打字时缓冲区字符和打字区字符的颜色,包括错误时字符的颜色显示。
字符满行处理模块(isFullLine)-----主要功能是当字符输入满行时进行换行。
输出模块(OutTime,btod_out)-----输出程序运行时的时间。
统计模块(Tongji)-----统计字符个数和正确个数并记录时间。
宏的应用:清屏(Clear)----- 用于按要求清理屏幕(不同颜色),以便产生想要的窗口。
设置光标位置(SETGB)-----用于移动光标位置,以便按要求输出。
读光标位置(READGB)-----用于读取当前光标位置。
提示(Tishi)-----用于输出提示语句。
(1)随机数产生原理:随机产生字符的实现是通过调用中断(ah=2ch,int 10)取系统时间的1/100 来得到一组随机数,把这些随机数当做指针,然后取指针对应的字符表中相应的字符来得到一串字符。
在把结果显示到屏幕上时将数据拆分后输出到屏幕上。
(2)记录当前时间和正确个数及打个数:开始光标置位清屏提示时间输出输出正确率结束图3-2记录当前时间和正确个数及打个数部分流程图(3)正确率输出模块流程图:开始输入统计正确字符个数计算正确率整数部分输出小数点输出小数部分输出%输出结束图3-3正确率输出部分流程图(4)计算打字时间及输出模块图3-4记录当前时间和正确个数及打个数部分流程图N Y Y Y Y N 提取打字结束时系统结束时间与stime[2]做差 一分钟进位(dh+60) SF=1 ZF=0 Cl-1 Cl-stime[1] SF=1 ZF=0 一小时进位(dh+60) Ch-1 Ch-stime[1] 输出 N N 结束 开始(5)数据打印输出:N YNY NN N YY输出BX 中内容Bl/10,屏蔽ax 高位判断指针si 是否为0将temp[si]内容送入dl,dl+’0’ZF=1dl 与’0’进行比较ZF=0Si+1,si 与3进行比较 dp=0输出字符 AF=1ZF=1ZF=0 bp 与1进行比较Si-1输出字符 bp 与1进行比较 结束开始图3-5记录当前时间和正确个数及打个数部分流程图(6)改变字符颜色:所谓属性是指字符的颜色、背景颜色、是否闪烁、有没有底线等性质。
在彩色显示卡( CGA/EGA/VGA 等) 的文字模式中,颜色是用 4 个位表示,故可以表现出16 种颜色,如下表:表3-1 颜色对应的代码二进制数颜色二进制数颜色0000 黑色1000 灰色0001 蓝色1001 淡蓝色0010 绿色1010 淡绿色0011 青色1000 淡青色0100 红色1100 淡红色0101 紫红色1101 淡紫红色0110 棕色1110 黄色0111 银色1111 白色在彩色显示器里,如CGA、EGA、VGA 等,常用一个字节( 8 个位) 来表示文字颜色和背景颜色,通常以第0~3 位表示文字本身颜色;第4~6 位表示背景颜色,背景颜色只有上表左栏的8 种而已;第7 个位,表示是否闪烁,0 表示不闪烁,1 表示闪烁。
改变字符颜色部分流程图:图3-6 改变字符颜色部分NNY读取光标位置对bp 进行除法处理 处理得出光标的置位值设置光标属性,光标置位bp 与0进行比较temp[0]-1,temp[1+50] 设置光标及字符属性bp-1temp[1]-1temp[1]与14进行比较ZF=0ZF=0 Y 结束开始4 程序调试及问题分析4.1调试记录进入调试程序软件MFPCI98,在新建文件内输入源程序,生成汇编源文件,汇编成功,无错误。
之后连连接程序,生成可执行文件,在运行该文件,或使用人机交互方式直接进行“编译&连接&运行”如下图4-1所示。
图4-1生成可执行文件按照要求进行输入,如下图4-2所示,可随时显示时间和正确率。
图4-2 进行字符输入最后当按下ESC键时,退出程序,并显示时间和正确率,按下任何键之后,就可以随时退出程序,如下图4-3所示。
图4-3 最终结果显示4.2调试中出现的问题出现问题:在程序开始运行之后,会出现一大段的时间没有界面显示,导致以为程序无法运行?问题分析:在运行后,等待一个较长的时间,就可以正常运行。
原因应该是缓冲区内字符随机选取会需要很长一段时间。
结束语本次课程设计与以往有很大不同,需要原创性、创新性,以前有参考资料提示按照书本要求做就可以得到数据,本次课程设计要求我们首先要读懂源程序,软件硬件相关知识都要具备,然后根据要求和想法添加程序功能以完善。
所以没有雷同,答案各式各样,从分调动了我们的积极性和创造力。
它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我们知道了如何学以致用。
之前从模拟电路课程设计还是到电工实习,还有这次微机课程设计使自己更清楚了实践的重要性,不管我们学到什么,懂得多少,要是拿不出知识来解决实际问题,说什么都没用。
在每次课程设计后,自己都觉得有一个不小的进步,虽然有些方面自己做不出,但可以从老师和其他同学那里学到更好更多的东西,他们从另一个方面透析了自己的困难,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处。
通过多次的实践,使我深切的体会到培养动手能力的重要性,程序设计是一门实践性很强的东西,不仅要学好书本知识,那是远远不够的,还必须随时把所学知识投入实际应用之中,在此过程中多参照些相关资料,只有这样,才能达到学习的目的,才能学好一门编程语言。
这次实践中,我感觉到自己掌握的只是太匮乏了,太不深刻了,当用到某个知识点时,经常是脑子了有个印象,而确切的却想不起来,幸亏还可以查阅资料要不就什么也不会了。
通过这次实践,我觉的必须很熟练的掌握专业知识,才能很顺畅的编程,才能提高效率,考虑问题也会更全面,编写的程序也会很完善。