《微机原理与接口技术》.docx
《《微机原理与接口技术》.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.设计任务及要求1.1 微机原理与接口技术课程设计目的对典型的微机应用系统进行设计,要求根据具体的课题题目画出系统结构框图、系统接线图;能用所学习的汇编语言进行典型的程序设计并上机进行调试。并能根据要求写出设计课程设计报告,报告要求文字整洁、语言通顺、制图规范、程序完整正确。1.2 设计任务本课程设计是一个在键盘上练习打字并统计时间及正确率的实用程序。在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,按某个键开始练习,可显示出练习的时间及正确率,并一行练习完毕后系统自动生成另外一行随机字母。1.3 设计要求1. 设计要求:(1)设计一个在键盘上练习打字并能统计时间及正确率的程
2、序。(2) 熟悉和掌握有关键盘和时间的中断及字符显示计数。(3) 编制键盘中断和时间中断处理程序,并保存原中断向量。程序运行时,使用自编的中断向量处理程序。程序退出时,恢复中断向量。2. 设计功能:(1)按照显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间及正确率,打字练习过程中输入的字符与打字练习的内容不符时会产生警报,打字练习可以一直进行下去直至练习者停止(2)能用自编的中断向量处理程序处理中断。62. 方案比较及论证2.1 方案比较根据打字计时练习的设计要求可知,我们可以依据缓冲区中字符系列的产生这一要求的实现有两种设计方案:方案一是缓冲区中的字母是预先设定好的, 后面
3、所进行的打字练习是依照预先设定好的字符系列进行;方案二是缓冲区中的字母是随机生成的,每一次打字练习的字符系列都是随机产生的。其他要求的实现都是一样的。方案一:缓冲区中的字符系列是预先设定好的。这种设计方案要求在内存中预先开辟一段存储空间存放将要进行打字练习的字符系列,在后面进行打字练习的时候再将字符系列取出进行操作。这种设计方案占用的内存较多并且需要先将字符系列取出后再进行操作,程序写起来很长,指令太多,同时设计的方案对于使用者来说太过单一,想尝试不同字符系列的打字练习时还要另行修改程序, 适用性差。方案二:缓冲区中的字符系列是系统自动随机生成的。这种设计方案要求系统随机生成字符系列,不需要预
4、先分配内存单元,在开始新一轮的打字练习时就自动随机生成字符系列。这种设计方案运用到的指令少,占用的内存少,设计的程序适用性好,不需要修改程序就可以尝试不同的字符系列的打字练习。2.2 方案论述在设计打字练习时,根据打字练习的过程来设计打字计时练习的程序,首先在打字练习的界面上要有输出的提示信息提示对打字练习要进行的操作,其次是打字练习内容字母系列的生成,然后才开始进行打字练习,打字计时练习的过程在系统内部是一个不断循环的过程,在系统内部时钟每次嘀嗒计数循环一次,首先需要判断是否从键盘键入字符,这里面有一个循环检测的过程直至有字符键入系统,其次需要知道键入的字符是否是特殊字符,判断 打字练习进行
5、哪步操作。这是一个大的分支程序,需要有很多的跳转并且需要不断的调用子程序实现不同的功能。最后在一轮打字练习结束时需要有一个分支的选择,是再次进行打字练习的设置还是退出打字练习的程序。3. 软件设计说明3.1 软件思想由打字计时练习的设计要求可知设计主要分为以下几个步骤:打字练习过程中提示信息的输出,随机字母系列的生成,打字练习过程中键入字符的正确与否, 打字练习过程的时间及正确率的显示,字母系列是否键入完毕。运用汇编语言设计的程序分为主程序和子程序。主程序主要用于随机字母系列的生成,打字计时练习过程键入字符正确与否的判断,字母系列是否输入完毕, 打字计时练习的新一轮的开始。子程序分别实现不同的
6、功能,分别如下:子程序 SHUCHU_TISHI 中,实现的是打字练习过程中输出提示信息。子程序 BINDEC 实现的是显示时间,分别将各遍野单元的二进制数转换为十进制数,并以 COUNT5:COUNT4:COUNT3 的形式显示出来。子程序 DECDIV 实现的是数字以 ASCII 字符形式输出子程序 TIME 实现的是打字练习过程的计时及输出子程序 SOUND 实现的打字计时练习过程中键入字符与相应打字内容不等时的警报。方案一的设计思路:系统随机生成打字练习的内容将需要输出的提示信息,记录打字练习的正确率参数及计时单元等预先放在DATA 数据段中,程序开始时就输出提示信息然后系统随机生成打
7、字内容存放在内存中,然后开始打字练习,由自编的中断程序 PRESS 检测按键时产生的中断, 并把按键的扫描码转换为 ASCII 码,这个工作和 ROM09 类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,即只解释了可显示字符, 如英文字母、数字及一些符号;其他特殊键,如组合键、双态键、功能键等都未作解释,只作为字符码 0 来处理。在主程序部分保存原 09 类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。键入的字符时,还应判断字符是否为空格(20H)。如为空格,需要再次的调用 INT21H 中断,从键盘输入字符直至输入的字符不是空格,还要判断是否是
8、退出和回车,如果是跳到重新输入字符处,重新开始从键盘键入字符判断。如果不是,进入键入的字符是否是正确处,进行各自相应的操作直至键入某一功能键(如 Esc 键、Shift 键等) 退出程序,结束打字练习。在键盘打字计时采用 10 类型的键盘中断,来取得输入字符并将字符显示在屏幕上;在统计时间时利用 08 类型的定时器中断所嵌套的 ICH 软中断来计时。当一个字符输入完后(回车键作为结束符),屏幕上以 COUNT5:COUNT4:COUNT3 的格式显示出打字练习的时间。在统计时间和正确率时需要利用数制转换子程序, 将系统自行计数的二进制转换成十进制输出。自行编制键盘中断和时间中断处理程序,并保存
9、原中断向量。程序运行时, 使用自编的中断向量处理程序。程序退出时,恢复中断向量。自编中断处理程序也是本课题需要考虑的重要问题。虽然系统自带了许多中断例行程序可以由 INT 指令来执行,但在本课题中需要对原中断例行程序的功能进行扩充才可。3.2 程序流程图开始是否判断是否是ENTER键否判断是否是ESC键产生字符序列是结束读取键入字符并存有输入字符数的寄存器加一否判断键入字符是否与输出序列一致是存有正确数的寄存器加一调用报警程序是判断本段字符是否输入完毕否主程序如图所示:图一主程序流程图上图为主程序流程图,是依据设计思路中未调用子程序的几个步骤得来TIMEPROC时间子程序流程图如图2所示:否判
10、断DH 是否为零是秒表COUNT3 加一判 断 COUNT5 是否否为 60是将 COUNT5 置零,并将分钟加一是否判 断 COUNT4 是否为 60将 COUNT4 置零,并将小时加一显示时间PUSH AX PUSH DXMAIN:MOV AH, 2 INT 1AHCMP DH, SECONT JNE GETJMP NEXT GET:MOV SECONT,DH INC COUNT3 MOV AX, COUNT3 CMP AX, 60JNE NEXT4 MOV COUNT3, 0 INC COUNT4MOV AX, COUNT4 CMP AX, 60JNE NEXT4 MOV COUNT4,
11、 0 INC COUNT5NEXT4:MOV DH, 20MOV DL, 23 MOVTO DH, DL MOV AX, COUNT5 CALL BINDEC MOV AH, 2MOV DL, : INT 21HMOV AX, COUNT4 CALL BINDEC MOV AH, 2MOV DL, : INT 21HMOV AX, COUNT3 CALL BINDECNEXT:POP DX POP AXRETTIMEENDP图二时间子程序流程图武汉理工大学微机原理与接口技术课程设计说明书SOUND PROCPUSH AX报警子程序流程图如图3所示:PUSH CX输入控制参数将AL 的第二位取反
12、将AL 的值通过端口地址传进去延迟IN AL, 61HAND AL, 11111101B OUT 61H, ALMOV CX, 10000 AGAIN_S:XOR AL, 2 OUT 61H, AL CALL DELAYLOOP AGAIN_S POP CXPOP AX RETSOUNDENDP DELAYPROCPUSH CXMOV CX, 0FFFH NEXT_D: NOPLOOP NEXT_DPOP CX图3报警子程序流程图RETDELAYENDP在主程序中对键入字符 ACSII 是否介于 33 和 127 之间的判断,其流程图如图 4 所示:图 4:键入字符的判断流程图7武汉理工大学微
13、机原理与接口技术课程设计说明书3.3 代码设计1. 功能模块说明(1) 定义数据段,设置主要参数:输出提示信息,记录正确率和计时的参数(2) 代码段调用中断 8259,键盘中断,时钟中断,设置打字计时文件程序顺序(3) 使用子程序分化各子功能SHUCHU_TISHI PROC;输出提示信息SOUND PROC;发声BINDECPROC NEAR;将二进制转化为十进制显示时间DECDIVPROC NEAR;转化成字符显示TIME PROC;统计时间2. 具体代码实现及关键代码分析;定义堆栈段;*SSEGSEGMENTSTACKSTACKDW100DUP(?)SSEGENDS;*整个程序按两个中断
14、源分为两部分。在数据段中,前半部分是键盘处理所需要的数据变量,包括输入字符,字符缓冲区,09H 中断向量的保存单元等。后半部分是定时器中断处理所需要的数据变量,其中有一个打字练习内容及其地址表SADDR,计时单元 COUNT3,COUNT4,COUNT5 以及记录真确率的变量 COUNT0,COUNT1中断向量的存贮单元等。在堆栈段定义一个“先进先出”的缓冲区(buffer):由于键盘是通过中断方式工作的,由于键盘中断的出现是完全随机的,因此要示键盘I/O 程序要缓冲或保留它接收的任一键盘输入。故需定义一个缓冲区,也叫循环队列。13;定义数据段;* DSEGSEGMENT DATA;显示窗口内
15、容MSG1 DB PRESS ENTER TO START!$ MSG2 DB PRESS ESC TO END!$ MSG3 DB THE PASSED TIME:$ MSG4 DB THE RATE OF CORRECT:$MSG5 DB PRESS ENTER TO RESTART!$ MSG6 DB PRESS ESC TO OUT!$SECONTDB0COUNT0DW0;为了记录正确的字符数COUNT1DW0;字符总个数COUNT2DW0;为了到行尾时自动翻行的控制COUNT3DW0;秒COUNT4DW0;分COUNT5DW0;时DSEGENDS;*数据段定义了在后面要用到的计时变量
16、,记录打字练习的正确率及需要输出的提示信息;定义代码段;* CSEGSEGMENT CODEASSUME CS:CSEG, SS:SSEG, DS:DSEG;*主程序 start:输出打字操作的提示信息,随机生成字符系列,打字练习过程, 打字时间的统计及正确率的计算。;输出提示信息程序SHUCHU_TISHI PROC:通过对 DH,DL 的赋值将光标定位在 DH 行 DL 列,调用宏定义 OUTPUT 设置输出字符串的属性并在 DH 行 DL 列输出;输出提示信息*SHUCHU_TISHI PROCADD DH,3 ADD DL,28OUTPUT MSG1,14, DH, DLADD DH,
17、 2 ADD DL,2OUTPUT MSG2, 11, DH, DL RETSHUCHU_TISHI ENDP;*;正确率统计和报警程序由于本次课设还要求设计的汇编语言程序具有统计正确率的功能,所以必须要有一段可以实现记录输入字符个数,并通过一个判断输入的字符是否与屏幕上由程序自动生成的字符串当中相对应的字符相同的程序,若相同的话,则使得统计输入正确的字符的寄存器增加一,然后将这两个程序联合使用来实现正确率的功能。由于这两个程序当中有需要调用其他子程序,涉及到的程序过多,这里只给出一小段核心程序,如下:MOVTO DH, DL; 显示光标的位置MOV AX, COUNT0CALL BINDEC
18、; 显示输入字母的个数MOV AH, 2 MOV DL, / INT 21HMOV AX, BINDEC; 显示输入正确的字母个数CALL CHANGE POP DXJMP PRESS首先在这段程序当中,用到了宏指令MOVTO,前面也说到了该宏指令可以通过控制 DH、DL 的值来控制输出字符的位置。从而可以方便的控制想要显示的内容在屏幕上的位置。在这段程序当中还涉及到了 INT 21H 中断的应用,当 AH 当中为 02H 时,DL 当中的存储内容就是直接显示的内容,在这里我们用到“/” 即分数的形式来表达正确率,而不是直接计算出百分比。“/” 前面显示的内容是用户输入的内容与程序显示的字符一
19、致的个数,作为分子,而“/”后面显示的内容是用户一共键入的字符个数,作为分母。由于在计算机当中,数据均以二进制的形式来储存,但二进制并不是我们所习惯的数值表达方式,所以数据输出前需要经过一个进制转换程序的处理,经转换以后再输出到屏幕上供用户观看。在这里就又涉及到了进制转换程序。由于在本程序当中,进制转换程序并不是主要的程序单元,它只用作为辅助程序。需要提到的是当用户键入的字符错误,即不与程序自动产生的字符串中对应的字符相同时,需要调用到报警程序单元。用户键入错误字符有报警是本次课设的又一个主要要求,显然在调用报警程序之前,需要先判断键入的字符是否正确,在错误时才会调用报警程序,这就需要有一个可
20、以判断键入字符的单元程序,该判断单元需要在用户每键入一个字符后便执行一次,因此它可以直接接在输入字符程序后面。;将二进制转化为十进制并显示时间的程序 BINDEC PROC NEAR:通过给 CX 赋值并调用 DECDIVPROC 程序将系统内部计时的二进制数转换成十进制,并以ASCII 码形式输出;将数字以ASCII码形式输出程序DECDIVPROC:完成二十进制的转换并以ASCII码的形式输出,与前面的BINDECPROC程序一起实现二十进制的转换及输出功能;将2进制数转换成10进制数*BINDECPROC NEARMOV CX,10D;显示十位CALL DECDIVMOV CX,1;显示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 微机 原理 接口 技术
限制150内