文档介绍:第9章系统中断调用和I/O程序设计
主讲:×××
所谓中断就是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中断源,称处理紧急事务的程序为中断服务程序或中断处理程序。计算机系统还根据紧急事务的紧急程度,把中断分为不同的优先级,并规定:高优先级的中断能暂停低优先级的中断服务程序的执行。
计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入输出请求,如:键盘输入引起的中断,通信端口接受信息引起的中断等;还有一些计算机内部的异常事件,如:0作除数、奇偶校验错等。
CPU在执行程序时,是否响应中断要取决于以下三个条件能否同时满足:
1、有中断请求;
2、允许CPU接受中断请求;
3、一条指令执行完,下一条指令还没有开始执行。
条件1是响应中断的主体。除用指令INT所引起的软件中断之外,其它中断请求信号是随机产生的,程序员是无法预见的。
我们可用程序部分地控制条件(2)是否满足,即可用指令STI和CLI来允许或不允许CPU响应可屏蔽的外部中断。而对于不可屏蔽中断和内部中断,CPU一定会响应它们的,程序员是无控制权的。CPU一定会执行这些中断的中断服务程序。
BIOS中断调用
若按中断源来划分,则系统中的中断又可分为:硬件中断和软件中断。对于硬件中断,程序员不能控制它,它们基本上是随机产生的,而对于软件中断,汇编语言程序员可通过指令INT和INTO来有目的安排它们的。
在存储器系统中,从地址0FE000H开始的8KB ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,而且易于移植。由于BIOS介于DOS和具体硬件之间,所以,调用BIOS的功能是一个很好的折中方案。
程序员可在以下三种情况下考虑使用BIOS的功能:
1、BIOS提供的功能,而DOS没有提供该功能的情况;
2、不能利用DOS功能调用的情况(可能因为某些具体应用的限制);
3、基于处理速度的考虑,需要绕过DOS层的情况
可以归纳出如下结论:使用中断的层次越高,它与硬件设备相关程度就越低,处理速度也就越低,但用户程序的适用范围较广。反之亦然。
有了上面的结论,程序员可根据应用程序的要求、对硬件环境的熟悉程度等因素来选用不同层次的中断。
BIOS中断调用方法
系统中断由三部分组成:功能、入口参数和出口参数。这里的功能为子功能,如打印机输出中断INT 17H,有0(字符打印)、1(初始化)、3(读打印机状态)三个子功能。入口参数是子程序调用前必须预置的参数,如BIOS磁盘输入/输出中断(类型号13h)的读指定盲区操作,在实际调用前,要做好以下准备:
AH 子功能号02H AL扇区数
CH;CL磁道号 CL扇区号
DH-磁头号 DL驱动器号
ES:BX-数据缓冲区地址
至于出口参数,一般是系统子程序执行后返回的状态或参数。
BIOS中断可分为下面四类:
1 内中断:中断类型号为00H—07H,包括被零除中断、单步中断、不可屏蔽中断、断点中断、溢出中断、屏幕拷贝中断等。
2 外中断:中断类型号08H—0FH,主要处理计时器、键盘、通信商品、硬盘、软件等。
3 设备驱动:中断类型号10H—17H,服务对象包括显示器、内存检查、通信I/O、键盘I/O、打印机I/O等。
4 特殊中断:中断类型号18H—1FH,包括ROM BASIC、DOS自举、日期调用、键盘中断、计时器控制、显示器参数等。