第5章中断技术本章内容中断技术的基本概念中断技术的工作原理系统配置的中断资源的应用中断向量修改及中断服务程序的编写•15.1中断基本概念中断是指CPU在正常运行程序时,由于外部/内部事件,或由程序引起CPU中断正在运行的程序,而转到为中断事件服务的程序中去,服务完毕,再返回执行原程序,这一过程称为中断。外部中断的特征:具有随机性。•25.2中断的类型5.2.1外部中断1.可屏蔽中断INTR这是由外部设备通过中断控制器用中断请求线INTR向微处理器申请而产生的中断,但微处理器可以用CLI指令来屏蔽(禁止),即不响应它的中断请求,因此把这种中断称为可屏蔽中断。2.不可屏蔽中断NMI由系统硬件引发的中断,如协处理器出错、通道等。它的优先级高于外部硬件中断,且不受中断允许标志位(IF)的影响,所以是不可屏蔽中断。•35.2.2内部中断内部中断是由用户在程序中发出中断指令INTnH产生的,指令中的操作数n称为软中断号。内部中断包括DOS中断功能和BIOS中断功能两部分,可供用户在编写应用程序是调用。1.DOS功能调用DOS是存放在磁盘上的操作系统软件,其中内部中断INT21H是DOS的内核。它是一个很重要、功能庞大的中断服务程序,包含0~6CH个子功能,包括对设备、文件、目录及内存的管理功能,涉及各个方面,可供系统软件和应用程序调用,同时,由于它处在ROM-BIOS层的上一个层次,与系统硬件层有ROM-BIOS在逻辑上的隔离,所以,它对系统硬件的依赖性大大减少,兼容性好。2.BIOS功能调用BIOS是一组存放在ROM中、独立于DOS的I/O中断服务程序。它在系统硬件的上一层,直接对系统中的I/O设备进行设备级控制,可供上层软件和应用程序调用。•4除了上述外部中断和内部中断两类中断之外,微机的中断系统还包括一些特殊中断,这些中断既不是由外部设备提出申请而产生的,也不是由用户在程序中发中断指令INTnH而发生的,而是由内部的突发事件所引起的中断,即在执行指令的过程中,CPU发现某种突发事件时就启动内部逻辑转去执行预先规定的中断号所对应的中断服务程序。这类中断也是不可屏蔽中断,其中断处理过程具有与内部中断相同的特点,因此,有的书上把它们归结为内部中断这一类。这类中断有如下几种。(1)0号中断─除数为零中断;(2)1号中断─单步中断;(3)3号中断─断点中断;(4)4号中断─溢出中断。3.内部中断的应用DOS调用和BIOS调用是用户使用系统资源的重要方法和基本途径,也是用户编写MS-DOS应用程序使用很频繁的方法,应学会使用。•54、中断过程分为四个阶段中断请求→中断响应→中断服务→中断返回1.中断请求①外设先发送“中断请求”信号给CPU。②CPU检查“中断请求”输入线。③CPU有权决定是否响应中断:a.若允许申请,用ST1指令打开中断触发器IF;b.若不允许申请,用CLI指令关闭中断触发器IF。④没有获得允许中断请求称为中断被屏蔽。⑤不允许中断请求的情况:如:在实时控制时,需采集一段连续数据为防上数据丢失,不允许其他中断请求;又:执行管理程序中某些重要程序,CLI指令进行屏蔽。2.中断响应①CPU在当前指令执行结束时,响应中断,进入中断的响应周期;②发出二个中断回答信号INTA完成一个中断响应周期;③进行断点及标志保存如:段地址(CS),偏移地址(IP)标志FR以及压入堆栈。④读取中断类型号,找到中断源;⑤装入中断服务程序的入口地址(CS,IP)中断响应中断响应是当中央处理机发现已有中断请求时,中止现行程序执行,并自动引出中断处理程序的过程。中断响应过程:保留程序断点及处理机有关信息自动转入相应的中断处理程序执行中断响应的实质交换指令地址及处理机的状态信息3.中断服务①转入中断服务程序后,其服务程序的内容有:a.与CPU交换数据,进行I/O操作;b.外部期望CPU给以控制,进行参数修改。②在程序开头,将可能使用的寄存器内容进栈,即保护现场。③在服务程序的未尾,将入栈的寄存器内容弹出,即恢复现场。4.中断返回中断服务程序结束,执行中断返回。①自动交保存在堆栈中的标志FR,断点(IP,CS)依次弹出并装入。②回到中断前的地址开始继续执行。三、中断源、中断识别、优先级1、中断源:发出中断请求的外设或引起中断的内部原因称为中断源。指令中断:INT10H、INT21H等外设中断:键盘、打印机、显示器等硬件故障中断:奇偶错、电源故障等程序性中断:除法溢出、非法操作码等2、中断识别:CPU响应中断后,只知道有中断请求但不知道是哪一个中断源,寻找中断源的操作过程称为中断识别。CPU识别中断的方法:(确定中断源,实现程序的转移)中断识别的目的:形成该中断服务程序的入口地址。向量中断:中断向量、中断号在CPU响应中断后,由中断控制器将服务程序入口地址送到CPU的过程。查询中断:软、硬件查询确定中断源采用软件查询技术来确定发出中断请求。5.3中断号5.3.1中断号与中断号的获取1.什么是中断号中断号是系统分配给每个中断源的代号,以便识别和处理。中断号在中断处理过程中起到很重要的作用,在采用向量中断方式的中断系统中,CPU必须通过中断号才可以找到中断服务程序的入口地址,实现程序的转移。2.中断号的获取CPU对系统中不同类型的中断源,获取它们的中断号的方法是不同的。可屏蔽中断的中断号是在中断响应周期从中断控制器获取的。内部中断INTnH的中断号(nH)是由中断指令直接给出的。不可屏蔽中断NMI以及CPU内部一些特殊中断的中断号是由系统预先设置好的,如NMI的中断号为02H,非法除数的中断号为0H等。•115.3.2中断响应周期当CPU收到外部设备通过中断控制器提出的中断请求INT后,如果当前一条指令已执行完,且中断标志位IF=1时(即允许中断),又没有DMA请求,那么,CPU进入中断响应周期,发出两个连续中断应答信号完成一个中断响应周期。图5.1表示是中断响应周期时序。从图5.1可知,一个中断响应周期完成的操作有:•12INTA1.置位中断服务寄存器ISR当CPU发出第一个脉冲时,CPU输出有效的总线锁定信号,使总线在此期间处于封锁状态,防止其他处理器或DMA控制器占用总线。与此同时,中断控制器将判优后允许的中断级在ISR中的相应位置1,以登记正在服务的中断级别,在中断服务程序执行完毕之后,该寄存器自身不能清零,需要向中断控制器发中断结束命令EOI才能清零。2.读取中断号当总线控制器发出第二个2脉冲时,总线锁定信号撤除,总线被解封,地址允许信号ALE也变为低电平(无效),即允许数据线工作。正好此时中断控制器将当前中断服务程序的中断号送到数据线上,由CPU读入。5.3.3中断号的分配系统对外部中断和内部中断一律统一编号,共有256个号,微机系统的中断号分配如表5.1所示。表中两块灰色区域的中断号分别是系统分配给PC微机系统中的中断控制器主片与从片的中断号,用户可以采用修改其中断向量的方法进行应用。•13INTAINTA中断号名称中断号名称0除零数25H磁盘扇区读1单步26H磁盘扇区写2NMI27H程序终止驻留3断点28H等待状态处理4溢出29H字符输出处理5屏幕打印2AH保留6保留2BH保留7保留2CH保留8日时钟中断2DH9键盘中断2EH命令执行处理0AH从片中断2FH多路复用处理0BH串行口2中断30H内部使用0CH串行口1中断31H内部使用0DH并行口2中断32H保留0EH软盘中断0FH打印机/并行口1中断表5.1•14中断号名称中断号名称10H视频显示I/O67H用户保留11H设备配置检测68H保留12H内存容量检测13H磁盘I/O6FH保留14H串行通信I/O70H时钟中断15H盒带/多功能实用71H改向INT0AH16H键盘I/O72H保留17H打印机I/O73H保留18HROMBASIC74H保留19H磁盘自举75H协处理器中断1AH日时钟/实时钟I/O76H硬盘中断1BHCtrl-Break中断77H保留1CH定时器报时78H未使用区1DH视频显示方式参数1EH软盘基数表7FH1FH图形显示扩展字符80HBASIC使用区20H程序终止退出21H系统功能调用EFH22H程序结束地址F0H内部使用区23HCtrl-C出口地址24H严重错误出口地址FFH•155.4中断触发方式与中断排队方式5.4.1中断触发方式中断触发方式是指外部设备以什么逻辑信号去向中断控制器申请中断,中断控制器允许用边沿或电平信号申请中断,即边沿触发和电平触发两种方式。触发方式在中断控制器初始化时设定。5.4.2中断排队方式外部中断、内部中断是按优先级提供服务的。中断优先级从高到低的顺序是:内部中断→不可屏蔽中断→可屏蔽中断。当系统有多个中断源时,就可能出现同时有几个中断源都申请中断,而微处理器在一个时刻只能响应并处理一个中断请求。为此,要进行中断排队,微处理器一般是按“优先级高的先服务”的原则提供服务。但也有其他一些中断排队的方式。•161.按优先级排队根据任务的轻重缓急,给每个中断源指定CPU响应的优先级,任务紧急的先响应,可以暂缓的后响应。2.循环轮流排队不分级别高低,CPU轮流响应各个中断源的中断请求,并为其服务。3.中断嵌套在实际应用中,当CPU正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。为了使更紧急的、级别更高的中断源及时得到服务,需要暂时打断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被打断了的中断服务程序继续执行。但级别相同或级别低的中断源不能打断级别高的中断服务,这就是所谓的中断嵌套。INTR可以进行中断嵌套。NMI不可以进行中断嵌套。•175.5中断向量与中断向量表当发生中断,就意味着要发生程序的转移,即由主程序转移到服务程序去。那么,如何才能进入中断服务程序,即如何找到中断服务程序的入口地址是解决问题的关键。为此,采用向量中断方式(不是查询中断方式),设置中断向量及中断向量表,通过中断向量表中的中断向量查找中断服务程序的入口地址。5.5.1中断向量与中断向量表1.什么是中断向量CPU响应中断后,中断源提供中断号,再由中断号生成地址信息,由此地址信息对程序的执行进行导向,引导到中断服务程序中去,故把这个地址信息称为中断向量(存储单元)。中断向量包括中断服务程序的段基址CS(高位字),偏移地址IP(低位字)共4个字节。•182.中断向量指针与中断类型号什么叫“中断向量指针”?指出中断向量存放在中断向量表的位置(或地址)。中断类型号X4=中断向量最低字节的指针中断号×4=偏移地址IP;中断号×4+2=段基址CS。例如,8号中断中断源的中断向量:IP8=8×4=20H~21H;CS8=8×4+2=22H~23H.在PC系列中由中断类型号提供的,即向量地址=0000:类型号×4如:硬盘“1NT13H”它的向量地址=0000:13H×4=0000:004CH004CH开始连续4个单元中用来存放“INT13H”的中断向量:中断向量寄存器中断向量指针00700FC9CSHCSLIPHIPL004FH004EH004DH004CH图5.2中断向量指针示意图中断向量0070(CS):0fc9h(IP)2.什么是中断向量表所有的中断向量集中存放到存储器的某一区域,这一区域称之为中断向量表。微机系统规定把存储器的0000H~03FFH共1024个地址单元作为中断向量存储区,这表明中断向量表的起始地址是固定的,并且从存储器的物理地址0开始。中断向量表如图5.2所示。每个中断向量包含4个字节,这4个字节在中断向量表中的存放规律是向量的偏移量(IP)存放在两个低字节单元中,向量的基址(CS)存放在两个高字节单元中。•21例:PC机,0000‾03FF共1024(1K)中断向量表0BA90125000003FF1024个单元存放256个向量图5.2中断向量表•225.5.2中断向量表的填写中断向量表的填写分系统填写和用户填写两种情况。系统设置的中断服务程序,其中断向量由系统负责填写。用