第七章 中断系统_第1页
第七章 中断系统_第2页
第七章 中断系统_第3页
第七章 中断系统_第4页
第七章 中断系统_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

主要内容中断系统概述8086CPU的中断方式可编程中断控制器8259A第7章中断系统中断的基本概念中断处理系统7.1

中断系统概述什么是中断?与生活场景的比较正在看书电话铃响接电话继续看书执行程序事件发生事件处理继续执行程序中断处理中断请求及响应实际场景计算机中断返回7.1.1

中断的基本概念中断的定义CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。中断源引起CPU中断的事件——中断源。例如:外设——请求输入输出数据,报告故障等事件——掉电、硬件故障、软件错误、非法操作、定时时间到等中断源分为:外部中断、内部中断内部中断:CPU内部执行程序时自身产生的中断外部中断:CPU以外的设备、部件产生的中断

8086/8088的外部中断信号:INTR、NMIINTR——可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。NMI——非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。为何计算机中要引入中断?提高数据传输率;避免了CPU不断检测外设状态的过程,提高了CPU的利用率。实现对特殊事件的实时响应。如多任务系统操作系统中:缺页中断设备中断各类异常实时钟,。。。等中断过程五个步骤:中断请求中断判优(有时还要进行中断源识别)中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤。1)中断请求外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出:

(I/O接口)

→PIC→CPU2.1)中断源识别计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。识别中断源有两个方法:软件查询。将中断信号从数据总线读入,用程序进行判别中断矢量法。由中断源提供中断类型号,CPU根据类型确定中断源。2.2)中断判优多个中断源产生中断,CPU首先为谁服务? ——中断优先级排队问题。中断优先级控制要处理两种情况:对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断——即允许中断嵌套。中断优先级的控制方法硬件判优——链式判优、并行判优(中断向量法)软件判优——顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。x86系统中,这项任务由PIC和CPU共同完成。INTAINCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口3≥1菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ中断确认链式判优电路原理图INTAININTAIN中断确认中断确认菊花链逻辑电路INTAINIREQINTR&=1

≥1INTAOUTDB三态门中断向量码E外设接口中断确认菊花链逻辑电路3)中断响应在每条指令的最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断:当前指令执行完。对INTR,还应满足以下条件当前指令是STI和IRET,则下条指令也要执行完。当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完;对INTR,CPU应处于开中断状态,即IF=1;当前没有复位(RESET)和保持(HOLD)信号。若NMI和

INTR同时发生,则首先响应NMI。CPU中断响应时,要做下述三项工作:向中断源发出INTA中断响应信号;断点保护,包括CS、IP和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。获得中断服务程序首地址(入口)。如何得到中断处理程序的首地址?固定入口法中断向量法——常用4)中断处理(中断服务)中断服务子程序特点为”远”过程(类型为FAR)要用IRET指令返回中断服务子程序要做的工作保护现场(PUSHreg’s)

开中断(STI)

进行中断处理

关中断恢复现场(POPreg’s)

5)中断返回执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后7.28088的中断系统

8088的中断系统采用向量中断机制能够处理256个中断用中断向量号0~255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理8086/8088中断源类型非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTN指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源

INTA内部中断除法错中断溢出中断单步中断指令中断外部中断非屏蔽中断可屏蔽中断1.内部中断内部中断是由于8088内部执行程序出现异常引起的程序中断利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用⑴

除法错中断在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断例如:movbl,0idiv

bl

;除数BL=0,产生除法错中断movax,200hmovbl,1divbl

;商=200H,不能用AL表达 ;产生除法错中断(2)单步中断若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试(3)溢出中断在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into ;因为OF=1,所以产生溢出中断(4)指令中断在执行中断调用指令INTn时产生的一个向量号为n(0~255)的内部中断,称为指令中断其中向量号为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT3指令实现的2.外部中断外部中断是由于8088外部提出中断请求引起的程序中断利用外部中断,微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt)内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception)⑴

非屏蔽中断通过非屏蔽中断请求信号向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断8088的非屏蔽中断的向量号为2,非屏蔽中断请求信号为NMI非屏蔽中断主要用于处理系统的意外或故障。例如:电源调电前的数据保护存储器读写错误的处理⑵

可屏蔽中断外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器8088通常需要配合中断控制器8259A共同处理可屏蔽中断可屏蔽中断主要用于主机与外设交换数据中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断不会被响应开中断、允许中断、中断开放执行指令STI,使IF=1执行指令IRET恢复原IF状态明确IF标志的状态是关键中断源的识别8088系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码。溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值指令中断的类型码由指令给出可屏蔽中断的类型码由PIC给出CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。中断向量表(IVT)

存放各类中断的中断服务程序的入口地址(段和偏移)——中断向量

表的地址位于内存的00000H~003FFH,大小为1KB,共256个中断向量每个中断向量占用4Bytes,低字为段内偏移,高字为段基址向量号为N的中断向量的物理地址=N×4中断向量表的初始化初始化——将中断服务程序的入口地址放入向量表例:中断类型码为48H的中断处理子程序的名字为int48h,编写程序段将该中断处理子程序的入口地址放入向量表。CLIMOVAX,0MOVDS,AXMOVSI,48H*4MOVAX,OFFSETint48hMOV[SI],AXMOVAX,SEGint48hMOV[SI+2],AX

STI8086/8088CPU的中断响应过程

内部中断响应过程

无INTA#周期中断类型码固定或由指令给出响应过程主要步骤: ①PUSHFLAG ②IF=0

③PUSHCS

④PUSH

IP

⑤取中断向量送入IP和CS外部中断响应过程非屏蔽中断,与内部中断响应过程类似

可屏蔽中断INTA#(1),PIC进行优先级排队判优处理INTA#(2),PIC把中断类型码放到DB上,CPU读入PUSHFLAGIF=0PUSHCSPUSH

IP取中断向量送入IP和CS与内部中断一样8088系统中各中断的优先级优先级从高到低顺序如下:内部中断NMIINTR单步中断NYNYNNNNNYY执行指令执行完否?取指令IF=1?内部中断?NMI?INTR?TF=1?类型码=0~255类型码=2类型码=1中断响应,读回类型码FLAG入栈TEMP←TFTF=TF=0CS、IP入栈计算向量表地址高字→CS低字→IP执行中断服务程序NMI?TEMP=1?转入中断服务程序恢复CS和IP恢复FLAGS返回被中断的程序YYYYNIRET指令的操作8086/8088的中断处理流程:NMI、INTR、单步和除法错中断同时产生时的中断处理过程:DIVTF=1IF=1INTRNMIPUSHFLAGS、CS、IPCLEARIF&TF,中断入口→CS:IP除法错NMI(IF、TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中断入口→CS:IPNMI中断处理程序除法错中断处理程序(IF、TF=0)返回执行下条指令识别出INTR(IF、TF=1)返回INTR仍然有效继续单步执行程序INTR中断处理程序INTRPUSHFLAGS、CS、IPCLEARIF&TF,中断入口→CS:IP单步(IF、TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中断入口→CS:IP单步中断处理程序(IF、TF=0)返回(IF、TF=1)返回7.3

可编程中断控制器8259AIntel8259A是可编程中断控制器PIC用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断向量号8259A设计有多种工作方式,可通过编程选择D7~D0INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS0CAS1CAS2SP/EN优先权判别电路中断服务寄存器控制逻辑7.3.18259A的内部结构中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许7.3.28259A的工作过程8259A对中断请求的处理过程如下:当某IRi有效时,IRR相应位置1若有效的IRi未被屏蔽,则向CPU发出中断请求检测到第1个INTA#信号后,置ISRi=1,IRRi=0

检测到第2个INTA#信号后,把ISRi=1中最高优先级的中断类型码放到DB上若工作在AEOI方式,在第2个INTA#结束时,使ISRi复位;否则由CPU发出EOI命令使ISRi复位7.3.38259A的工作方式8259A的工作方式有如下几类:中断优先方式与中断嵌套中断结束处理方式

屏蔽中断源的方式中断触发方式级联工作方式中断优先方式与中断嵌套中断优先方式

两类优先级控制方式:固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可编程改变加电后8259A的默认方式,默认优先级顺序从高到低为IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优先级可编程改变循环优先级方式

中断源轮流处于最高优先级,即自动中断优先级循环初始优先级顺序可用编程改变某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级

IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi中断嵌套方式在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式:普通全嵌套方式(默认方式)

中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式

中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。注:特殊全嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR7发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式与特殊全嵌套方式的区别

去CPU中断结束处理方式当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。三种EOI命令自动EOI(AEOI)——(自动EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式)

AEOI:在第2个INTA#结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式SEOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。

用于特殊屏蔽方式NSEOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。用于普通全嵌套方式中断服务程序┇向从PIC发EOI命令读从PIC的ISR全0?向主PIC发EOI命令YIRET恢复现场N特殊全嵌套方式下的EOI处理只有当从PIC的中断全部处理完后,才能向主PIC发EOI命令屏蔽中断源的方式IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:IMi=1禁止,IMi=0允许。特殊屏蔽方式:提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。特殊屏蔽方式中只能用SEOI命令结束中断。中断触发方式边沿触发IRi出现上升沿表示有中断请求

电平触发IRi出现高电平表示有中断请求在第1个INTA#结束前,IRi必须保持高电平

级联工作方式单片8259A可支持8个中断源;采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源;级连时只能有一片8259A为主片,其余的均为从属片;涉及到的8259A引脚包括:CAS0-CAS2SP#/EN#IRiINT级连电路连接方法7.3.48259A的编程使用8259A的控制命令分为初始化命令字ICWICW1~ICW4向8259A写入ICW的过程称为初始化编程操作命令字OCW

OCW1~OCW3向8259A写入OCW的过程称为操作方式编程8259A内部寄存器的寻址方法CS#RD#WR#A0D4D3读写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR读出IMR需要CS#、A0、RD#、WR#和D4、D3的配合内部寄存器的访问方法如下表:

8259A的初始化顺序

8259的初始化流程如图注意次序不可颠倒写ICW1写ICW2级连?写ICW3需ICW4?写ICW4NNYY8259A的控制命令字初始化8259A必须从ICW1开始写ICW1意味着重新初始化8259A写入ICW1后,8259A的状态如下:清除ISR和IMR(全0);将中断优先级设成初始状态:IR0最高,IR7最低;设定为一般屏蔽方式;采用非自动中断结束方式;状态读出逻辑预置为读IRR。ICW1——初始化字LTIM:触发方式=1高电平触发=0上升沿触发SNGL:级连控制=1单片=0级连IC4:ICW4控制=1要写ICW4=0不写ICW4(默认ICW4为全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x x 1LTIMxSNGL

IC4ICW2——中断向量码D7~D3:中断向量码的高5位D2~D0:最低3位为中断源的序号IRn000~111分别对应IR0~IR7由8259A根据中断源的序号自动填入例如: 若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7

T6 T5 T4 T3 x x

xICW3——级连控制字

主片的级联控制字

Si=1对应IRi线上连接了从片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7

S6 S5 S4 S3 S2 S1

S0从片的级联控制字

ID2~ID0标识码,说明本从片连接到主片的哪个IR引脚上。000~111分别对应IR0~IR7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0

0 0 0 0 ID2 ID1

ID0ICW3必须与主从片的连接关系一致:

例如,主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。ICW4——中断结束方式字

SFNM:特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI:自动EOI1自动EOI方式0非自动EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 0

0 0SFNM BUF M/S AEOI

1BUF:缓冲方式M/S:主/从缓冲选择BUFM/S11缓冲方式/主PIC10缓冲方式/从PIC0x非缓冲方式/正常8259A的操作命令字OCW

OCW用于设置8259的工作状态在初始化后写入OCW的写入顺序可任意写入地址要求:OCW1必须写入奇地址端口(A0=1)OCW2,OCW3必须写入偶地址端口(A0=0)

OCW1——中断屏蔽字

OCW1将写入IMR寄存器。Mi=1中断请求线IRi被屏蔽(不允许中断)=0允许该IRi中断A0=1时读OCW1可读出设置的IMR内容。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7

M6 M5 M4 M3 M2 M1

M0OCW2——中断结束和优先级循环

L2~L0:优先级编码R:优先级自动循环SL:指定优先级EOI:结束中断命令

RSLEOI001非指定EOI命令(NSEOI),全嵌套方式011指定EOI命令(SEOI),全嵌套方式,按L2-L0编码复位ISR101NSEOI命令,优先级自动循环100自动EOI,设置优先级自动循环000自动EOI,取消优先级自动循环(固定优先级)111SEOI命令,按L2-L0编码循环优先级(L2-L0设为最低优先级)110按L2-L0编码循环优先级(L2-L0设为最低优先级)

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 R

SL EOI 0 0 L2 L1

L0OCW3——屏蔽方式和读出控制字

ESMM:允许使能特殊屏蔽方式SMM:

特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式复位0x非特殊屏蔽方式P(Polling):=1查询方式

=0非查询方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0 ESMM SMM 0 1 P RR RISRR:读寄存器RIS:ISR/IRR选择RRRIS11读ISR10读IRR0x无效查询方式允许8259A不工作于中断方式,而是以查询方式工作。CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节:

IxxxxR2R1R0

I=1表示有中断请求,中断请求号为R2-R0

此查询步骤可反复执行,以响应多个同时发生的中断。读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。8259A编程举例按以下要求初始化

温馨提示

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

评论

0/150

提交评论