《第6章输入输出与中断》由会员分享,可在线阅读,更多相关《第6章输入输出与中断(78页珍藏版)》请在金锄头文库上搜索。
1、第第6章章 输入输出和中断控制输入输出和中断控制 输入输入/输出接口概述输出接口概述6.1CPU与外设之间的数据传送方式与外设之间的数据传送方式6.2中断技术中断技术6.36.1 输入输入/输出接口概述输出接口概述CPUCPU和和外外设设之之间间必必须须要要设设置置输输入入/ /输输出出接接口口(I/O(I/O接接口口) ),作为,作为CPUCPU与外设进行信息交换的与外设进行信息交换的桥梁桥梁。 CPUCPU接口接口接口接口电路电路电路电路 I/OI/O设备设备设备设备接接口口是是一一组组电电路路,是是CPU与与输输入入输输出出设设备备等等外外设设之之间协调动作的控制电路。间协调动作的控制电
2、路。6.1.1 输入输入/输出接口的功能输出接口的功能 I/O地址译码与设备选择地址译码与设备选择(1)信息的输入信息的输入/输出输出(2)命令、数据和状态的缓冲与锁存命令、数据和状态的缓冲与锁存(3)信息转换信息转换(4)(1)I/O地址译码与设备选择地址译码与设备选择 所有外设都通过I/O接口挂接在系统总线上,在同一时刻,总线只允许一个外设与CPU进行数据传送。(2)信息的输入信息的输入/输出输出通过I/O接口,CPU可以从外部设备输入各种信息,也可将处理结果输出到外设;CPU可以通过向I/O接口写入命令字来控制I/O接口的工作,还可以随时监测与管理I/O接口和外设的工作状态;I/O接口还
3、可以通过接口向CPU发出中断请求。(3)命令、数据和状态的缓冲与锁存命令、数据和状态的缓冲与锁存因为CPU与外设之间的时序和速度差异很大,为了能够确保计算机和外设之间可靠地进行信息传送,要求接口电路应具有信息缓冲能力。接接口口不不仅仅应应缓缓存存(暂暂时时存存留留)CPU送送给给外外设设的的信信息息,也也要要缓缓存存(暂暂时时存存留留)外外设设送送给给CPU的的信信息息。以以实实现现CPU与与外外设设之之间间信信息息交交换的同步。换的同步。(4) 信息转换信息转换 I/O接口还要实现信息格式变换、电平转换、码制转换、传送管理以及联络控制等功能。 6.1.2 CPU与输入与输入/输出接口之间的信
4、输出接口之间的信息息 CPU与与I/O设备之间传输的信息可分为以下三种:设备之间传输的信息可分为以下三种:(1 1)数据信息数据信息 CPUCPU和和外外设设交交换换的的基基本本信信息息就就是是数数据据,分分为为数数字字量量、模拟量、开关量。模拟量、开关量。(2 2)状态信息状态信息 状状态态信信息息反反映映了了当当前前外外设设所所处处的的工工作作状状态态,是是外外设设发发给给CPUCPU的的用用来来协协调调两两者者之之间间的的操操作作。如如READYREADY、BUSYBUSY。(3 3)控制信息控制信息 控控制制信信息息是是CPUCPU发发给给外外设设的的,以以控控制制外外设设的的工工作作
5、。如外设的如外设的启动信号和停止信号启动信号和停止信号。注意注意数数据据信信息息、状状态态信信息息和和控控制制信信息息是是属属于于不不同同性性质质的的信息,需要分别传送。信息,需要分别传送。 一一个个简简单单的的I/OI/O接接口口内内部部包包含含:数数据据端端口口、状状态态和和控制端口。控制端口。n CPUCPU通通过过数数据据端端口口从从外外设设读读入入数数据据或或向向外外设设输输出数据出数据n 从状态端口读入设备的当前状态从状态端口读入设备的当前状态n 通过控制端口向外设发出控制命令通过控制端口向外设发出控制命令n 一一个个I/OI/O接接口口可可能能仅仅包包含含其其中中的的一一类类或或
6、两两类类端端口口,当然也可能包含全部三类端口。当然也可能包含全部三类端口。端口端口 I/OI/O接接口口通通常常设设置置有有若若干干个个寄寄存存器器,用用来来暂暂存存CPUCPU和和外外设设之之间间传传输输的的数数据据、状状态态和和控控制制信信息息,这这些些接接口口内内部部的的寄寄存存器器通通常常称称为为端端口口,分分别别为为数数据据端端口口、状状态态端端口口、控控制制端端口口。每每个个端端口口有有一一个个独立的地址,独立的地址,CPUCPU可通过端口地址来读可通过端口地址来读/ /写它们。写它们。 6.1.3 输入输入/输出端口的编址方输出端口的编址方式式 在在微微机机系系统统中中,CPU对
7、对外外设设的的访访问问实实际际上上是是对对外外设设接接口口电电路路中中相相应应的的I/O端端口口进进行行访访问问,CPU用用相相应应的的读读写写指指令令来来对对端端口口进进行行读读或或写写。因因此此,对对这这些些端端口口必必须须指指定定相相应应的的地地址址码码,这就是这就是I/O端口的编址。端口的编址。I/O端口的编址通常有两种不同的方式:端口的编址通常有两种不同的方式:统一编址统一编址1独立编址独立编址21. I/O端口统一编址端口统一编址又又称称为为存存储储器器映映射射编编址址方方式式,即即把把每每个个I/O端端口口都都当当作作一一个个存存储储单单元元看看待待,按按照照存存储储单单元元的的
8、编编址址方方式式统统一一安安排排端端口的地址。口的地址。优优点点:可可以以用用访访问问内内存存的的方方法法来来访访问问I/O端端口口。由由于于访访问问内内存存的的指指令令种种类类丰丰富富、寻寻址址方方式式多多样样,因因此此这这种种编编址址方方式式为为访访问问外外设设带带来来了了很很大大的的灵灵活活性性。同同时时,I/O控控制制信信号号也也可可与与存存储储器器的的控控制制信信号号共共用用,从从而而给给应应用用带带来来了了很很大的方便。大的方便。缺缺点点:外外设设占占用用了了一一部部分分内内存存地地址址空空间间,这这就就减减少少了了内内存存可可用用的的地地址址范范围围。此此外外从从指指令令上上不不
9、易易区区分分当当前前是是对对内内存存进进行行操操作作还还是对外设进行操作。是对外设进行操作。 u Intel MCS-51等系列的单片微型计算机采用统一编址方式。等系列的单片微型计算机采用统一编址方式。2. I/O端口独立编址端口独立编址 内存地址空间和外设地址空间是相互独立的。内存地址空间和外设地址空间是相互独立的。8086/80888086/8088系系统统的的内内存存地地址址范范围围为为00000H0FFFFF00000H0FFFFFH H,共共1M1M空空间间,而而外外设设端端口口的的地地址址范范围围为为0000H0FFFFH0000H0FFFFH,共共64K64K空空间间。这两个地址
10、空间相互独立,互不影响。这两个地址空间相互独立,互不影响。CPUCPU在在寻寻址址内内存存和和外外设设时时,使使用用不不同同的的控控制制信信号号来来区区分分当当前前是对内存操作还是对是对内存操作还是对I/OI/O端口操作。例如端口操作。例如80868086的的M/IO#M/IO#。指令系统中单独设置有专用的指令系统中单独设置有专用的I/OI/O指令。指令。优优点点:将将输输入入输输出出指指令令和和访访问问存存储储器器的的指指令令明明显显区区分分开开,使使程程序序清清晰晰,可可读读性性好好,而而且且I/OI/O指指令令长长度度短短,执执行行的的速速度度快快,也不占用内存空间;也不占用内存空间;I
11、/OI/O地址译码电路较简单,地址译码电路较简单,缺缺点点:必必须须有有专专门门的的ININ和和OUTOUT指指令令,这这些些指指令令的的功功能能没没有有访访问问存存储储器器指指令令强强,也也增增加加了了指指令令系系统统的的规规模模。另另外外,CPUCPU要要能提供区分存储器和能提供区分存储器和I/OI/O的控制信号。的控制信号。 6.2 CPU与外设之间的数据传送方式与外设之间的数据传送方式无条件方式无条件方式6.2.1查询方式查询方式6.2.2中断方式中断方式6.2.3DMA方式方式6.2.46.2.1 6.2.1 无条件传送方式无条件传送方式 无无条条件件传传送送方方式式主主要要用用于于
12、外外部部控控制制过过程程的的各各种种动动作作是是固固定定的的、且且是是已已知知的的,控控制制的的对对象象是是一一些些简简单单的的、随随时时“准准备备好好”的的外外设设。也也就就是是说说,在在这这些些设设备备工工作作时时,随随时时都都可可以以接接收收CPU输输出出的的数数据据,或或者者它们的数据随时都可以被它们的数据随时都可以被CPU读出。读出。 它它不不需需要要查查询询外外设设状状态态,直直接接使使用用I IO O指指令令与与外外设设实实现现同同步步数数据据交交换换。采采用用这这种种控控制制方方式式的的接接口口电电路路和和控控制制程程序序都都比比较较简简单单。它它一一般般应应用用在在工工作作速
13、速度度慢慢,接接口口电电路路较较简简单单的的外外设设,如如发发光光二二极极管管、开开关等,适合采用这种方式。关等,适合采用这种方式。6.2.2 6.2.2 条件传输方式条件传输方式程序查询传送方式程序查询传送方式 在在执执行行输输入入输输出出前前,要要先先查查询询接接口口中中状状态态寄寄存存器的器的状态状态。n 输输入入时时,状状态态寄寄存存器器的的状状态态指指示示要要输输入入的的数数据据是否已经准备就绪是否已经准备就绪;n 输输出出时时,状状态态寄寄存存器器的的状状态态指指示示输输出出设设备备是是否否空闲。空闲。查询传输方式查询传输方式(1)CPU(1)CPU从从状态端口状态端口中读取状态字
14、;中读取状态字;(2)CPU(2)CPU检测状态字的相应位是否满检测状态字的相应位是否满足足“就绪就绪”条件,如果不满足,条件,如果不满足,则转则转(1)(1),再读取状态;,再读取状态;(3)(3)如状态位表明外设已处于如状态位表明外设已处于“就就绪绪”状态,则通过状态,则通过数据端口数据端口传输传输数据。数据。外设准备好?传送数据读取外设状态YN特特点点:利利用用查查询询方方式式进进行行数数据据输输入入输输出出的的过过程程中中,CPU将将大大量量时时间间耗耗费费在在读读取取和和检检测测外外设设状状态态上上,真真正正用用于于传传送送数数据据的的时时间间很很少少,这这样样大大大大降降低低了了C
15、PU的效率。的效率。例题:例题: 某输入接口的状态端口地址为某输入接口的状态端口地址为86H,数据数据端口地址为端口地址为87H,外部输入信息准备好状态标外部输入信息准备好状态标志为志为D71(D7=0表示外设未准备好)用表示外设未准备好)用查询方式写出从外设读入查询方式写出从外设读入100字节数据并存于字节数据并存于内存内存BUFFER开始的单元中。开始的单元中。 LEA BX , BUFFER ;将BUFFER偏移地址送BX MOV CX , 100 ; 字节数ABC: IN AL, 86H ; 读状态端口 (目的读状态位) TEXST AL, 80H ;测试D7位是否为1(准备好) JZ
16、 ABC ;若D7=0未准备好,循环检测 IN AL , 87H ;准备好,读数据端口 MOV BX, AL ; 存到内存BUFFER缓冲区 INC BX ; 修改地址指针 LOOP ABC ; 未送完,继续传送1)输入指令输入指令IN格式:IN OPD,OPS功能:从端口(地址为n或在DX中)输入位数据到AL或输入16位数据到AX。IN AL,40H;从40H端口读入一个字节送ALMOV DX, 8F00H; 将 端 口 地 址 8F00H送 DXIN AL,DX;从8F00H端口读入一个字节送AL 2)输出指令输出指令OUT格式:OUT OPD,OPS功功能能:从从AL输输出出8位位数数据
17、据或或从从AX输输出出16位位数数据到端口据到端口(地址为地址为n或在或在DX中中)。OUT 40H,AL;将;将AL内容送内容送40H端口端口MOV DX,8F00H;将端口地址;将端口地址8F00H送送DXOUT DX,AL;将;将AL内容送内容送8F00H端口端口输入输入/输出指令在使用时应该注意输出指令在使用时应该注意输入输入/输出指令对标志寄存器没有影响。输出指令对标志寄存器没有影响。端端口口地地址址大大于于255时时,必必须须用用DX指指定定端端口口地址地址。 6.2.3 6.2.3 中断控制方式中断控制方式 在在中中断断传传输输方方式式下下,当当输输入入设设备备将将数数据据准准备
18、备好好或或者者输输出出设设备备可可以以接接收收数数据据时时,便便可可以以向向CPUCPU发发出出中中断断请请求求,使使CPUCPU暂暂时时停停止止执执行行当当前前程程序序,而而去去执执行行一一个个数数据据输输入入/ /输输出出的的中中断断服服务务程程序序,与与外外设设进进行行数数据据传传输输操操作作,中中断断程程序执行完后,序执行完后,CPUCPU又转回继续执行原来的程序。又转回继续执行原来的程序。 中中断断方方式式的的数数据据传传输输仍仍在在程程序序的的控控制制下下执执行行,也也可可称为程序中断方式,适用于中、慢速外设的数据传输。称为程序中断方式,适用于中、慢速外设的数据传输。 利利用用中中
19、断断控控制制方方式式,CPUCPU不不必必花花费费大大量量的的时时间间去去检检测测外设的状态,提高了外设的状态,提高了CPUCPU的效率。的效率。6.2.4 6.2.4 直接存储器存取直接存储器存取DMADMA方式方式 在高速的外设或成块交换数据的情况,采用程序在高速的外设或成块交换数据的情况,采用程序控制方式进行数据的传输,是无法满足要求的。在这控制方式进行数据的传输,是无法满足要求的。在这种情况下,采用种情况下,采用DMA方式。方式。(DMA- DMA- Direct Memory Access ) ) DMA方方式式是是在在外外设设与与内内存存间间建建立立起起直直接接的的通通道道,CPU
20、不不再再直直接接参参加加外外设设和和内内存存间间的的数数据据传传输输。但但系系统统需需要要进进行行DMA传传输输时时,将将CPU对对地地址址和和数数据据及及控控制制线线的的管管理理权权交交由由DMA控控制制器器进进行行控控制制,当当完完成成了了一一次次DMA数数据据传传输输后后,再再将将这这个个控控制制权权还还给给CPU,这这些些工工作都是由硬件自动实现的,并不需要程序进行控制。作都是由硬件自动实现的,并不需要程序进行控制。 6.3 中断技术中断技术中断概述中断概述6.3.1中断的处理过程中断的处理过程6.3.28086/8088的中断的中断6.3.36.3.1 中断概述中断概述 中断源及其分
21、类中断源及其分类1中断系统及其功能中断系统及其功能2中断优先级的确定中断优先级的确定3中断概念:中断概念: CPU正在执行某一段程序的过程中,如果外正在执行某一段程序的过程中,如果外界或内部发生了紧急事件,要求界或内部发生了紧急事件,要求CPU暂停正暂停正在运行的程序转去执行这个紧急事件的处理在运行的程序转去执行这个紧急事件的处理程序,待处理完后再回到被停止执行程序的程序,待处理完后再回到被停止执行程序的间断点,继续执行原来被打断了的程序,这间断点,继续执行原来被打断了的程序,这一过程称为中断。一过程称为中断。1.中断源及其分类中断源及其分类 引起中断的事件就称为引起中断的事件就称为中断源中断
22、源。分为两大类:分为两大类:n内内部部中中断断源源:来来自自CPU内内部部,如如:CPU执执行行指指令令时时产产生生的的异异常常、特特殊殊操操作作引引起起的的异异常常以以及及由由程程序序员员安安排排在在程程序序中中的的INT n软软件件中中断断指指令令。中中断断的的控制完全是在控制完全是在CPU内部实现的。内部实现的。n外外部部中中断断源源:来来自自CPU外外部部,如如:如如键键盘盘、打打印印机机、定定时时器器时时间间到到、电电源源掉掉电电、硬硬件件出出错错等等。利利用用CPU的的两两条条中中断断输输入入信信号号线线INTR和和NMI来来告告诉诉CPU已发生了中断事件。已发生了中断事件。2.中
23、断系统及其功能中断系统及其功能 实现中断响应及返回实现中断响应及返回实现优先权排队实现优先权排队高级中断源能中断低级的中断处理高级中断源能中断低级的中断处理中中断断请请求求执执行行中中断断服服务务程程序序中断过程示意图中断过程示意图断断点点:主主程程序序中中被被暂暂停停执执行行的的指指令令的的地址称为断点。地址称为断点。执执行行主主程程序序继继续续执执行行主主程程序序响应中断响应中断返返回回主主程程序序1)实现中断响应及返回实现中断响应及返回当某个中断源发出中断请求时,CPU能根据条件决定是否响应该中断请求。若允许响应,则CPU必须在执行完现行指令后:n保护断点和现场(即把断点处的断点地址和各
24、寄存器的内容与标志位的状态推入堆栈);n转到需要处理的中断服务程序的入口;n清除中断请求触发器。当处理完中断服务程序后,再恢复现场和断点地址,使CPU返回断点,继续执行主程序。2)实现优先权排队实现优先权排队在实际系统中有多个中断源时,有可能出现两个或两个以上中断源同时提出中断请求的情况,而CPU同一时刻只能接受一个中断申请。这样就必须要设计者事先根据轻重缓急,给每个中断源一个中断优先权中断优先权。当多个中断源同时发出中断申请时,CPU能找到优先级别最高的中断源,响应它的中断请求。在优先权级别最高的中断源处理了以后,再响应级别较低的中断源。 3)高级中断源能中断低级的中断处理高级中断源能中断低
25、级的中断处理当CPU响应某一中断源的请求,在在进进行行中中断断处处理理时时,若有优先级别更高的中断源发出中断申请,则CPU要能中断正在进行中的中断服务程序,保留这个程序的断点和现场(类似于子程序嵌套),响应高级中断,在高级中断处理完以后,再继续执行被中断的中断服务程序。这就形成了中断嵌套,如图6.12所示。两个中断形成的是两重中断(或两级嵌套),还可以进行多重中断(或多级嵌套)。 图图6.12 中断嵌套过程中断嵌套过程6.3.2 中断的处理过程中断的处理过程中断请求中断请求1中断响应中断响应2中断处理中断处理31.中断请求中断请求外设需要CPU服务时,首先要发出一个有效的中断请求信号送到CPU
26、的中断输入端。中断请求信号分为边沿触发和电平触发。一般来说,CPU能够即时予以响应的中断可以采用边沿触发,而不能即时响应的中断则应采用电平触发,否则中断请求信号就会丢失。8088/8086CPU的NMI为边沿触发,而INTR为电平触发。为了保证产生的中断能被CPU处理,INTR中断请求信号应保持到该请求被CPU响应为止。CPU响应后,INTR信号还应及时撤除,以免造成多次响应。 2.中断响应中断响应 响应中断请求的响应中断请求的3 3个条件个条件:(1)一条指令执行结束。 (2)CPU处于开中断状态。(3)没有总线请求。在复位(RESET)、总线保持(HOLD)等总线请求时,CPU不工作,当然
27、就不能响应中断。中断响应时,CPU除了要向中断源发出中断响应信号外,还要自动完成下述3项工作:(1)关关闭闭中中断断。CPU响应中断时,需立即关中断(使IF=0),以保证保护现场、断点和获取中断入口地址等工作不受影响。(2)保保护护现现场场和和断断点点。将标志寄存器FR、断点的段基址(CS值)和偏移地址(IP值)压入堆栈,以保证中断结束后能正常返回被中断的程序。(3)获得中断服务程序入口获得中断服务程序入口,转入中断服务程序。 3.中断处理中断处理 保保护护现现场场。保护现场是指把中断服务程序中要用到的寄存器的原内容压入堆栈保存起来。开开中中断断。CPU响应中断时会自动关闭中断(使IF=0)。
28、若进入中断服务程序后允许中断嵌套,则需用指令开中断(使IF=1)。执行中断处理程序。执行中断处理程序。完成具体的中断处理。关中断。关中断。确保有效地恢复被中断程序的现场。恢恢复复现现场场。就是把先前保护的现场进行恢复,也即把所保存的有关寄存器内容按入栈的相反顺序从堆栈中弹出,使这些寄存器恢复到中断前的状态。开开中中断断返返回回。其操作正好是CPU硬件在中断响应时自动保护硬件现场和断点的逆过程,即CPU会自动地将堆栈内保存的断点信息和标志信息弹出到IP、CS和FR中,保证被中断的程序从断点处继续往下执行。6.3.3 8086/8088的中断的中断8086/8088系统中给每种中断都赋予一个中断类
29、型码(或称中断号),编号为0255。CPU可根据中断类型码的不同来识别不同的中断源。 中断类型中断类型1中断优先级顺序中断优先级顺序2中断向量表中断向量表3中断处理过程中断处理过程41.中断类型中断类型 8086/8088系统的中断源:n外部中断:来自CPU外部n内部中断:来自CPU内部 1)外部中断外部中断也称为硬件中断,它是由外部硬件或外设接口产生的。8086/8088CPU为外部设备提供了两条中断信号线NMI和INTR。非屏蔽中断非屏蔽中断可屏蔽中断可屏蔽中断(1)非屏蔽中断非屏蔽中断由NMI引脚上出现的上升沿触发,它不受中断允许标志IF的控制,其中断类型码固定为2。CPU接收到非屏蔽中
30、断请求信号后,会在执行完当前指令后立即响应中断请求而进入相应的中断处理。非屏蔽中断通常用来处理系统中出现的重大故障或紧急情况。(2)可屏蔽中断可屏蔽中断从CPU的INTR端引入,高电平有效。可屏蔽中断受中断允许标志位IF的控制,只有当IF=1,CPU才会响应INTR请求。如果IF=0,即使中断源有中断请求,CPU也不会响应。在微型计算机中,外部设备的中断请求是通过中断控制器8259A来进行统一管理的,由8259A决定是否允许一个外设向CPU发出中断请求。2)内部中断内部中断内部中断是CPU执行了某些指令或者软件对标志寄存器中某个标志位进行设置而产生的,由于它与外部硬件电路完全无关,故也称为软件
31、中断。在8086/8088 CPU中,内部中断可分为5种类型:n除法出错中断n单步中断n断点中断n溢出中断n中断指令INT n以以上上所所述述内内部部中中断断的的类类型型码码均均是是固固定定,除除单单步步中中断断外,其他的内部中断不受外,其他的内部中断不受IF状态标志影响。状态标志影响。(1)除法出错中断除法出错中断在执行除法指令时,若发现除数为0或商超过了结果寄存器所能表示的最大范围,则立即产生一个中断类型码为0的中断。 (2)单步中断单步中断8086/8088 CPU的标志寄存器中有一位陷阱标志TF。CPU每执行完一条指令都会检查TF的状态。若发现TF=1,则CPU就产生中断类型码为1的中
32、断,使CPU转向单步中断的处理程序。单步中断广泛地用于程序的调试。 (3)断点中断断点中断8086/8088指令系统中有一条专用于设置断点的指令INT 3。CPU执行该指令就会产生一个中断类型码为3的中断。INT 3指令是单字节指令,因而它能很方便地插入程序的任何地方,专门用于在程序中设置断点来调试程序,它也称为断点中断,插入INT 3指令之处便是断点。在断点中断服务程序中,可显示有关的寄存器、存储单元等内容,以便程序员分析到断点为止程序运行是否正确。 (4)溢出中断溢出中断若算术指令的执行结果发生溢出(OF=1),则执行INTO指令后立即产生一个中断类型码为4的中断。溢出中断为程序员提供了处
33、理运算溢出的手段,INTO指令通常和算术运算指令配合起来使用。 (5)中断指令中断指令INT nINT n是用户自定义的软件中断指令,CPU执行中断指令INT n也会引起内部中断,其中断类型码由指令中的n指定。2.中断优先级顺序中断优先级顺序 80x8680x86微机可处理微机可处理256256个不同的中断请求。个不同的中断请求。80x8680x86将将256256个个中中断断统统一一编编号号为为02550255,称称作作中中断断类类型号型号,中断类型号是中断源的唯一标识。,中断类型号是中断源的唯一标识。在在80x8680x86中中断断系系统统中中,中中断断响响应应时时自自动动获获得得中中断断
34、类类型型号号,并并据据此此得得到到该该中中断断服服务务程程序序入入口口地地址址,然然后转去执行中断服务程序。后转去执行中断服务程序。问题问题: :中断类型号和中断服务程序的入口地址(中断中断类型号和中断服务程序的入口地址(中断向量)如何联系?向量)如何联系?中断服务程序的入口地址叫做中断服务程序的入口地址叫做中断向量中断向量。中断类型号和中断向量的对应关系中断类型号和中断向量的对应关系3.中断向量表中断向量表 每个中断源都有一个中断类型码。中断类型码长度为一个字节,故8086/8088最多允许处理256种类型的中断(中断类型码为0255)。中断向量表位于内存的最低1K字节(即内存中00000H
35、003FFH区域),用以存放256个中断向量,即256个中断的服务程序入口地址。每个中断向量占4个字节,其中低位字(2个字节)存放中断服务程序入口地址的偏移量,高位字(2个字节)存放中断服务程序入口地址的段地址。中断向量在表中的存放地址=4中断类型码n取连续的4n和4n+l字节单元的内容装入IP,取4n+2和4n+3单元的内容装入CS,即可转入中断服务程序。 中中断断向向量量表表4.中断处理过程中断处理过程中断类型码的获取中断类型码的获取中断类型码的获取中断类型码的获取中断处理中断处理1)中断类型码的获取中断类型码的获取有两种方法获取中断类型码有两种方法获取中断类型码:对于软件中断:类型码为0
36、、1、3、4的中断类型码由系统自动形成;对于INT n指令,类型码由指令指定。对于硬件中断:若为NMI中断,则由系统自动产生中断类型码2;若为INTR中断,则CPU转入2个连续周期的中断响应周期,并在第2个中断响应周期采样数据总线,获取中断类型码。 2)中断处理中断处理将类型码乘4,计算出中断向量的地址。硬件现场保护。即将标志寄存器F压入堆栈,以保护当前指令执行结果的特征。清除IF和TF标志,屏蔽新的INTR中断和单步中断。保存断点,即把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值。根据计算出来的地址从中断向量表中取出中断服务程序的入口地址(段和偏移),分别送至CS和IP中。转入中
37、断服务程序执行。进入中断服务程序后,首先要保护在中断服务程序中要使用的寄存器内容,然后进行相应的中断处理,现场恢复与中断返回。在中断返回前恢复保护的寄存器内容,最后执行中断返回指令IRET。IRET的执行将使CPU按次序恢复断点处的IP、CS和标志寄存器,从而使程序返回到断点处继续执行。 图6.17中中断断处处理理顺顺序序流流程程6 64 4 中断控制器中断控制器8259A8259A6.4.1 8259A6.4.1 8259A的内部结构及引脚分配的内部结构及引脚分配IR0IR0IR1IR1IR2IR2IR7IR7中断控制器中断控制器8259A功能:功能:(1) 一一片片8259A可可管管理理8
38、个个中中断断请请求求,具具有有8级级优优先先权权控控制制,并并能能把把当当前前优优先先权权最最高高的的中中断断请请求求送送到到CPU的的INTR端;端;(2) 每一级都可以由编程进行屏蔽或开放每一级都可以由编程进行屏蔽或开放(3) 通过级连可以扩展至通过级连可以扩展至64级级(4) 在在中中断断响响应应周周期期,8259A可可以以提提供供相相应应的的中中断断类型号;类型号;(5) 通过编程可选择通过编程可选择8259A的各种工作方式。的各种工作方式。(2)(2)中断服务寄存器中断服务寄存器ISRISR ISRISR是是一一个个8 8位位寄寄存存器器,用用于于寄寄存存所所有有正正在在被被服服务务
39、的的中中断断级级。在在中中断断响响应应的的第第一一个个INTA#INTA#周周期期,使使对对应应的的ISRISR位位置置1 1而而IRRIRR位清位清0 0。(1)(1)中断请求寄存器中断请求寄存器IRRIRR 保保存存从从IR0IR7来来的的中中断断请请求求信信号号,某某位位=1表表示示对对 应应的的IRi有中断请求有中断请求 。(4)(4)优先权电路优先权电路 用用于于识识别别和和管管理理IRRIRR中中各各位位的的优优先先权权级级别别。能能进行行优先先级判判别,把未被屏蔽的把未被屏蔽的最高最高优先先级的中断的中断请求送到求送到CPU。(3)(3)中断屏蔽寄存器中断屏蔽寄存器IMRIMR
40、IMRIMR是是一一个个8 8位位寄寄存存器器,存存放放中中断断屏屏蔽蔽字字,某某位位=1=1表表示示对对应应的的IRiIRi输输入入被被屏屏蔽蔽,为为0 0开开放放该该中中断断请请求求。可可通通过过指指令令设置。设置。1.1.内部结构内部结构(5)(5)控制逻辑电路控制逻辑电路 控控制制逻逻辑辑电电路路根根据据CPUCPU对对8259A8259A编编程程设设定定的的工工作作方方式式管管理理8259A8259A,负负责责发发出出INTRINTR和和接接收收INTA#INTA#,并并使使INTA#INTA#转化为内部所需的各种控制信号。转化为内部所需的各种控制信号。(6)(6)读读/ /写电路写
41、电路 读读/ /写写电电路路可可接接收收CPUCPU对对8259A8259A的的初初始始化化命命令令字字ICWICW和和操操作作命命令令字字OCWOCW,并并将将其其存存入入相相应应的的端端口口寄寄存存器器,来来规规定定8259A8259A的的工工作作方方式式和和控控制制模模式式;也也可可以以向向CPUCPU提提供各端口寄存器的内容。供各端口寄存器的内容。(7)(7)数据总线缓冲器数据总线缓冲器 连连接接系系统统总总线线和和8259A8259A的的内内部部总总线线,用用于于传传输输8259A8259A的控制字或状态字,以及中断类型号。的控制字或状态字,以及中断类型号。(8)(8)级连缓冲级连缓
42、冲/ /比较器比较器 控控制制多多片片8259A8259A的的级级连连,扩扩展展中中断断级级。多多片片8259A8259A级级连连时时,一一片片为为主主,其其余余为为从从。最最多多可可9 9片片级级连连,扩扩展展6464级中断。级中断。2. 8259A2. 8259A的引脚及其功能的引脚及其功能8259A8259A是是2828脚双列直插式芯片脚双列直插式芯片。D D7 7 D D0 0: :双向三态数据线,直接与系统数据总线低双向三态数据线,直接与系统数据总线低8 8位相位相连;连;IRQ0IRQ7IRQ0IRQ7: :中断请求输入线,与外设相连,优先权中断请求输入线,与外设相连,优先权0 0
43、至至7 7递减;递减;INTINT: :中断请求输出线,与中断请求输出线,与CPUCPU的的INTRINTR相连;相连;INTAINTA: :中断允许线,接收来自中断允许线,接收来自CPUCPU的中断响应信号的中断响应信号INTAINTA,与,与CPUCPU的的INTAINTA相连。相连。CSCS, , : :片选信号端。片选信号端。WRWR:写:写信号控制端。信号控制端。RDRD:读信号控制端。读信号控制端。CAS2CAS0:CAS2CAS0:级连信号线,主片为输出,从片为输入;级连信号线,主片为输出,从片为输入;SP/ENSP/EN: :主从主从/ /允许缓冲线,具有双向功能;允许缓冲线,
44、具有双向功能;V VCCCC,GNDGND: :分别接分别接+5v+5v电源和接地电源和接地A0A0: :端端口口地地址址选选择择信信号号,输输入入,由由8259A8259A片片内内译译码码,选选择择内内部部寄寄存存器器。 一一片片8259A8259A有有2 2个个端端口口地地址址,一一个个为为偶偶地地址址,另另一一个个为为奇奇地地址址。A0=0A0=0选选择择偶偶地地址端口,址端口,A0=1A0=1选择奇地址端口。选择奇地址端口。3 3、 8259A8259A中断响应顺序中断响应顺序 8259A对外部中断请求的响应和处理过程如下:对外部中断请求的响应和处理过程如下: (1) 当当中中断断请请
45、求求输输入入线线IRQ0IRQ7中中有有一一条条或或多多条条变变高高时时,则中断请求寄存器则中断请求寄存器IRR的相应位置的相应位置“1”。(2) 未未被被屏屏蔽蔽的的中中断断请请求求信信号号进进入入优优先先权权判判别别器器,优优先先级级判判定定电电路路选选出出优优先先级级最最高高的的中中断断请请求求,控控制制电电路路由由INT引引脚脚向向CPU发出中断请求信号。发出中断请求信号。(3) 如如CPU是是处处于于开开中中断断状状态态,则则在在当当前前指指令令执执行行完完后后,用用INTA#信号作为响应。信号作为响应。(4) 8259A在在接接收收到到CPU的的INTA#信信号号后后,使使最最高高
46、优优先先级级的的ISR位位置置“1”,而而相相应应的的IRR位位清清“0”。但但在在该该中中断断响响应应周期中,周期中,8259A并不向系统总线送任何信息。并不向系统总线送任何信息。8259A8259A响应中断的过程响应中断的过程(5) CPU(8086/8088和和80X86)输输出出第第二二个个INTA#信信号号,启启动动第第二二个个中中断断响响应应周周期期。在在此此周周期期中中,8259A向向数数据据总总线线输输送送一一个个8位位的的中中断断类类型型号号;CPU读读取取此此类类型型号号后后将将它它乘乘以以4(左左移移2位位),即即可可从从中中断断服服务务程程序序向向量量表表(即即入入口口
47、地地址址表表)中中取取出出中中断断服服务务程程序序的的入入口口地地址址,包包括括段段地地址址和和段段内内偏偏移移地址。据此地址。据此CPU便可转入中断服务程序。便可转入中断服务程序。6.4.2 8259A的工作方式1.1.中断嵌套方式中断嵌套方式 8259A8259A有两种中断嵌套方式:有两种中断嵌套方式:(1)(1)一般全嵌套方式一般全嵌套方式 一一般般全全嵌嵌套套方方式式是是8259A8259A最最常常用用的的工工作作方方式式,初初始始化化后后的的默默认认工工作作方方式式。此此时时中中断断优优先先权权的的级级别别是是固固定定的的,IR0IR0 IR7IR7递递减减。CPUCPU响响应应中中
48、断断时时,屏屏蔽蔽掉掉与与它它同同级级或或低低级级的中断请求。的中断请求。 在中断处理过程中允许被更高优先级的事件所中断在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。称为中断嵌套。8259A有两种中断嵌套方式:有两种中断嵌套方式: 8259A8259A的的中中断断管管理理功功能能很很强强,单单片片可可以以管管理理8 8级级外外部部中中断断,在在多多片片级级联联方方式式下下最最多多可可以以管管理理6464级级外外部部中中断断,并并且且具具有有中中断断嵌嵌套套、中中断断优优先先权权判判优优、中中断断结结束束和中断触发等多种中断管理方式。和中断触发等多种中断管理方式。 (2)(2)特殊全
49、嵌套方式特殊全嵌套方式和和一一般般全全嵌嵌套套方方式式基基本本相相同同,区区别别在在于于:在在特特殊殊全全嵌嵌套套方方式式下下,处处理理某某一一中中断断时时,可实现可实现对同级中断请求的响应对同级中断请求的响应。系系统统中中只只有有单单片片8259A8259A时时,通通常常用用全全嵌嵌套套方方式式;而而当当8259A8259A多多片片级级连连时时,主主片片必必须须采采用用特特殊殊全全嵌嵌套套方方式式,从从片片可可采采用用一一般般全嵌套方式。全嵌套方式。1.1.中断嵌套方式中断嵌套方式D.主主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式:一般全嵌套方式:从从片片的的I
50、NT被被主主片片封封锁锁,故故更更高高级级别别的的IR0-IR2中中断断也也无无法法得到响应得到响应特殊全嵌套方式:特殊全嵌套方式:因因主主片片不不封封锁锁从从片片的的INT,故故级级别别高高的的IR0-IR2中中断断可可以以得得到到响响应应。( (但但IR3-IR7仍仍被被本本从从片片封锁封锁) )C.假定假定从片从片IR3发发生中断生中断,并获得并获得服务服务一一般般全全嵌嵌套套方方式式:主主片片的的IR4的的中中断断被被服服务务时时,这这些些中断将被封锁。中断将被封锁。B.特特殊殊全全嵌嵌套套方方式式:IR4的的中中断断被被服服务务 时时 , 只只 封封 锁锁IR5-IR7。A.INTE
51、.从从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7n一般全嵌套方式与特殊全嵌套方式的区别一般全嵌套方式与特殊全嵌套方式的区别 去去CPU2.中断优先权方式8259A8259A中中断断优优先先权权的的管管理理方方式式有有固固定定优优先先权权方方式式和和自自动循环优先权方式两种。动循环优先权方式两种。 (1 1)固定优先权方式)固定优先权方式在在固固定定优优先先权权方方式式中中,IR7IR7IR0IR0的的中中断断优优先先权权的的级别是由系统确定的。级别是由系统确定的。它它们们由由高高到到低低的的优优先先级级顺顺序序是是:IR0, IR0, IR1, IR1, IR2, IR2
52、, , , IR7, IR7, 其其中中,IR0IR0的的优优先先级级最最高高,IR7IR7的的优优先先级级最最低低。当当有有多多个个IRIRi i请请求求时时,优优先先权权判判决决器器(PRPR)将将它它们们与与当当前前正正在在处处理理的的中中断断源源的的优优先先权权进进行行比比较较,选选出出当当前前优优先先权权最最高高的的IRIRi i,向向CPUCPU发发出出中中断断请请求求INTINT,请求为其服务。,请求为其服务。注注: 特特殊殊全全嵌嵌套套仅仅用用于于多多个个8259A级级连连时时的的主主8259A,而而不不能能用用于于从从属属8259A或或单单8259A系统。系统。(2 2)自动
53、循环优先权方式)自动循环优先权方式 在在自自动动循循环环优优先先权权方方式式中中,IR7IR7IR0IR0优优先先权权级级别别是是可可以以改变的。改变的。 其其变变化化规规律律是是:当当某某一一个个中中断断请请求求IRIRi i服服务务结结束束后后,该该中中断断的的优优先先权权自自动动降降为为最最低低,而而紧紧跟跟其其后后的的中中断断请请求求IR(IR(i i1)1)的的优优先先权权自自动动升升为为最最高高,IR7IR7IR0IR0优优先先权权级级别别按按如如下下所所示示的的右循环方式改变。右循环方式改变。 假假设设在在初初始始状状态态IR0IR0有有请请求求,CPUCPU为为其其服服务务完完
54、毕毕,IR0IR0优优先先权权自自动动降降为为最最低低,排排在在IR7IR7之之后后,而而其其后后的的IR1IR1的的优优先先权权升升为为最最高高,其其余余依依次次类类推推。这这种种优优先先权权管管理理方方式式,可可以以使使8 8个个中中断断请请求求都都拥拥有享受同等优先服务的权利。有享受同等优先服务的权利。 自动循环优先权方式自动循环优先权方式在在自自动动循循环环优优先先权权方方式式中中,按按确确定定循循环环时时的的最最低低优优先先权权的的方方式式不不同同,又又分分为为普普通通自自动动循循环环方方式和式和特殊自动循环方式特殊自动循环方式两种。两种。普普通通自自动动循循环环方方式式的的特特点点
55、是是:IR7IR0中中的的初初始始最最高高优优先先级级由由系系统统指指定定,即即指指定定IR0的的优优先先级最高,以后按右循环规则进行循环排队。级最高,以后按右循环规则进行循环排队。特特殊殊自自动动循循环环方方式式的的特特点点是是:IR7IR0中中的的初初始始最最低低优优先先级级,由由用用户户通通过过置置位位优优先先权权命命令令指指定。定。 3.3.中断结束方式中断结束方式当当某某一一IRi中中断断被被服服务务时时,ISR中中的的相相应应位位ISRi=1。当服务结束后,则必须清零该当服务结束后,则必须清零该ISRi位。位。(1)(1)自动中断结束方式自动中断结束方式AEOIAEOI此此方方式式
56、只只适适用用于于单单片片8259A8259A系系统统中中,且且多多个个中中断断不不会会嵌嵌套套。系系统统进进入入中中断断响响应应后后,8259A8259A在在接接收收到到CPUCPU发发来来的的第二个第二个INTAINTA的信号时的信号时自动自动将将ISRISR中的对应位清中的对应位清0 0。(2)(2)非自动中断结束方式非自动中断结束方式EOIEOI在在中中断断服服务程程序序结束束的的末末尾尾(IRET(IRET指指令令之之前前) )向向8259A8259A发出出中中断断结束束命命令令,清清除除ISRISR中中的的相相应位位,表表示示该级的的中中断断服服务程程序序已已经结束束。EOIEOI命
57、命令令有有普普通通EOIEOI命命令令和和特特殊殊EOIEOI命命令令两种两种,分别对应一般全嵌套和特殊全嵌套方式。,分别对应一般全嵌套和特殊全嵌套方式。因不因不保留当前正在服务保留当前正在服务的中断的状态,所以不的中断的状态,所以不能用于中断嵌套方式。能用于中断嵌套方式。4.中断触发方式边沿触发边沿触发nIRi出现上升沿表示有中断请求出现上升沿表示有中断请求 电平触发电平触发IRi出现高电平表示有中断请求出现高电平表示有中断请求在第在第1个个INTA结束前,结束前,IRi必须保持必须保持高电平高电平5.5.中断屏蔽方式中断屏蔽方式(1 1)普通屏蔽方式)普通屏蔽方式 在在普普通通屏屏蔽蔽方方
58、式式中中,8259A8259A的的每每个个中中断断请请求求输输入入端端都都可可以以通通过过对对应应屏屏蔽蔽位位的的设设置置被被屏屏蔽蔽,从从而而使使这这个个中中断断请请求不能从求不能从8259A8259A送到送到CPUCPU。 8259A8259A内内部部有有一一个个8 8位位的的屏屏蔽蔽寄寄存存器器IMRIMR,它它的的每每一一位位对对应应了了一一个个中中断断请请求求输输入入。程程序序可可以以通通过过设设置置操操作作命命令令字字 使使IMRIMR中中任任一一位位或或几几位位置置1 1。当当IMRIMR某某一一位位为为1 1时时,对对应应的的中中断断请请求求就就受受到到屏屏蔽蔽,不不能能进进入
59、入优优先先权权裁裁决决器器。当当IMRIMR某一位为某一位为0 0时,对应的中断请求就被开放。时,对应的中断请求就被开放。(2)特殊屏蔽方式 在在有有些些场场合合中中,希希望望一一个个中中断断服服务务程程序序能能动动态态地地改改变变系系统统的的优优先先级级结结构构。例例如如,在在执执行行中中断断处处理理程程序序某某一一部部分分时时,希希望望禁禁止止较较低低级级的的中中断断请请求求,但但是是,在在执执行行中中断断处处理理程程序序另另一一部部分分时时,又又能能够够开开放放比比本本身身的的优优先先级级别别较较低低的的中中断断请请求求。为为达到此目的,引入了达到此目的,引入了特殊屏蔽特殊屏蔽方式。方式
60、。 在在特特殊殊屏屏蔽蔽方方式式中中,可可在在中中断断服服务务子子程程序序中中用用中中断断屏屏蔽蔽命命令令来来屏屏蔽蔽当当前前正正在在处处理理的的中中断断,同同时时可可使使ISRISR中中的的对对应应当当前前中中断断的的相相应应位位清清0 0,这这样样一一来来不不仅仅屏屏蔽蔽了了当当前前正正在在处处理理的的中中断断,而且也真正开放了较低级别的中断请求。而且也真正开放了较低级别的中断请求。在在这这种种情情况况下下,虽虽然然CPUCPU仍仍然然继继续续执执行行较较高高级级别别的的中中断断服服务务子子程程序序,但但由由于于ISRISR中中对对应应当当前前中中断断的的相相应应位位已已经经清清0 0,如如同同没没有有响响应应该该中中断断一一样样。所所以以,此此时时对对于于较较低低级级别别的的中中断断请请求求,8259A8259A仍仍然然能能产产生生INTINT中中断断请请求求,CPUCPU也也会会响响应应较较低低级级别别的的中断请求。中断请求。 特殊屏蔽方式允许低优先特殊屏蔽方式允许低优先级中断请求中断正在服务级中断请求中断正在服务的高优先级中断。的高优先级中断。