欢迎来到天天文库
浏览记录
ID:50143071
大小:363.00 KB
页数:71页
时间:2020-03-09
《微型计算机原理与汇编语言程序设计教学课件 第7章 中断调用程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章中断调用程序设计7.1概述7.2键盘输入中断调用7.3显示器输出中断调用7.4磁盘文件管理开始7.1概述7.1.1DOS中断和BIOS中断7.1.2DOS中断和BIOS中断使用方法7.1.1DOS中断和BIOS中断在存储器系统中,内存器高端8K的ROM中存放有基本输入输出系统(BasicInput/OutputSystem,BIOS)例行程序。BIOS给PC系列的不同微处理器提供了兼容的系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来极大方便。程序员不必了解硬件的具体细节,可直接使用指
2、令设置参数,并中断调用BIOS例行程序,所以利用BIOS功能调用编写的程序简洁,可读性好,而且易于移植。磁盘操作系统(DiskOperatingSystem)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO.COM和IBMDOS.COM使BIOS使用起来更方便。因为DOS模块提供了更多更必要的测试,使DOS操作比使用相应功能的BIOS操作更简易,而且DOS对硬件的依赖性更少些。DOS模块和ROMBIOS的关系如下图所示。7.1.2DOS中断和BIOS中断使用方法DOS功能调用与BIOS功能都通过软件中断调用。在中断调用前需要把功能号装入A
3、H寄存器,把子功能号装入AL寄存器,除此之外,还需要在CPU的寄存器中提供专门的调用参数。一般来说,调用DOS或BIOS功能时,有以下几个步骤:(1)将调用参数装入指定的寄存器。(2)如需功能调用号,把它装入AH。(3)如需子功能调用号,把它装入AL。(4)按中断号调用DOS或BIOS。(5)检查返回参数是否正确。7.2键盘输入中断调用7.2.1ASCII与扫描码7.2.2BIOS键盘中断7.2.3DOS中断调用7.2.1ASCII与扫描码键盘是计算机最基本的一种输入设备,用来输入信息,以达到人机对话的目的。键盘主要由3种基本类型的键组成:(1)字符数字键:(2)扩展功能
4、键:如Home、End、Backspace、Delete、Insert、PgUp、PgD以及功能键F1~F10(3)和其他键组合使用的控制键:如Alt,Ctrl,Shift等键盘和主机通过5芯电缆相连,这5根线分别是电源线、地线、复位线以及键盘数据线和键盘时钟线。PC机系列的键盘触点电路按16行×8列的矩阵来排列,用单片机Intel8048来控制对键盘的扫描。按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,这个位置值称为按键的扫描码,通过数据线将8位扫描码送往主机。当在键盘上“按下”或“放开”一个键时,如果键盘中断是允许的(21H端口的第一位等于
5、0),就会产生一个类型9的中断,并转入到BIOS的键盘中断处理程序。该处理程序从8255可编程外围接口芯片的输入端口读取一个字节,这个字节的低7位是按键的扫描码。最高位为0或者为1,分别表示键是“按下”状态还是“放开”状态。按下时,取得的字节称为通码,放开时取得的字节称为断码。如ESC键按下取得的通码为01H(00000001B),放开ESC键时会产生一个断码81H(10000001B)。BIOS键盘处理程序将取得的扫描码转换成相应的字符码,大部分的字符码是一个标准的ASCII码;没有相应ASCII的键,如Alt和功能键(F1~F10),字符码为0;还有一些非ASCII码
6、键产生一个指定的操作。7.2.2BIOS键盘中断类型16H的中断提供了基本的键盘操作,它的中断处理程序包括3个不同的功能,分别根据AH寄存器中的子功能号来确定。(1)AH=0本功能为从键盘读字符到AL寄存器中。(2)AH=1本功能为读键盘缓冲区字符到AL寄存器中,并置ZF标志位。(3)AH=2本功能为读取特殊功能键的状态。【例7.1】下面给出一个利用键盘I/O功能的程序例。用INT16H(AH=0)调用实现键盘输入字符。DATASEGMENTBUFFDB100DUP(?)MESSDB‘NOCHARACTER!’,0DH,0AH,‘$’DATAENDSCODESEGMENT
7、ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,100MOVBX,OFFSETBUFF;内存缓冲区首址LOP1:MOVAH,1PUSHCXMOVCX,0MOVDX,0INT1AH;设置时间计数器值为0LOP2:MOVAH,0INT1AH;读时间计数值CMPDL,100NZLOP2;定时时间未到,等待MOVAH,1INT16H;判有无键入字符JZDONE;无键输入,则结束MOVAH,0INT16H;有键输入,则读出键的ASCII码MOVBX,AL;存入内存缓冲区INCBXPO
此文档下载收益归作者所有