版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章中断技术10-1中断和中断系统10-2中断控制器8259A10-38086微处理器的中断指令和8086微型计算机的中断系统10-4实地址方式下的可屏蔽中断服务程序的设计重点:8259A工作原理与应用10.1.1中断的基本概念1、中断的概念(P289)CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。中断的基本概念什么是中断?与生活场景的比较正在看书电话铃响接电话继续看书执行程序事件发生事件处理继续执行程序中断处理中断请求及响应实际场景计算机中断返回为何引入中断?提高数据传输率;避免了CPU不断检测外设状态的过程,提高了CPU的利用率。实现对特殊事件的实时响应。如多任务系统操作系统中:缺页中断设备中断各类异常…等10.1.2中断请求与控制和中断源的识别(P289)1中断请求中断源:引起中断的原因或发出中断申请的来源。每个中断源都设置了一个中断请求触发器来记载它的中断申请信号,当CPU响应了这个中断请求后,该触发器记载的中断请求信号被清除。外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求 例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出。中断源引起CPU中断的事件:中断源。外设:请求输入输出数据,报告故障等事件:掉电、硬件故障、软件错误、非法操作、定时时间到等中断源分为:外部中断、内部中断内部中断:CPU内部执行程序时自身产生的中断外部中断:CPU以外的设备、部件产生的中断
8086/8088的外部中断信号:INTR、NMIINTR:可屏蔽中断请求,‘1’有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。NMI:非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。2、中断源识别概念:当系统有多个外部中断源时,一旦发生中断,CPU必须识别是哪一个中断源或设备提出的中断请求,以便对其进行处理,这就是识别中断源。识别中断源有两个方法:软件查询:将中断信号从数据总线读入,采用程序查寻判别。即每个中断源都有一条中断请求信号线,且固定一个中断服务程序的入口地址,CPU一旦检测到某条信号线有中断请求,就进入相应的中断服务程序。向量中断法:由中断源提供中断类型号,CPU根据类型确定中断源。(8086/8088即采用此种方法)即CPU在中断源发出的响应中断请求后还输出一个中断向量,CPU根据这个中断向量能够获得该中断源的中断服务程序的入口地址,从而为其服务。CPU中断响应时,要完成的任务:向中断源发出INTA中断响应信号(对INTR的回应);断点保护,包括CS、IP和PSW(标志寄存器)。这主要是保证中断结束后能返回被中断的程序。获得中断服务程序首地址(入口)。如何得到中断处理程序的首地址?固定入口法(即软件查询,直接给出入口地址)中断向量法8086/8088中断源类型NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断可屏蔽中断请求n43012与中断有关的控制线为:NMI、INTR、INTA内部中断除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。单步中断:类型号1,TF=1时产生(当前指令需执行完)断点中断:类型号3,这是一个软件中断,即INT3指令。溢出中断:类型号4,这是一个软件中断,即到指令。软件中断:即INTn指令,类型号n(0-255)。外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC(PeripheralInterfaceController)提供。IF=1时CPU才能响应。补充:PIC的含义?(1)在IBMPC机由8259A可编程中断控制器(PIC)来完成。(2)PIC单片机:
PIC单片机(PeripheralInterfaceController)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC共享的部分相当于人的神经系统。
PIC单片机是一个小的计算机
PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。8086/8088系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码。溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值软件中断的类型码由指令给出可屏蔽中断的类型码由PIC给出CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。3.中断控制外部中断:有中断屏蔽和中断允许两级控制。用CPU内部的中断允许触发器来开、关中断,80×86受IF控制,对应指令为STI、CLI。10.1.3中断系统的功能(P290)实现中断及返回外部中断响应过程:非屏蔽中断,与内部中断响应过程类似类型号:N=2可屏蔽中断(1)读中断类型码(2)将标志寄存器的值推入堆栈(3)清中断允许标志IF和单步中断TF(4)保护断点,将CS、IP推入堆栈(5)得到中断向量(6)执行中断服务程序8086/8088的中断响应总线周期第一个中断响应周期:用来通知发中断请求的设备,CPU准备响应中断,准备好中断类型码;T1状态:AD15-AD0浮空;IF=1T2、T3状态;给出中断响应信号INTA。第二个中断响应周期;被响应的外设数据线送一个字节的中断矢量类型(用低8位数据线),CPU读入后,从中断矢量表上找到服务程序的入口地址。第一个总线周期第二个总线周期总结:第一个总线周期通过用来通知外设,CPU准备响应中断,第二个总线周期通过INTA通知外设送中断类型码,该类型码通过数据总线的低8位传送,来自中断源。CPU据此转入中断服务子程序。内部中断响应过程:无中断响应周期中断类型码固定或由指令给出响应过程主要步骤:取中断类型号N标志寄存器(PSW)内容入栈当前代码段寄存器(CS)内容入栈当前指令计数器(IP)内容入栈CLI,将TF清零从中断向量表中取4xN中的字节内容送IP,取4xN+2中的字节内容送CS转中断处理程序PSW即程序状态字,ProgramStatusWord
程序状态寄存器PSW是计算机系统的核心部件——控制器的一部分。PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CF位),有无溢出(OF位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(PF位)等;另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(FlagRegister)。(2)实现优先权排队 在有多个中断源同时提出中断请求时,CPU要能找到优先权级别最高的中断源,响应它的中断请求;在优先权别高的中断源处理完了以后,再响应级别较低的中断源。(3)实现中断嵌套。即高级中断源能中断CPU对低级中断源的中断服务。CPU在执行某一中断时,若有优先级高的中断申请,CPU要能中断正在进行的中断服务程序,保留其断点和现场,响应高级中断,在高级中断处理完后,再继续执行被中断的中断服务程序。补充:优先级的管理方式
(1)完全嵌套方式
在对8259进行初始化后,没有设置其它优先级方式,则自动按此方式工作.即这是8259A默认的优先权设置方式,在全嵌套方式下,8259A所管理的8级中断优先权是固定不变的,其中IR0的中断优先级最高,IR7的中断优先级最低。特点:在全嵌套方式中,中断请求按优先级IR0~IR7级进行处理,IR0级中断的优先级最高。
当一个中断被响应时,中断类型码被放到数据总线上,ISR中的对应位ISn被置1,然后进入中断服务程序。一般情况下(除了中断自动结束方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。
CPU响应中断后,请求中断的中断源中,优先级最高的中断源,在中断服务寄存器ISR中的相应位置位,而且把它的中断矢量送至系统数据总线,在此中断源的中断服务完成之前,与它同级或优先级低的中断源的中断请求被屏蔽只有优先级比它高的中断源的中断请求才是有效的,从而出现中断嵌套。(2)优先级自动循环方式
用在:多个中断源优先级相等的场合。
在实际应用中,中断源优先级的情况是比较复杂的,要求8级中断的优先级在系统工作过程中,可以动态改变。即一个中断源的中断请求被响应之后,其优先级自动降为最低。系统启动时,8级中断优先级默认为IR0—IR7,这时,刚好IR4发出了中断请求,CPU响应之后,若8259A工作在优先级自动循环方式下,则中断优先级自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。
特点:优先级是在变化的,一个设备中断处理完后,它的优先级自动降为最低。
由8259A的操作命令字OCW2决定。
(3)特殊全嵌套方式
用于:多片级联方式,特殊全嵌套方式仅设置在主片中.
特殊全嵌套方式与全嵌套方式基本相同,所不同的是,当CPU处理某一级中断时,如果有同级中断请求,那么CPU也会作出响应,从而形成了对同一级中断的特殊嵌套。 特殊全嵌套方式通常应用在有8259A级连的系统中,在这种情况下,对主8259A编程时,通常使它工作在特殊全嵌套方式下。这样,一方面,CPU对于优先级别较高的主片的中断输入是允许的,另一方面,CPU对于来自同一从片的优先级别较高(但对于主片来讲,优先级别是相同的)的中断也是允许、能够响应的。
特点:和全嵌套方式基本相同,不同的是:在处理某以及中断时,可响应同级中断,从而实现对同级中断请求的特殊嵌套.(4)优先级特殊循环方式
优先级特殊循环方式与自动循环方式相比,只有一点不同,即初始化的优先级是由程序控制的,而不是默认的IR0—IR7。(5)中断查询方式
当系统中的中断源很多,超过64个时,则可以使8259A工作在查询方式下,中断查询方式的特点是:(a)中断源仍往8259A发中断请求,但8259A却不使用INT信号向CPU发中断请求信号。(b)CPU内部的中断允许标志复位,所以CPU对INR引脚上出现的中断请求呈禁止状态。(c)CPU用软件查询的方法来确定中断源,从而实现对设备的中断服务,可见,中断查询方式,既有中断的特点,又有查询的特点,从外设的角度来看,是靠中断的方式来请求服务,但从CPU的角度来看,是用查询方式来确定发中断请求的中断源。查询是通过CPU向8259A发查询命令来实现的,查询命令字由OCW3构成的,其格式如下:D7。。。D3D2D1D0X0001100其中D2=1,是查询命令的特征位。8259A在接到CPU发来的上述格式的查询命令之后,立即组成状态字,等待CPU来读取,状态字的格式如下:D7。。。D3D2D1D0IXXXXW2W1W0若I=0,则表示该8259A芯片没有中断请求,若I=1,则表示有中断请求,W2、W1、W0即为本片中中断请求优先级别最高的中断源的编码。10.1.4CPU对外部可屏蔽的中断的响应及中断过程中断响应及中断过程如下:关中断:在CPU响应中断后,发出中断响应信号INTA的同时,内部自动地关中断(IF=0)保留断点给出中断入口地址保护现场中断服务恢复现场中断返回10.2可编程中断控制器8259A主要内容:8529A的内部结构8259A的工作方式8259A的初始化命令字和操作命令字8259A级联方式8259A使用举例多片8259A组成的主从式中断系统
图10-18259A的内部组成(P292)读/写逻辑控制逻辑(电路)优先权分析器(PR)中断服务寄存器(ISR)
一、8529A的芯片内部结构
1.数据总线缓冲
2.读写控制逻辑电路
3.级联缓冲/比较器
4.中断请求寄存器
5.中断服务寄存器
6.中断屏蔽寄存器
7.优先权判别单路
8.控制逻辑电路
在8086系统中,CPU和8259A的所有数据传送都在数据总线的低8位上进行。地址总线的A0与8259A的A0相连,以保证数据都在总线的低8位中进行。
图10-18259A的内部组成(P292)读/写逻辑控制逻辑(电路)优先权分析器(PR)中断服务寄存器(ISR)硬件连接:PC机与8259A的连接8259A的工作原理如下:①数据总线缓冲器:它是8259A与系统数据总线的接口,是8位双向三态缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该缓冲器传送的。②读/写控制电路:CPU通过它实现对8259A的读/写操作。③级联缓冲/比较器:用以实现8259A芯片之间的级联,使得中断源可以由8级扩展至64级。④中断请求寄存器IRR分别和IR7~IR0相对应,IRR接收外部的中断请求。接到某一引脚的中断请求后,IRR中的对应位便置1。⑤
中断服务寄存器ISR:8位,当CPU正在处理某个中断源的中断请求时,ISR寄存器中的相应位置1。⑥中断屏蔽寄存器IMR:8位,相应位用以对8个中断源的中断请求信号进行屏蔽控制。当其中某位置”0”时,则相应的中断请求可以向CPU提出;否则,相应的中断请求被屏蔽,即不允许向CPU提出中断请求。该寄存器的内容为8259A的操作命令字OCW1,可以由程序设置或改变。⑦优先权判别器PR:用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。⑧控制逻辑电路:对整个芯片内部各部件的工作进行协调和控制。
10.2.2、8259A处理中断的过程8259A每次处理中断包括下述过程:在中断请求输入端IR7~IR0上接受中断请求。当某IRi有效时,IRR相应位置1中断请求锁存在IRR中,并与IMR相“与”,将未被屏蔽的中断送给优先级判定电路。优先级判定电路检出优先级最高的中断请求位,并置位该位的ISR。控制逻辑接受中断请求,输出INT信号。CPU接受INT信号,进入连续两个中断响应周期。单片使用或是由CAS2~CAS0选择的从片8259A,就在第2个中断响应周期,将中断类型向量从D7~D0线输出;如果是作主片使用的8259A,则在第一个中断响应周期,把级联地址从CAS2~CAS0送出。CPU读取中断向量,转移到相应的中断处理程序。由CPU发出中断结束EOI命令使ISRi复位10.2.3、8259A的级联连接硬件连接:PC机与单片8259A的连接,对比图10.2,P293
级联方式:一片主8259,2片从8259主接5V,从8259接地.1号从8259的INT接主8259的IR62号从8259的INT接主8259的IR4可管理22级中断特殊嵌套方式的使用设1号从8259:IR7有申请,并响应1号从8259向主8259的IR6发申请,并得到响应现在,1号从8259:IR0有申请,而IR0的优先级别高于IR7,应该响应IR0,应该允许IR0进入。解决办法:使用特殊全嵌套方式10.2.48259A的命令字8259A的命令字包括初始设定的初始化命令字ICW和操作过程中给出的操作命令字OCW
1、初始化命令字命令字:ICWi(i=1~4)操作命令字:OCWi(i=1~4)8259A的地址(每片8259A包含两个内部端口地址):偶地址端口(A0=0)奇地址端口(A0=1)1.预置命令字(8259A的初始化命令字)
ICW1:芯片控制初始化命令字ICW2:设置中断类型码ICW3:主片/从片的初始化命令字ICW4:方式控制初始化命令字(1)ICW1的格式(A0=0)
ICW1:芯片控制初始化命令字。必须写入偶地址端口中。(即A0=0)
D7~D5:这几位在此系统中不用,为1为0都可以。
D4:设置为1,指示ICW1的标志。
D3(LTIM):设定中断请求信号的形式。为1,表示中断请求为电平触发方式,为0,表示中断请求为边沿触发方式。
D2(ADI):在8086/8088中不起作用。
D1(SNGL):指出8259A有否级联。为1,表示系统中有一片8259A,为0,表示系统中有多片8259A。
D0(IC4):指出后面是否设置ICW4。使用ICW4时IC4必须为1。
A0D7D6D5D4D3D2D1D00×××1LTIM×SNGLIC4(2)ICW2的格式(A0=1)
ICW2是设置中断类型码的高5位初始化命令字(低3位为IR7~IR0编码后的值),写入8259A的奇地址端口。
当8259A用于MCS80/85系统中时,用于确定中断入口地址的高8位(A15—A8);当8259A用于8088/8086系统中时,ICW2的D7—D3为编程设置位,作为本芯片所管理8级中断类型码的高5位。而D2—D0位为8级中断源所对应的编码(其中:000—IR0,111—IR7)编程设置对其无影响。例:若ICW2=45H,则8极中断源的中断类型码分别为IR0为40H,…,IR7为47H
A0D7D6D5D4D3D2D1D01T7T6T5T4T3×××(3)ICW3的格式(A0=1)ICW3用于8259A的级连,8259A最多允许有一片主片和8片从片级连,使能够管理的中断源可以扩充至64个。若系统中只有一片8259A,则不用ICW3,若由多片8259A级连,则主、从8259A芯片,都必须使用ICW3,主、从8259A芯片中的ICW3的使用方式不同。
ICW3是标志主片/从片的初始化命令字,指出主8259那个引脚连有从8259,对应位置一。从8259A的识别地址,指出它接在主8259的哪个IR端上1A01A0高5位不用,无意义,一般置0本片8259A为从片,ICW3的格式,指出从8259A连在主8259那个引脚,由D2D1D0指出。
(4)ICW4的格式(A0=1)
ICW4为方式控制初始化命令字,写入奇地址端口,只有当ICW1中D0=1时才需要设置,对于8088/8086系统是必须设置的预置命令字。
8259AICW4格式8259AICW4格式D0位对于8086/8088系统配置来说恒置为11A0用ICW1设置,是否级连,请求信号格式,后面是否用ICW4用ICW2设置中断类型码是否为级连方式?本片为主片吗?设ICW3的高五位为零,低三位为标识码设ICW3的各位对应IR0~IR7的连接情况需要用ICW4吗?用ICW4设置,是否为特殊全嵌套方式;缓冲方式;自动结束中断方式;8086/8088系统结束是否否否是是8259A的初始化流程8259A的初始化流程
例10.1:试按照如下要求对8259A设置初始化命令字:系统中仅用一片8259A,中断请求信号采用边沿触发,中断类型码为08H~0FH;用全嵌套、缓冲、非自动结束中断方式。8259A的端口地址为20H和21H,可用下面的程序段来写入预置命令字ICW1~ICW4分析:无级联,所以不用设ICW3,
对ICW1,A0D7D6D5D4D3D2D1D00×××1LTIM×SNGLIC411若D3=1,则表示中断请求信号为高电平有效;若D3=0,则表示中断请求信号为上升沿有效。本题用边沿触发,故为0故ICW1可为00010011即为13H。程序语句为:MOVAL,13HOUT20H,AL对ICW2:A0D7D6D5D4D3D2D1D01T7T6T5T4T3×××当8259A用于MCS80/85系统中时,用于确定中断入口地址的高8位(A15—A8);当8259A用于8088/8086系统中时,ICW2的D7—D3为编程设置位,作为本芯片所管理8级中断类型码的高5位。而D2—D0位为8级中断源所对应的编码(其中:000—IR0,111—IR7)编程设置对其无影响。本题规定该8259A引入的8级中断类型码为08H-0FH,故其高5位为00001***,ICW2也就为00001***,取为00001000,即08H程序语句为:MOVAL,18HOUT81H,AL程序语句为:MOVAL,08HOUT21H,AL对ICW4A0D7D6D5D4D3D2D1D01000SFNMBUFM/SAEOIµPMD0位对于8086/8088系统配置来说恒置为1单片,故此位不起作用,为0本题是全嵌套(故为0)、缓冲(故为1)、非自动结束中断方式设为0故ICW4为00001001,即为09H程序语句为:MOVAL,09HOUT21H,AL例10.2:试对一个主从式8259A进行初始化命令字设置。从片的INT与主片的IR2相连。从片的中断类型码为70H~77H,端口地址为A0H和A1H;主片的系统中仅用一片8259A,中断类型码为08H~0FH,端口地址为20H和21H,中断请求信号采用边沿触发,采用全嵌套、缓冲、非自动结束中断方式。可用下面的程序段来写入预置命令字ICW1~ICW4主片初始化程序:MOVAL,13H;ICW1OUT20H,ALMOVAL,8;ICW2:中断类型码为08H~0FHOUT21H,AL;MOVAL,4;ICW3:IR2上连接从片OUT21H,ALMOVAL,0DH;ICW4OUT21H,AL从片初始化程序:MOVAL,11H;OUT0A0H,ALMOVAL,70H;ICW2:中断类型码为70H~77HOUT0A1H,AL;MOVAL,2;ICW3:IR2上连接从片OUT0A1H,ALMOVAL,9H;ICW4OUT0A1H,AL对8259A按照上述流程进行初始化编程之后,相应芯片就做好了接收中断的准备,可接收来自IRi端的中断请求。自动进入操作命令状态,准备接收CPU写入8259A的操作命令字OCWi若中断源发生了中断请求,则8259A按照初始化编程所规定的各种方式来处理这种请求。在8259A的工作期间,CPU也可以通过操作命令字,实现对8259A的操作控制,或者改变工作方式,或者实时读取8259A中某些寄存器的内容。8259A有三个操作命令字,我们分别讨论如下:2.8259A的操作命令字:OCW1~OCW3
2.8259A的操作命令字:OCW1~OCW3
(1)OCW1的格式(A0=1)OCW1是对IMR置位、复位的命令,置位位对应的中断被屏蔽,称为屏蔽命令字。写入8259A的奇地址端口。当OCW1某位=1,表示对应的中断请求被屏蔽。
即它的每一位,可以对相应的中断请求输入进行屏蔽,若OCW1的某一位为1,则相应的中断请求输入被屏蔽;反之,则相应的中断请求输入呈现允许状态。即若Mi=1,则表示8259A对IRi的中断请求呈屏蔽状态;否则若Mi=0,则表示8259A对IRi的中断请求呈允许状态。
OCW2是中断结束(EOI)的命令字,用于复位ISR及改变优先级。用于设置优先级循环方式和中断结束方式,写入偶地址单元。其中D4、D3位恒定为0,是OCW2的特征位,R、SL、EOI三位的不同组合,可以组成7种不同的操作命令,用于改变8259A的工作方式。其中三种操作命令字要用到OCW2的低三位,这三位所形成的编码指出操作所涉及到的中断源。R—用于表示优先级是否采用循环方式;SL—用于确定是否需要使用L2、L1、L0来明确中断源;EOI—用于指示OCW2是否作为中断结束命令。L2、L1、L0—当SL=1时,三位的编码用以指示8个中断源之一。
(2)OCW2的格式(A0=0)0A0R、SL、EOI共有8种不同的组合形式,其中有7种是相应的控制命令,分别介绍如下:(a)0、0、0:为取消自动EOI循环命令;(即复位)(b)1、0、0:为设置自动EOI循环命令;(即置位)(c)0、0、1:为普通的EOI命令,它适用于完全嵌套方式,在中断服务程序结束时,用于清除ISR中最后被置位的相应位。显然,只有在ICW4中的AEOI=0时,才需要在中断服务子程序中向8259A发普通的EOI命令。(d)0、1、1:为特殊的EOI命令,与普通的EOI命令的差别在于,它需要利用L2、L1、L0位明确指出ISR寄存器中需要被复位的位,(e)1、0、1:为普通循环的EOI命令,它在中断服务程序结束时使用,它使已置位的ISR寄存器中优先级最高的那一位复位,同时赋予刚刚结束中断处理的中断源的中断优先级最低。(f)1、1、1:为特殊的EOI循环命令,它一方面复位ISR寄存器中由L2、L1、L0位明确指出的那一位;另一方面,使L2、L1、L0位明确指出的那一个中断源的中断优先级最低。(g)1、1、0:为置位优先权命令,它用以设置优先级特殊循环方式,即利用L2、L1、L0位明确指出中断优先级最低的中断源。(h)0、1、0:非操作命令,无实际意义。(3)OCW3的格式(A0=0)
OCW3是读ISR和IRR以及指定设置特殊屏蔽方式的命令。
P=1时,表示查询。否则,表示不是查询命令。RR=1,RIS=0,对IRR寄存器的读出;RR=1,RIS=1,对ISR寄存器的读出。RR=0,RIS=1/0,无效。ESMM=SMM=1,置特殊屏蔽方式,8259A脱离当前优先级方式.ESMM=1,SMM=0,撤销特殊屏蔽方式ESMM=0,SMM=1/0,无效。若要读IMR,不须设OCW3的查询命令。
IR4和IR1引脚上有中断请求,CPU执行一条输入指令(INAL,81H),从奇地址端口读得以下查询字:D4、D3为OCW3的标志位0A0D7为无关位,故设为0D2D1D0=100反映当前处理的最高级中断为IR4见P242的图9-16D7=1反映当前有中断请求OCW3的作用:在通常方式的中断服务过程中,ISR设置期间对优先级更低的中断请求不响应。特殊屏蔽方式是可以解除这种禁止中断状态的方式。在这种方式时,除了由ISR设置的位和由IMR屏蔽的位对应的中断外,其他所有级别的中断均可响应。4.8259A那些寄存器内容可读出?
设8259A地址80H,81H1)读中断屏蔽寄存器IMR内容:中断屏蔽字INAL,81H;A0=12)要读出ISR或IRR的内容,必须设置OCW3中的P(D2)=1:(1)读IRR:设置OCW3:D1D0=10(2)读ISR:设置OCW3:D1D0=11执行输入指令INAL,81H8259A的级联(补充回忆)
所谓级联,就是在微型计算机系统中,以1片8259A的INT引脚与CPU的INTR引脚相连,称为主片;再将最多8片8259A的INT引脚,分别与主8259A的IR0-IR7相连,称为从片。显然,在主-从式8259级联的微机系统中,系统能够管理的中断源可由8级扩展至64级。主-从式8259级联系统的连接,需要注意的要点如下:主片的INT引脚接CPU的INTR引脚,从片的INT引脚分别主片的IRi引脚,使得由从片输入的中断请求,能够通过主片向CPU发出;主片的3条级联线与各从片的同名级联线引脚对接,主片为输出,从片为输入。主片用以向各从片发出优先级别最高的中断请求的从片代码,各从片用该代码与本片的代码进行比较,符合则将本片ICW2中预先设定中断类型码,送数据总线。主片的接+5v,从片的接地。1片主片与3片从片级联的情况级连系统中的所有8259A都必须进行各自独立的编程,作为主片的8259A必须设置为特殊的全嵌套方式,可以避免相同从片中,优先级较高的中断请求被屏蔽的情况发生.与一般的全嵌套方式相比,有两点需要注意:
①当来自某个从设备的中断请求被响应之后,主片的优先权逻辑不封锁这个从片,从而可以使来自从设备的较高优先级的中断请求能被主片正常接受,并向CPU发出。②
中断服务结束时,必须用软件来检查被服务的中断是否为该从片中,唯一的中断请求。为此,须先向从片发一个一般的中断结束命令,清除已完成服务的ISR中的相应位,然后,再读出ISR的内容,检查是否全0,若为全0,则向主片发一个中断结束命令,清除与从设备相应的ISR中的位;反之,则不向主片发中断结束命令,因为同一从片中还有其它中断请求正在处理。四.8259A使用举例
例1.IBMPC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H—0FH,请写出其初始化程序A0D7D6D5D4D3D2D1D00×××1LTIM=0×SNGL=1IC4=1ICW1=13HA0D7D6D5D4D3D2D1D01T7T6T5T4T3×××ICW2=08HA0D7D6D5D4D3D2D1D01000SFNM=0BUF=1M/S=1AEOI=0µPM=1ICW4=0DHA0D7D6D5D4D3D2D1D01M7=0M6=0M5=0M4=0M3=0M2=0M1=0M0=0因为允许中断请求进入故OCW1=00H其中断类型码为08H~0FH,故ICW2=08H采用边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式MOVDX,20HMOVAL,00010011B;即13HOUTDX,AL;写入ICW1=13HMOVDX,21HMOVAL,08HOUTDX,AL;写入ICW2=08HMOVAL,00001101BOUTDX,AL;写入ICW4=0DHXORAL,ALOUTDX,AL;写入OCW1。。。。。。STI;设置IF为1例2(补充):8259A初始化要求:端口地址:20H~21H8个中断请求信号:IR0~IR7采用完全嵌套方式、缓冲、0级最高,7级最低。设定0级请求对应中断号为8,1级为9,….7级为0FH。即中断类型号为08H-0FH分别是:IRQ0:00001000=08HIRQ1:00001001=09HIRQ2:00001010=08H…...IRQ7:00001111=0FH8259A初始化编程:INTA00EQU020H;8259A端口0INTA01EQU021H;8259A端口1…….MOVAL,13H;ICW1:边沿触发.单片.要ICW4OUT20H,ALMOVAL,08H;ICW2:IRQ0中断类型为08HOUT21H,ALMOVAL,09H;ICW4全嵌套、缓冲、从片、8088系统OUT21H,AL;普通EOI方式A0D7D6D5D4D3D2D1D01000SFNM=0BUF=1M/S=0AEOI=0µPM=1(1)预制命令字:ICW1,ICW2.ICW3.ICW4
ICW1:边沿触发.单片.要ICW4
0001
001
1
=13HD4:设置为1,指示ICW1的标志。
D3(LTIM):设定中断请求信号的形式。为0,
表示中断请求为边沿触发方式。
D2(ADI):在8086/8088中不起作用。
D1(SNGL):指出8259A有否级联。为1,表示系统中有一片8259A,
D0:(IC4):为1,表示系统为8086/8088,要用ICW4.ICW4的格式:
必须写到8259A的奇地址端口中.
00001001=09HICW4全嵌套.8088系统非自动结束例3.读8259A相关寄存器的内容。设8259A的端口地址为20H、21H,请读入IRR、ISR、IMR寄存器的内容,并相继保存在数据段2000H开始的内存单元中;若该8259A为主片,请用查询方式,查询哪个从片有中断请求。0A010:读IRR11:读ISR0×:无效,不读没规定屏蔽方式,设为00读IRR时,OCW3为00001010读ISR时,OCW3为00001011查询时,可设OCW3为00001100P=1,有查询P=0,不查询特征位MOV AL,xxx01010B发OCW3,欲读取IRR的内容OUT20H,ALINAL,20H读入并保存IRR的内容MOV[2000H],ALMOVAL,xxx01011B发OCW3,欲读取ISR的内容OUT20H,ALINAL,20H读入并保存ISR的内容MOV[2001H],ALINAL,21H;只要将端口地址设为奇地址,不用发OCW3直接用IN指令MOV[2002H],AL;就可在程序任何位置读入并保存IMR的内容MOVAL,xxx0110xB发OCW3,欲查询是否有中断请求OUT20HINAL,20H读入相应状态TESTAL,80H;并判断最高位是否为1JZDONEANDAL,07H判断中断源的编码…………例4:(补充实例):一片从8259的INT端连在主8259的IR3上,主8259的IR0和IR5端分别引入两个中断,从8259的IR2和IR3引入两个中断.主8259中断类型码为:40H,45H;中断服务程序的段基址为1000H,偏移地址为1050H和2060H.主8259端口地址为:FFE8H,FFE9H从8259中断类型码为:32H,33H;中断服务程序的段基址为2000H,偏移地址为5440H和3620H.从8259端口地址为:FFFAH,FFF9H
主8259A的初始化程序段:MOVAL,11H
;定义ICW1,边缘触发,级联,单级,需ICW4
MOVDX,0FFE8HOUTDX,AL;ICW1送偶地址端口MOVAL,40H
;定义ICW2,使IRQ0的中断类型码为40HMOVDX,0FFE9H;送奇地址端口OUTDX,ALMOVAL,08H
;定义主片ICW3,其IR3上接从片OUTDX,AL;ICW3送奇地址端口MOVAL,11H
;定义ICW4,8086,特殊完全嵌套方式OUTDX,ALMOVAL,0D6H;定义OCW1=11010110,即屏蔽IR0,IR3,IR5以外的 ;中断申请OUTDX,ALMOVAL,20H
;定义OCW2=00100000,普通EOI方式OUTDX,AL
从8259A的初始化程序段:MOVAL,11H
;定义ICW1,边缘触发,级联,单级,需ICW4MOVDX,0FFFAHOUTDX,AL;ICW1送偶地址端口MOVAL,30H
;定义ICW2,使从片的中断类型码为30HMOVDX,0FFEBH;送奇地址端口OUTAL,DXMOVAL,03H;定义从片ICW3=00000011,确定主片的IR3上接从片OUTDX,AL;ICW3送奇地址端口MOVAL,11H
;定义ICW4,8086,特殊完全嵌套方式OUTDX,ALMOVAL,0F9H
;定义OCW1=11111001,屏蔽IR1,IR2以外的中断申请OUTDX,ALMOVAL,20H
;定义OCW2,普通EOI方式OUTDX,AL
补充例.进入和退出特殊屏蔽方式的流程图。(本题可略)假定,初始化之后,8259A工作于完全嵌套方式,要求对于IR3的中断级,能够允许任何级别的中断中断其中断服务程序,即8259A按特殊屏蔽方式工作。因而在响应IR3而执行IR3的中断服务程序时,在A处,写入OCW1以屏蔽IR3,然后写入OCW3使ESMM=SMM=1,于是从A处开始,8259A进而特殊屏蔽方式,此后继续执行IR3的中断服务程序。在中断服务结束之前,再向8259A写入OCW3使ESMM=1,SMM=0,结束特殊屏蔽方式,返回到完全嵌套方式,接着写入OCW1,撤消对IR3的屏蔽,最后写入OCW2,向8259A发出EOI命令。此例,说明在IR3的中断服务程序的A处至B处,允许任何级别的中断源中断IR3的服务程序。(除本身之外)。。。IR3中断服务程序入口STI保护现场。。。STI开中断MOVAL,00001000B服务程序OUT21H,AL;OCW1写入OCW1,使IM3=1MOVAL,01101000B写入OCW3,使ESMM=SMM=1OUT20H,AL;OCW3继续服务。。。写入OCW3,使ESMM=1,SMM=0MOVAL,01001000B写入OCW1,使IM3=0OUT20H,AL;OCW3写入OCW2,普通的EOI命令MOVAL,00H中断返回OUT21H,AL;OCW1MOVAL,00100111BOUT20H,AL;OCW3OUT21H,AL;OCW3EOI命令10.380×86微处理器的中断指令和80×86微型计算机的中断系统10.3.1中断指令指定类型中断指令INTN(n=N):类型N中断,中断类型由N指定,n=0~255,N只是n中的一部分。溢出中断指令INTO(n=4):类型4中断,OF=1才执行中断返回指令IRET/IRETD:作用与RET指令类似,使控制返回主程序,但IRET是远返回(返回CS、IP与FR的值),IRED是32位的中断返回指令,但仅返回EIP的值。10.3.2外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。外部中断响应过程:非屏蔽中断,与内部中断响应过程类似类型号:N=2可屏蔽中断(1)读中断类型码(2)将标志寄存器的值推入堆栈(3)清中断允许标志IF和单步中断TF(4)保护断点,将CS、IP推入堆栈(5)得到中断向量(6)执行中断服务程序可屏蔽中断响应1.向CPU的引脚INTR发中断申请信号当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。2.送中断类型号在CPU中断响应周期,针对不同外设的中断请求,向CPU传送不同的中断类型号,使CPU执行相应的中断子程。中断申请管理接口的功能:在IBMPC机由8259A可编程中断控制器(PIC)来完成。10.3.3内部中断(P298)概念:由CPU自己启动的中断处理过程,称为内部中断。种类:根据内部中断的报告方式和性质,分为:1、故障:指某条指令在启动之后,真正执行之前,就被检测到异常而产生的一种中断。2、陷阱:在指令执行过程中引起的中断。这类异常主要是由执行除法指令或中断调用指令(INTN)引起的,即在指令执行后产生的异常。出现陷阱中断时把(E)IP和CS即断点推入堆栈保存后就进入陷阱处理程序,陷阱中断处理完后,返回到断点继续执行。3、异常中止:通常是由硬件错误或非法的系统调用引起。一般无法确定造成异常指令的准确位置,程序无法执行,系统也无法恢复原操作,必须重新启动系统。内部中断除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。单步中断:类型号1,TF=1时产生(当前指令需执行完)断点中断:类型号3,这是一个软件中断,即INT3指令。溢出中断:类型号4,这是一个软件中断,即到指令。软件中断:即INTn指令,类型号n(0-255)内部中断响应过程:无中断响应周期
中断类型码固定或由指令给出响应过程主要步骤:取中断类型号N标志寄存器(PSW)内容入栈当前代码段寄存器(CS)内容入栈当前指令计数器(IP)内容入栈CLI,将IF清零从中断向量表中取4xN中的字节内容送IP,取4xN+2中的字节内容送CS转中断处理程序10.3.4中断类型码及中断种类优先级从高到低顺序如下:内部中断
NMIINTR
单步中断注:NMI和INTR属于外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。10.3.5中断向量表和中断描述符在80×86微型计算机中,因为工作方式不同而获取中断服务程序入口地址的方法有所不同。实地址方式使用中断向量表,虚地址保护方式使用中断描述符表。3、中断向量表(IVT)存放各类中断的中断服务程序的入口地址(段和偏移)——中断向量表的地址位于内存的00000H~003FFH,大小为1KB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石家庄医学高等专科学校《中医骨伤》2025-2026学年期末试卷
- 四平职业大学《大学生职业生涯规划》2025-2026学年期末试卷
- 上海海关学院《新编中国秘书史》2025-2026学年期末试卷
- 徐州工程学院《国际金融学(姜波克版)》2025-2026学年期末试卷
- 太原学院《中西医结合外科学》2025-2026学年期末试卷
- 上海现代化工职业学院《古希腊罗马神话》2025-2026学年期末试卷
- 沈阳体育学院《国际结算实务》2025-2026学年期末试卷
- 山西卫生健康职业学院《现代公司管理》2025-2026学年期末试卷
- 上海师范大学《临床医学实践技能》2025-2026学年期末试卷
- 乌兰察布职业学院《口腔临床药物学》2025-2026学年期末试卷
- 2026年马鞍山师范高等专科学校单招职业适应性测试题库含答案详解(研优卷)
- (新教材)2026年部编人教版二年级下册语文 第7课 我不是最弱小的 课件
- 2026广东清远市清城区医疗卫生共同体总医院招聘编外工作人员42人笔试参考题库及答案解析
- 园林绿化工国家职业技能标准
- 智联招聘考试题库及答案
- 2025-2030中国风能回收市场投资建议及重点企业发展调研研究报告
- 2025上半年湖南能源集团招聘322人笔试历年常考点试题专练附带答案详解2套试卷
- 前程无忧在线测试题库及答案行测
- 第15课+列强入侵与中国人民的反抗斗争(教学设计)-中职历史(高教版2023基础模块)
- HG-T 2521-2022 工业硅溶胶介绍
- 无跨越架封网装置计算程序(直接求解)
评论
0/150
提交评论