《微机原理及接口》课程设计报告课题名称打字测试练习学院自动控制与机械工程学院专业通信技术班级姓名学号时间2012年1月13日目录任务书第一章设计概述1.1设计课题1.2设计任务1.3设计目的1.4设备环境第二章设计的相关知识2.1汇编语言的程序设计2.2B I O S中断介绍2.3D O S中断介绍2.4子程序设计第三章设计方案3.1设计思想分析3.2设计方案实现3.3程序流程图3.4源程序第四章调试及运行结果第五章课程设计心得体会5.1心得体会及系统改进5.2课程设计遇到的问题和解决方案参考文献附录微机原理课程设计任务书一课题题目:打字测试练习二课题要求:在DOS环境中设计一个打字测试练习的程序:具体要求:1.屏幕上显示出提示信息和练习例句;2.按照例句在从键盘上输入字母;3.每输入完一行后回车,显示练习输入的时间、输入的正确数和错误数和下一行例句;4.按Esc键可退出程序。
5.参考设计基本思路编程实现上述功能;6.设计说明书:包括设计思想、程序流程图和源程序。
三设计基本思路见课程设计指导书六补充说明1.设计题目必须调试成功(生成的可执行文件必须能运行并且能够实现题目实现的功能),考核是独立完成考核内容,若未完成没有成绩。
2.设计说明书必须独立完成,若果出现70%相同视为雷同,取消其成绩。
七主要参考资料1.《微机原理与接口技术》李兰友编清华大学出版社 20092.《微机原理与应用》潘名莲编电子科技大学出版社 19953.《新编深入DOS编程》求伯君主编学苑出版社 1994第一章设计概述1.1 设计课题打字测试练习1.2 设计任务在DOS环境中编程完成以下任务:(1) 屏幕上显示出提示信息和练习例句;(2) 按照例句在从键盘上输入字母;(3) 每输入完一行后回车,显示练习输入的时间、输入的正确数和错误数和下一行例句;(4) 按Esc键可退出程序。
(5) 参考设计基本思路编程实现上述功能;(6) 设计说明书:包括设计思想、程序流程图和源程序。
1.3 设计目的学习汇编语言综合应用程序设计方法,提高汇编语言实际应用能力,充分了解计算机硬件和软件,利用PC机键盘和时间中断字符显示实现打字练习程序,完成理论到实践的推进过程。
培养学生理论联系实际的设计思想,提高学生综合应用汇编语言课程的理论知识去分析问题、解决问题的能力。
1.4 设备环境IBM-PC微型计算机1台第二章设计的相关知识2.1 汇编语言的程序设计1.程序设计的基本步骤(1) 分析实际问题,弄清已知条件、未知条件和求解对象;(2) 分析得到需要解决的数据组织;(3) 确定算法;(4) 根据算法,绘制程序流程框图;(5) 按照程序流程框图编写程序代码;(6) 调试运行程序;(7) 重复(1)-(5)步,直到基本无问题。
2.三种顺序结构(1)顺序程序设计顺序是最常见的,也是最基本的程序设计方法。
这种程序在计算机内存中执行时,按照先后顺序,逐句顺序执行。
他没有分支也没有循环,因此也称为线性程序。
(2)分支程序设计在程序中,除了最基本的顺序结构以外,通常还有各种分支,以满足不同情况做不同处理的需要。
分支结构有两种形式:一种是引出两个分支的;另一种是引出多个分支的。
前者类似于高级语言中的IF—THEN—ELSE语句,后者类似于高级语言中的CASE语句。
程序在某种条件下运行时,执行其中一个分支。
(3)循环程序设计循环程序也是一种基本结构。
程序中,往往有的程序段需要重复执行多次,以实现某种功能,这样,可以大大简化程序设计。
循环程序通常有以下三部分组成:a.循环初始状态循环过程中的工作单元,在循环开始前,往往要给他们赋初值,以保证循环能正常的进行工作。
b.循环体这是循环程序重复执行的部分,是循环的主体。
c.循环控制循环能正常进行和结束,循环控制是关键。
循环控制条件不合理,循环就无法按正常的预定进行,甚至导致死循环。
2.2 BIOS中断介绍1.什么是BIOSBIOS的全称是ROM—BIOS—ROM Basic I/O System(只读存储器基本输入输出系统)。
它是一组固化到微机主板上一个ROM芯片上的子程序,主要功能包括:a.驱动系统中所配置的常用外设(即驱动程序),如显示器、键盘、打印机、磁盘驱动器、通信接口等。
b.开机自检,引导装入。
c.提供时间、内存容量及设备配置情况等参数。
使用BIOS中断调用与DOS系统功能调用类似,用户也无需了解相关设备的结构与组成细节,直接调用即可。
2.调用方法A.键盘I/O中断调用(INT 16H)键盘I/O中断调用有三个功能,功能号0,1,2,且必须把功能号放在AH中。
a. 0号功能调用格式:MOV AH,0INT 16H功能:从键盘读入字符送AL寄存器。
执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。
若AL=0,则AH为输入的扩展码。
b. 1号功能调用格式:MOV AH,01HINT 16H功能:用来查询键盘缓冲区,对键盘扫描但不等待,并设置ZF标志。
若有按键操作(即键盘缓冲区不空),则ZF=0,AL中存放的是输入的ASCII码,AH中存放输入字符的扩展码。
若无键按下,则标志位ZF=1。
c. 2号功能调用格式:MOV AH,02HINT 16H功能:检查键盘上各特殊功能键的状态。
执行后,各种特殊功能键的状态放入AL寄存器器中。
3. BIOS屏幕功能调用。
INT 10Ha.清屏作用MOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT 10Hb.移动光标MOV AH,02HMOV DH,** ;**为目的地行数(0—24)MOV DL,** ;**为目的地列数(0—79)MOV BH,00HINT 10HC.禁止光标显示MOV AH,01HMOV CX,2000HINT 10Hd.恢复光标显示MOV AH,01HMOV CX,0C0DHINT 10H2.3 DOS中断介绍1.什么是DOS系统功能调用系统功能调用是DOS为用户提供的常用子程序(80多个),可在汇编语言程序中直接调用这些子程序的。
使用DOS提供的程序控制硬件。
优点是兼容性好,使用方便。
DOS是IBM PC系列微机的操作系统(现在的微机仍能运行DOS,而且新的操作系统也能继续提供几乎所有的DOS功能调用)负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。
DOS的功能调用不依赖于具体的硬件系统。
所有的DOS系统功能调用都是利用软件中断指令INT 21H来实现的。
也就是说,在程序中需要调用DOS功能的时候,只要使用一条INT 21H指令即可。
INT 21H是一个具有90多个子功能的中断服务程序,这些子功能大致可以分为四类:设备管理、目录管理、文件管理和其他。
其功能一览表可参见附录。
为了方便用户使用这些子功能,INT 21H对每一个子功能都进行了编号—称为功能号。
这样,用户就能通过指定功能号来调用INT 21H 的不同子功能。
2.DOS功能调用方法a.在AH寄存器中存入所要调用功能的功能号;b.根据所调用功能的规定设置入口参数;c.用INT 21H指令转入子程序入口;d.相应的子程序运行完后,可以按规定取得出口参数。
3.DOS的基本输入/输出功能调用A.键盘输入调用格式:MOV AH,1INT 21H功能:等待从键盘输入一个字符并送入AL。
a.1号调用——从键盘输入单个字符b.10号调用——从键盘输入字符串功能:从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。
调用前要求:先定义一个缓冲区调用格式:LEA DX,MAXLEN(缓冲区首偏移地址)MOV AH,10INT 21H注意:调用时,要求DS:DX指向输入缓冲区B.显示输出a.2号调用——在显示器上显示输出单个字符调用格式:MOV DL,待显示字符的ASCII码MOV AH,2INT 21Hb.9号调用——在显示器上显示输出字符串调用格式:LEA DX,字符串首偏移地址MOV AH,9INT 21H功能:将当前数据区中DS:DX所指向的以‘$’结尾的字符串送显示器显示。
2.4 子程序设计1.子程序的结构子程序一般以文件形式编写,并常以过程形式存放在代码段中。
子程序文件通常由程序说明和子程序主体组成。
子程序说明通常包括子程序功能描述(名称,性能,执行时间等),所有寄存器名和存储单元、子程序入口和出口参数及是否又调用其他子程序。
子程序的结构一般包括保存现场、依入口参数从指定位置取加工信息、加工处理、依出口参数指定位置送出处理结果、恢复现场和返回调用程序等部分。
子程序的结构形式:子程序名 PROCRET子程序名 ENDS2.子程序的调用和返回主程序调用子程序使用CALL指令。
根据CALL指令获得目标地址的方法,有4种调用方式:段内直接调用方式、段内间接调用方式、段间直接调用方式和段间间接调用方式。
为了能正确返回,不管哪一种调用方式,都需要把断点(即CALL指令的下一条指令的地址)入栈保护。
同时,CALL指令的类型必须与RET指令类型相匹配。
3.主程序和子程序间的信息交换子程序中允许改变的数据称为参数。
参数包括入口参数和出口参数两种。
主程序调用子程序之前必须向子程序提供一些参数,而子程序执行完毕后又要将执行结果提供给主程序使用。
参数传递的方式一般有三种,即用寄存器传递参数、用参数表传递参数和用堆栈传递参数。
不论采用哪种方式,调用程序和子程序都必须互相呼应。
子程序需要在哪里取参数,主程序就应将参数送到哪里,并且要注意参数的先后顺序。
a. 用寄存器传递参数寄存器传递参数适用于参数个数较少时。
方法是,主程序将子程序执行时所需要的参数放在指定的寄存器中,子程序的执行结果也放在规定的寄存器中。
b. 用参数表传递参数参数表方式适用于参数较多的情况。
方法是,在存储器中专门规定某些单元存放入口参数和出口参数,即在内存中建立一个参数表。
c. 用堆栈传递参数用堆栈传送适用于参数多并且子程序多有嵌套或递归调用的情况。
方法是,主程序将参数压入堆栈,子程序将参数从堆栈中弹出。
第三章设计方案3.1 设计思想分析在键盘上练习的打字例句及其地址表,计时单元等预先放在DATA数据段中,键盘处理子程序kbget读入按键时产生的键值,并把按键的扫描码转换为ASCII码存入缓存区buffer。
在显示键入的字符时,还应判断字符是否为回车符(0DH)、退格键(08H)和ESC键。
如为回车符,说明一个句子输入完毕,此时调用显示时间的子程序显示出打字时间,统计和显示正确数和错误数。
然后顺序显示下一个例句。
如果所存放的例句都已显示完,则又从第一个例句开始显示,直至键入功能键ESC键退出程序,结束打字练习。
如为退格键,应做相应的处理。