第六章输入与输出中断_第1页
第六章输入与输出中断_第2页
第六章输入与输出中断_第3页
第六章输入与输出中断_第4页
第六章输入与输出中断_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6 6章章 输入输出与中断输入输出与中断 本章首先介绍输入输出接口基本概念、本章首先介绍输入输出接口基本概念、CPUCPU与外与外设数据传送的方式。设数据传送的方式。然后然后, ,重点研究中断传送方式及相关的技术。重点研究中断传送方式及相关的技术。 6.1 6.2 参见参见CAI课件课件6.26.2 查询方式数据采集系统程序查询方式数据采集系统程序控制口(控制口(04H,OUT) b2b0:通道号;:通道号; b4:A/D启动信号启动信号状态口(状态口(02H,IN) b0:A/D转换结束转换结束 READY信号信号数据口(数据口(03H,IN) A/D转换数据转换数据;初始化;初始化ST

2、ART: MOV DL, 0F8H ; 为什么设此初值?为什么设此初值?MOV AX, SEG DSTORMOV ES, AXLEA DI, DSTOR; 发控制命令发控制命令AGAIN: MOVAL, DL ANDAL,0EFH OUT 04H, AL CALLDELAY MOVAL,DL OUT04H, AL; 为什么每次要发为什么每次要发2次控制命令?中间要加延时?次控制命令?中间要加延时?; 查询查询A/D状态,读入数据状态,读入数据POLL: INAL, 02H SHRAL, 1 JNCPOLL ; 其它判别方法?其它判别方法? IN AL, 03H STOSB INCDL JNEA

3、GAIN ; ?6.3 6.3 中断技术中断技术(简介)(简介) 中断是一种十分重要而复杂的软硬件相结合的技术。中断是一种十分重要而复杂的软硬件相结合的技术。 本节将介绍本节将介绍中断的基本概念中断的基本概念、中断的响应与处理过程中断的响应与处理过程、优先优先权的安排权的安排等有关问题。等有关问题。 一、中断概述一、中断概述 ( (一一) ) 中断与中断源中断与中断源使使CPUCPU暂停运行原来的程序而应更为急迫事件的需要转去执暂停运行原来的程序而应更为急迫事件的需要转去执行为中断源服务的程序行为中断源服务的程序( (称为称为中断服务程序中断服务程序) ),待该程序处理完后,待该程序处理完后,

4、再返回运行原程序,此即再返回运行原程序,此即中断中断( (或中断技术或中断技术) )。 所谓所谓中断源中断源,即引起中断的事件或原因,或发出中断申请的,即引起中断的事件或原因,或发出中断申请的来源。通常中断源有以下几种来源。通常中断源有以下几种 : (1)(1)外部设备外部设备: :一般中、慢速外设如键盘、打印机等,在完成一般中、慢速外设如键盘、打印机等,在完成自身的操作后,向自身的操作后,向CPUCPU发出中断请求发出中断请求, ,要求要求CPUCPU为它服务。为它服务。 (2) (2) 实时时钟实时时钟:在自动控制中,常需要定时检测与控制。此:在自动控制中,常需要定时检测与控制。此时,时,

5、CPUCPU可发出命令可发出命令, ,启动时钟电路计时启动时钟电路计时, ,待定时已到,时钟电路待定时已到,时钟电路就发中断申请,由就发中断申请,由CPUCPU转去执行服务程序。转去执行服务程序。 (3) (3) 故障源故障源:计算机内设有故障自动检测装置,如发生运算:计算机内设有故障自动检测装置,如发生运算出错(溢出出错(溢出) )、存储器读出出错、外部设备故障、电源掉电以及、存储器读出出错、外部设备故障、电源掉电以及越限报警等意外事件时,这些装置都能使越限报警等意外事件时,这些装置都能使CPUCPU中断,进行相应的中断,进行相应的中断处理。中断处理。 以上以上3 3种属于种属于随机中断源随

6、机中断源。由随机引起的中断。由随机引起的中断, ,称为称为强迫中断强迫中断。 (4) (4) 为调试程序设置的中断源为调试程序设置的中断源:这是:这是CPUCPU执行了特殊指令执行了特殊指令( (自自陷指令)或由硬件电路引起的中断陷指令)或由硬件电路引起的中断, ,主要是供用户调试程序时而主要是供用户调试程序时而采取的检查手段。如断点设置、单步调试等采取的检查手段。如断点设置、单步调试等. .这些都要由中断系这些都要由中断系统实现。一般称这种中断为统实现。一般称这种中断为自愿中断自愿中断。( (二二) ) 中断系统及其功能中断系统及其功能 中断系统应具有下列中断系统应具有下列功能功能: 1.

7、1. 能响应中断、处理中断与返回能响应中断、处理中断与返回 2. 2. 能实现优先权排队能实现优先权排队 3. 3. 能实现中断嵌套能实现中断嵌套 高级高级中断源能中断源能中断中断低级的中断低级的中断 处理处理 中断系统中断系统是指为实现中断而设置的各种是指为实现中断而设置的各种硬件与硬件与软件软件, ,包括中断控制逻辑及相应管理中断的指令。包括中断控制逻辑及相应管理中断的指令。 ( (三三) ) 中断的应用中断的应用 中断能解决快速中断能解决快速CPUCPU与中、慢速外设速度与中、慢速外设速度不匹配的矛盾,以不匹配的矛盾,以提高主机的工作效率提高主机的工作效率; 中断在实现中断在实现分时操作

8、、实时处理、故障处分时操作、实时处理、故障处理、多机连接理、多机连接以及以及人机联系人机联系等方面均有广泛的等方面均有广泛的应用。应用。二、二、 单个中断源的中断单个中断源的中断 单单个中断源的中断过程包括:个中断源的中断过程包括:中断请求中断请求、中断响应中断响应、中断中断处理处理和和中断返回中断返回等环节。等环节。 ( (一一) ) 中断源向中断源向CPUCPU发中断请求信号的条件发中断请求信号的条件 中断源是通过其中断源是通过其接口电路接口电路向向CPUCPU发中断请求信号的发中断请求信号的, ,该信号该信号能否发给能否发给CPUCPU,应满足下列,应满足下列两个条件两个条件: 1. 1

9、. 设置中断请求触发器设置中断请求触发器 在每个中断源的接口电路中设置一个在每个中断源的接口电路中设置一个中断请求触发器中断请求触发器, ,由由它产生中断请求,并一直保持到它产生中断请求,并一直保持到CPUCPU接受并响应该中断后接受并响应该中断后, ,才能才能清除它。如图清除它。如图6.156.15所示。所示。 2 2设置中断屏蔽触发器设置中断屏蔽触发器 通过通过中断屏蔽触发器,中断屏蔽触发器,CPUCPU可控制中断源的可控制中断源的中断请求是否中断请求是否允许发向允许发向CPUCPU。如图如图6.156.15所示。所示。( (二二) CPU) CPU响应中断的条件响应中断的条件 当中断源向

10、当中断源向CPUCPU发出发出INTRINTR信号后,信号后,CPUCPU若要响应它,还若要响应它,还应满足下列条件。应满足下列条件。 1 1CPUCPU开放中断开放中断 CPUCPU采样到采样到INTRINTR信号后是否响应它信号后是否响应它, ,由由CPUCPU内部的中断内部的中断允许触发器允许触发器( (如如IFF)IFF)的状态决定的状态决定, ,如图如图6.166.16所示所示. . 中断允许触发器中断允许触发器IFFIFF的状态可以由专门的开中断与关的状态可以由专门的开中断与关中断指令来设置:中断指令来设置: 开中断:开中断:STI (IFF=1);STI (IFF=1); 关中断

11、:关中断:CLI (IFF=0)CLI (IFF=0)。 此外,当此外,当CPUCPU复位或响应中断后,也能使复位或响应中断后,也能使CPUCPU关中断。关中断。2 2 CPUCPU在现行指令结束后响应中断在现行指令结束后响应中断 在在CPU开中断时,若有开中断时,若有中断请求信号发至中断请求信号发至CPU,CPU,它也它也并不立即响应。并不立即响应。 只有当只有当现行指令运行到现行指令运行到最后一个机器周期的最后一最后一个机器周期的最后一个个T状态状态时时, , CPU才采样才采样INTR信号;若有此信号,则信号;若有此信号,则把与门的允许中断输出端把与门的允许中断输出端置置1 1,于是,于

12、是,CPU进入中断响进入中断响应周期。应周期。( (三三) CPU) CPU响应中断及处理过程响应中断及处理过程 当满足上述条件后,当满足上述条件后,CPUCPU就响应中断,转入中断周期,完成下就响应中断,转入中断周期,完成下列几步操作:列几步操作: 1 1关中断关中断 CPUCPU响应中断后响应中断后, ,在发出中断响应信号在发出中断响应信号( (INTAINTA) )的同时的同时, ,内部自动内部自动地地( (由硬件由硬件) )实现实现关中断关中断, ,以免在处理当前中断时又被新的中断源中以免在处理当前中断时又被新的中断源中断断, ,以至破坏当前中断服务的现场。以至破坏当前中断服务的现场。

13、 2 2保护断点保护断点 CPUCPU响应中断后,立即封锁响应中断后,立即封锁PC+1PC+1( (此即此即断点地址断点地址),),且把此且把此PCPC值值压栈保护压栈保护,以备中断处理完毕后,以备中断处理完毕后,CPUCPU能返回断点处继续运行主能返回断点处继续运行主程序。程序。3 3保护现场保护现场 在在CPUCPU处理中断服务程序时,有可能用到各寄存器处理中断服务程序时,有可能用到各寄存器, ,从从而改变它们原在运主程序中所暂存的中间结果,即破坏而改变它们原在运主程序中所暂存的中间结果,即破坏了原主程序中的现场信息。了原主程序中的现场信息。 为使中断服务程序不影响主程序的正常运行,要把主

14、为使中断服务程序不影响主程序的正常运行,要把主程序运行到程序运行到断点处断点处时的时的有关寄存器的内容和标志位的状态有关寄存器的内容和标志位的状态压栈保护压栈保护起来。起来。4 4给出中断入口给出中断入口( (地址地址) ),转入中断服务程序,转入中断服务程序8086/80888086/8088由中断源提供由中断源提供中断类型号中断类型号, ,并根据中断类并根据中断类型号在型号在中断向量表中断向量表中取得中取得中断服务程序的入口地址中断服务程序的入口地址。在在中断服务程序完成后中断服务程序完成后,还要执行,还要执行下述的下述的5 5、6 6两步操作。两步操作。 5 5恢复现场恢复现场 把保存在

15、堆栈中的各有关寄把保存在堆栈中的各有关寄存器的内容和标志位的状态弹出恢复。存器的内容和标志位的状态弹出恢复。 该操作是在中断服务程序中该操作是在中断服务程序中用用POPPOP指令完成的。指令完成的。 6 6开中断与返回开中断与返回 在中断服务程序的最后在中断服务程序的最后, ,要开中要开中断(以便断(以便CPUCPU能响应新的中断请求能响应新的中断请求) )和安排一条返回指令,将堆栈内保和安排一条返回指令,将堆栈内保存的断点存的断点PCPC值弹出值弹出, ,送回至送回至PC,CPUPC,CPU就恢复到断点处继续运行。就恢复到断点处继续运行。 三、三、 向量中断向量中断 所谓向量中断所谓向量中断

16、(Vectored Interrupt)(Vectored Interrupt),是指通过,是指通过中断向量中断向量来找来找中断入口地址中断入口地址进而进而转向中断服务程序转向中断服务程序的一种方法;的一种方法; 中断向量中断向量则是用来提供中断入口地址的一个则是用来提供中断入口地址的一个地址指针地址指针。例如例如8086/8088CPU8086/8088CPU的中断系统的中断系统就是采用这种向量中断。其就是采用这种向量中断。其详细过程,将在下一节讨论。详细过程,将在下一节讨论。 四、中断优先权四、中断优先权 实际系统中,通常具有多个中断源实际系统中,通常具有多个中断源, ,而而CPUCPU的

17、可屏蔽中断请求的可屏蔽中断请求线往往只有一条。线往往只有一条。 如何解决如何解决多个中断源同时请求多个中断源同时请求中断而中断而只有一根中断请求线只有一根中断请求线的的矛盾呢矛盾呢? ? 1 1)要求)要求CPUCPU按多个中断源的优先权按多个中断源的优先权由高至低依次响应由高至低依次响应中断申请。中断申请。 2) 2) 当当CPUCPU正在处理中断时,还要正在处理中断时,还要能响应更高级的中断申请能响应更高级的中断申请,而屏,而屏蔽掉同级或低级的中断申请。蔽掉同级或低级的中断申请。 CPUCPU可以通过可以通过硬件排队电路硬件排队电路或或软件查询技术软件查询技术两种方法来实现两种方法来实现按

18、中断优先权对多个中断源的管理按中断优先权对多个中断源的管理; ; 也有专门协助也有专门协助CPU CPU 按中断优先权处理多个中断源的按中断优先权处理多个中断源的中断控中断控制芯片制芯片,如后面第,如后面第7 7章中将要介绍的章中将要介绍的8259A8259A芯片芯片。6.4 8086/80886.4 8086/8088的中断系统和中断处理的中断系统和中断处理 本节将主要阐述本节将主要阐述8086/80888086/8088的中断系统的中断系统及其及其中断处理中断处理的的全过程。全过程。 一、一、8086/80888086/8088的中断系统的中断系统 8086/80888086/8088中断

19、采用中断采用中断向量结构中断向量结构,每个中断都有一个,每个中断都有一个特定的特定的中断类型码中断类型码(共(共256256种种类型的中断)。这些中断可类型的中断)。这些中断可以来自以来自外部外部,即由,即由硬件硬件产生产生, ,也可以来自也可以来自内部内部,即由,即由软件软件(中断指令)产生,或者满足某些(中断指令)产生,或者满足某些特定条件特定条件( (陷阱陷阱) )后引发后引发CPUCPU中断。中断。 ( (一一) ) 外部中断外部中断 8086/8088 CPU8086/8088 CPU有两条引脚供外部中断源请求中断有两条引脚供外部中断源请求中断: :一条是一条是高高电平有效电平有效的

20、的可屏蔽中断可屏蔽中断INTRINTR; ;另一条是另一条是上升沿有效上升沿有效的的非屏蔽中断非屏蔽中断NMINMI。 . .可屏蔽中断可屏蔽中断 可屏蔽中断是由用户定义的外部硬件中断。可屏蔽中断是由用户定义的外部硬件中断。CPUCPU是否响应此中是否响应此中断请求,要取决于标志寄存器中断请求,要取决于标志寄存器中IFIF的状态。若的状态。若IF=0IF=0,则,则CPUCPU处于处于关中断关中断状态状态, , 不响应不响应INTR;INTR;若若IF=1IF=1,则,则CPUCPU处于处于开中断开中断状态,状态,响应响应INTRINTR,并通过,并通过INTAINTA引脚向产生引脚向产生IN

21、TRINTR的设备接口的设备接口( (中断源中断源) )发回发回响应响应信号信号, ,启动中断过程。启动中断过程。 CPU CPU在发在发第第2 2个中断响应信号个中断响应信号INTAINTA时时, ,将使发将使发出中断请求信号的接口把出中断请求信号的接口把1 1字节的字节的中断类型码中断类型码通过通过数据总线传送给数据总线传送给CPUCPU。 中断允许标志中断允许标志IFIF位的状态可用指令位的状态可用指令STISTI使其使其置位,即置位,即开中断开中断; ;也可用也可用CLICLI指令使其复位,即指令使其复位,即关关中断中断。系统复位后或任一中断被响应后,系统复位后或任一中断被响应后,IF

22、=0,IF=0,所以所以在执行程序的过程中要用在执行程序的过程中要用STISTI指令开中断指令开中断, ,以便以便CPUCPU有可能响应新的可屏蔽中断请求。有可能响应新的可屏蔽中断请求。 . . 非屏蔽中断非屏蔽中断 8086/80888086/8088要求要求NMINMI上的请求脉冲的有效宽度上的请求脉冲的有效宽度(高电平(高电平的持续时间)大于两个时钟周期。一旦的持续时间)大于两个时钟周期。一旦此中断请求信号产生,不管标志位此中断请求信号产生,不管标志位IFIF的状态如何,的状态如何,即使在即使在关中断(关中断(IF=0IF=0)的情况下,的情况下,CPUCPU也能响应也能响应它。它。非屏

23、蔽中断源非屏蔽中断源有有3 3种:种:1 1)系统板上)系统板上RAMRAM的奇偶校验错的奇偶校验错2 2)扩展槽中的)扩展槽中的I/OI/O通道错通道错3 3)协处理器)协处理器80878087的中断请求的中断请求由于由于NMINMI比比INTRINTR的中断请求的的中断请求的级别高级别高,因此,因此, ,若在指令执行过程中若在指令执行过程中,INTR,INTR和和NMINMI引脚上同时都有引脚上同时都有中断请求信号中断请求信号 ,则,则CPUCPU将首先响应将首先响应NMINMI引脚上的中引脚上的中断请求。断请求。IntelIntel公司在设计公司在设计8086/80888086/8088

24、芯片时,已将芯片时,已将NMINMI的中断类型号的中断类型号预先定义为预先定义为类型类型2 2, ,所以所以,CPU,CPU响应非响应非屏蔽中断时屏蔽中断时, ,不要求外部向不要求外部向CPUCPU提供中断类型提供中断类型号号,CPU,CPU在总线上也不发在总线上也不发INTAINTA信号。信号。 (二)内部中断(二)内部中断 . .除法出错中断除法出错中断类型类型0 0(优先级最高)(优先级最高) 执行除法指令时,若除数为执行除法指令时,若除数为0 0或商数超过范围或商数超过范围, ,则立即产生类则立即产生类型为型为0 0的内部中断,的内部中断,CPUCPU转向除法出错的中断服务程序。转向除

25、法出错的中断服务程序。 . .溢出中断溢出中断类型类型4 4若上一条指令执行的结果使溢出标志位置若上一条指令执行的结果使溢出标志位置1 1(OF=1OF=1), ,则在则在执行溢出中断(执行溢出中断(INTOINTO)指令指令时,将引起时,将引起类型类型4 4的内部中断的内部中断,CPU,CPU就可以转入对溢出错误进行处理的中断服务程序。就可以转入对溢出错误进行处理的中断服务程序。若若OF=0OF=0 时,则时,则INTOINTO指令执行指令执行空操作空操作。INTOINTO指令常常紧跟在指令常常紧跟在算术运算指令之后,以便在该指令执行产生溢出时由算术运算指令之后,以便在该指令执行产生溢出时由

26、INTOINTO指令进指令进行特殊的处理。行特殊的处理。 . . 单步中断单步中断类型类型1 1 标志位标志位TFTF被置位(被置位(TF=1TF=1)时,)时,8086/80888086/8088处于单处于单步工作方式,即步工作方式,即CPUCPU每执行完一条指令后就自动地产生一每执行完一条指令后就自动地产生一个个类型类型1 1的内部中断的内部中断,程序控制将,程序控制将转入单步中断服务程序转入单步中断服务程序。CPUCPU响应单步中断后将自动把状态标志压入堆栈响应单步中断后将自动把状态标志压入堆栈, ,然后然后清除清除TFTF和和IFIF标志位。标志位。单步中断服务程序结束时,再通过执行单

27、步中断服务程序结束时,再通过执行IRETIRET中断返回中断返回指令指令, ,将将CSCS与与IPIP的内容出栈并恢复标志寄存器的内容的内容出栈并恢复标志寄存器的内容, ,使程序返回到断点处。使程序返回到断点处。 由于在中断时由于在中断时TFTF位被保护起来了,位被保护起来了,中断返回时中断返回时TFTF位又位又被重新恢复(被重新恢复(TF=1TF=1), ,所以所以CPUCPU在中断返回以后仍然处于单在中断返回以后仍然处于单步工作方式。步工作方式。 . . 断点中断断点中断类型类型3 3 8086/80888086/8088指令系统中有一条设置程序断点指令系统中有一条设置程序断点的单字节中断

28、指令(的单字节中断指令(INT 3INT 3),),执行该指令以后就执行该指令以后就会产生一个中断类型为会产生一个中断类型为3 3的内部中断的内部中断,CPU,CPU将转向将转向执行一个断点中断服务程序执行一个断点中断服务程序, ,以便进行一些特殊以便进行一些特殊的处理的处理. . 断点中断指令主要用于断点中断指令主要用于软件调试软件调试中中, ,程序员程序员可用它在程序中设置一个程序断点。可用它在程序中设置一个程序断点。 . . 用户定义的软件中断用户定义的软件中断类型类型n n 在在8086/80888086/8088的内部中断中的内部中断中, ,有一个可由用户定义的有一个可由用户定义的双

29、字节的双字节的中断指令中断指令INT nINT n,其第,其第1 1个字节为个字节为INTINT的操作码的操作码, ,第第2 2个字节个字节n n是它的是它的中断类型码中断类型码。中断类型码。中断类型码n n由程序员由程序员编程时给定。编程时给定。 ( (三三) ) 内部中断的特点内部中断的特点 (1)(1)内部中断由一条内部中断由一条INT nINT n指令直接产生,其中断指令直接产生,其中断类型号类型号n n或者包括在指令中,或者已由系统预先定或者包括在指令中,或者已由系统预先定义。义。 (2)(2)除单步中断除单步中断以外,以外,所有内部中断都不能被屏所有内部中断都不能被屏蔽蔽。 (3)

30、(3)所有内部中断都所有内部中断都没有中断响应总线周期没有中断响应总线周期,这,这是因为内部中断不必通过查询外部来获得中断类型是因为内部中断不必通过查询外部来获得中断类型号。号。 (4)(4)硬、软中断的硬、软中断的优先级排队优先级排队如表如表6.26.2所示。所示。8086/80888086/8088中断系统规定,除了单步中断以外中断系统规定,除了单步中断以外, ,所有所有内部中断的优先权内部中断的优先权都比外部中断的优先权高都比外部中断的优先权高。 如果在执行一个能引起内部中断指令的同时如果在执行一个能引起内部中断指令的同时, ,在在NMINMI或或INTRINTR引脚端也产生了外部中断请

31、求引脚端也产生了外部中断请求, ,则则 CPUCPU将首先处理内部中将首先处理内部中断。断。三、三、 中断向量表中断向量表 中断向量表中断向量表也称也称中断入口地址表中断入口地址表。中断向量表放在存储在中断向量表放在存储在00000H00000H到到003FFH003FFH之间,占之间,占1K1K字节字节。中断向量表分成中断向量表分成256256组,每组由组,每组由两个字两个字(即(即4 4个字节)组成一个字节)组成一个双字长的指针。个双字长的指针。双字长指针的双字长指针的高地址高地址存放的字是中断服务程序入口地址所在存放的字是中断服务程序入口地址所在的代码段的的代码段的1616位段地址(位段

32、地址(CSCS););低地址低地址字是中断服务程序入口地址相对于段起始地址的字是中断服务程序入口地址相对于段起始地址的偏移偏移值(值(IPIP)。CPUCPU通过通过CSCS和和IPIP的值得到一个的值得到一个2020位的地址(位的地址(1616位的位的CSCS段地址段地址左移左移4 4位,然后加上位,然后加上IPIP值)值), ,它就是它就是中断服务程序的实际入口地址中断服务程序的实际入口地址。 256256级中断的级中断的中断向量表中断向量表如图如图6.206.20所示。所示。 图图6.206.20的中断向量表分为的中断向量表分为3 3部分。部分。第第1 1部分部分 类型类型0 0类型类型

33、4 4 专用中断专用中断这这5 5种中断的入口已由系统定义,不允许用户修改。种中断的入口已由系统定义,不允许用户修改。第第2 2部分部分 类型类型5 5类型类型31 31 系统备用中断系统备用中断这是这是IntelIntel公司为软、硬件开发保留的中断类型公司为软、硬件开发保留的中断类型, ,一般不允许用户作其他用途一般不允许用户作其他用途, ,其中许多中断已被系统开发其中许多中断已被系统开发使用,例如类型使用,例如类型2121已用作系统功能调用的软中断。已用作系统功能调用的软中断。第第3 3部分部分 类型类型3232类型类型255 255 可供用户使用可供用户使用这些中断可由用户定义为这些中

34、断可由用户定义为软中断软中断, ,由由INT nINT n指令引入,指令引入,也可以是通过也可以是通过INTRINTR端直接引入端直接引入硬件可屏蔽中断硬件可屏蔽中断, ,使用时用使用时用户要自行设置相应的中断入口地址。户要自行设置相应的中断入口地址。 每个中断向量具有一个相应的中断类型号。每个中断向量具有一个相应的中断类型号。 中断类型号乘中断类型号乘4 4,将给出中断向量表中的中断向量入口第,将给出中断向量表中的中断向量入口第1 1字节的物理地址。字节的物理地址。例如例如,若中断类型号为,若中断类型号为8, 8, 则这个向量的第则这个向量的第1 1字节的地址为:字节的地址为: 类型号类型号

35、8 84 432=00100000B32=00100000B20H20H 若类型若类型8 8中,安排的中,安排的CS=CS=1000H1000H,IP=0200HIP=0200H,则它们,则它们形成的服务程序的入口地址形成的服务程序的入口地址为为1020010200。CPUCPU一旦响应中断类型一旦响应中断类型8,8,则将转去执行从地址则将转去执行从地址10200H10200H 开始的中断服务程序。开始的中断服务程序。如图如图6.246.24所示。所示。二、二、 8086/80888086/8088的中断处理过程的中断处理过程( (一一) 8086/8088 CPU) 8086/8088 CP

36、U中断处理的基本过程中断处理的基本过程 (3) (3) 在在一般情况一般情况下,都要待下,都要待当前指令执行完当前指令执行完后方可后方可响应中断响应中断申请。申请。但有但有少数情况少数情况是在是在下一条指令完成之后下一条指令完成之后才才响响应中断请求应中断请求。例如,例如,REPREP(重复前缀),(重复前缀),LOCKLOCK(封锁前缀(封锁前缀) )和和段超越前缀段超越前缀等指令都应当将前缀看作指令的一等指令都应当将前缀看作指令的一部分部分, ,在执行前缀和指令间不允许中断。段寄存在执行前缀和指令间不允许中断。段寄存器的传送指令器的传送指令MOVMOV和段寄存器的弹出指令和段寄存器的弹出指

37、令POPPOP也是也是一样,在执行下条指令之前都不能响应中断。一样,在执行下条指令之前都不能响应中断。(4) (4) 在在WAITWAIT指令指令和和重复数据串操作指令重复数据串操作指令执行的过程中执行的过程中间可以响应中断请求,但必须要等一个基本操作或一个等间可以响应中断请求,但必须要等一个基本操作或一个等待检测周期完成后才能响应中断。待检测周期完成后才能响应中断。(5) (5) 因为因为NMINMI引脚上的中断请求是需要立即处理的引脚上的中断请求是需要立即处理的, ,所所以在以在进入执行任何中断(包括内部中断)服务程序之前进入执行任何中断(包括内部中断)服务程序之前, ,都要安排都要安排测

38、试测试NMINMI引脚上是否有中断请求引脚上是否有中断请求,以保证它,以保证它实际实际上有最高的优先权上有最高的优先权。这时要为转入执行。这时要为转入执行NMINMI中断服务程序中断服务程序而再次保护现场、断点,并在执行完而再次保护现场、断点,并在执行完NMINMI中断服务程序后中断服务程序后返回到所中断的服务程序返回到所中断的服务程序, ,例如内部中断或例如内部中断或INTRINTR中断的中中断的中断服务程序。断服务程序。 (6) (6) 若若TEMP=1TEMP=1,则在中断前,则在中断前CPUCPU已处于单步工已处于单步工作方式,就和作方式,就和NMINMI一样重新保护现场和断点,一样重

39、新保护现场和断点,转入单步中转入单步中断服务程序断服务程序。若。若TEMP=0TEMP=0,也就是在中断前,也就是在中断前CPUCPU处于非单步处于非单步工作方式,则这时工作方式,则这时CPUCPU将转去执行最先引起中断的中断服将转去执行最先引起中断的中断服务程序。务程序。 (7) (7) 中断处理程序结束中断处理程序结束时时, ,由中断返回指令将堆栈中由中断返回指令将堆栈中存放的存放的IPIP、CSCS以及以及FLAGFLAG值还原给指令指针值还原给指令指针IPIP、代码段寄存、代码段寄存器器CSCS以及标志寄存器以及标志寄存器。 当当多个中断请求同时产生多个中断请求同时产生时,时,8086

40、 CPU8086 CPU将根据各中断源优先权的高低来处理,将根据各中断源优先权的高低来处理,首先首先响应优先权较高的中断请求响应优先权较高的中断请求,等具有较高优,等具有较高优先权的中断请求先权的中断请求处理完以后处理完以后,再去,再去依次响应依次响应和处理其他中断申请和处理其他中断申请。四、四、 可屏蔽中断的过程可屏蔽中断的过程 ( (一一) INTR) INTR中断的全过程中断的全过程步骤如下:步骤如下: (1) CPU(1) CPU读取读取中断类型号中断类型号n n。 CPUCPU发出发出INTAINTA信号,外部中断接口电路把信号,外部中断接口电路把中断中断类型号通过数据总线送给类型号通过数据总线送给CPUCPU; (2) (2) 按先后顺序把按先后顺序把FLAGFLAG、CSCS和和IPIP的当前内容的当前内容压入堆栈压入堆栈; ; (3) (3) 清除清除IFIF和和TFTF标志;标志; (4) (4) 查中断向量表查中断向量表,把,把4 4n n2 2的字存储单元的字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论