您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 第十讲--8086-8088-CPU-中断
1第10讲中断系统苏放sufang@bupt.edu.cn北京邮电大学信息与通信工程学院2中断的基本概念什么是中断?中断服务程序发申请中断服务程序发申请外设CPU3中断的定义CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。4为何要引入中断?提高数据传输率;避免了CPU不断检测外设状态的过程,提高了CPU的利用率。实现对特殊事件的实时响应。如多任务系统操作系统中:•缺页中断•设备中断•各类异常•实时钟,。。。等5中断源引起CPU中断的事件——中断源。•外设——请求输入输出数据,报告故障等•事件——掉电、硬件故障、软件错误、非法操作、定时时间到等中断源分为:外部中断、内部中断6中断源8086/8088的外部中断信号:INTR、NMI•INTR——可屏蔽中断请求,高电平有效,受IF标志的控制。•NMI——非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。7中断过程五个步骤:•中断请求•中断判优(有时还要进行中断源识别)•中断响应•中断服务•中断返回81)中断请求外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;•中断请求信号:边沿请求,电平请求例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。•在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出:(I/O接口)→PIC→CPUn192.1)中断源识别计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。识别中断源有两个方法:•软件查询。将中断信号从数据总线读入,用程序进行判别。•中断矢量法。由中断源提供中断类型号,CPU根据类型确定中断源。(8086/8088)102.2)中断判优多个中断源产生中断,CPU首先为谁服务?——中断优先级排队问题。中断优先级控制要处理两种情况:•对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;•对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断——即允许中断嵌套。11中断判优中断优先级的控制方法•硬件判优——链式判优、并行判优(中断向量法)•软件判优——顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。•x86系统中,这项任务由PIC和CPU共同完成。12软件判优INAL,PORT_R;PORT_R是锁存器地址CLCRCRAL,1JCINTS01;转向故障处理A1:RCRAL,1JCINTS02;转向告警处理A2:…………INTS01:……JMPA1INTS02:……JMPA2……13硬件优先权排队电路14INTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口3≥1菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ中断确认硬件优先权排队-----链式判优电路原理图INTAinINTAin中断确认中断确认15菊花链逻辑电路INTAinIREQINTR&=1≥1INTAoutDB三态门中断向量码E外设接口中断确认菊花链逻辑电路163)中断响应在每条指令的最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断:•当前指令执行完。对INTR,还应满足以下条件•当前指令是STI和IRET,则下条指令也要执行完。•当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完;•对INTR,CPU应处于开中断状态,即IF=1;•当前没有复位(RESET)和保持(HOLD)信号。若NMI和INTR同时发生,则首先响应NMI。173)中断响应(续)CPU中断响应时,要做下述三项工作:•向中断源发出INTA中断响应信号;•断点保护,包括CS、IP和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。•获得中断服务程序首地址(入口)。如何得到中断处理程序的首地址?固定入口法中断向量法——常用184)中断处理(中断服务)中断服务子程序特点•为”远”过程(类型为FAR)•要用IRET指令返回中断服务子程序要做的工作•保护现场(PUSHreg’s)•开中断(STI)•进行中断处理•恢复现场(POPreg’s)•中断返回(IRET)195)中断返回执行中断返回指令IRET•IRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后208086/8088的中断系统与中断有关的控制线为:NMI、INTR、INTA8086系统的中断源(256个)•内部中断软件中断:即INTn指令,类型号n(0-255)。•除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。•单步中断:类型号1,TF=1时产生(当前指令需执行完)•断点中断:类型号3,这是一个软件中断,即INT3指令。•溢出中断:类型号4,这是一个软件中断,即INTO指令。•外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。中断优先权从高到低的顺序是:除法溢出中断→INTn→INTO→NMI→INTR→单步中断21NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断8086/8088中断源类型可屏蔽中断请求n4301222中断源的识别8086系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码。•溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值•软件中断的类型码由指令给出•可屏蔽中断的类型码由PIC给出23中断源的识别CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。24中断向量和中断向量表中断响应后,CPU通过中断类型号找到中断向量表,进而找到中断服务程序。中断向量•存放各类中断的中断服务程序的入口地址(段和偏移)它提供一个指向中断处理子程序的起始地址。中断向量表:将所有的中断处理服务程序的入口地址都集中在一起,构成一个中断地址的存放表,即中断向量表。位于内存的00000H~003FFH,大小为1KB,共256个中断向量,每个中断向量占用4Bytes,低字为段内偏移,高字为段基址。25根据中断类型号获得中断服务程序入口方法:中断向量在IVT中的存放地址=4×n26中断类型和中断向量表8086中断处理流程①CPU在获得中断类型号后,先自动将FR入栈,并自动将IF和TF清零。②自动将当前CS和IP内容入栈,根据中断类型号n从中断向量表中取出中断处理程序的段地址送入CS,偏移地址值送入IP,从而实现向中断处理程序转移。③在中断处理程序完成后,用中断返回指令IRET恢复断点,弹回IP和CS,并恢复FR的内容,实现向被中断程序的返回。27例例:设某中断源的类型码为4AH,试画出求中断服务处理程序的示意图。解:中断向量表指针为4*n=4*4AH=128H,即:0000:0128H。通过中断向量表,中断服务程序的入口地址为0F000H:1806H。28例中断向量表物理地址单元内容INT4AH地址单元内容IP=1806HCS=F000HF000:180600000H类型0中断处理程序入口地址MOVAL,300:124类型49H中断向量00001H0:1250:126向量地址:4AH*4=128H0:12700004H类型1中断处理程序入口地址0:12806H0:12918H0:12A00H0:12BF0H00008H…………………………………………0:12C类型4BH中断向量0:12D0:12E0:12F中断处理服务程序IRET003FFH类型FFH中断处理程序入口地址29初始化——将中断服务程序的入口地址放入向量表(1)直接写入法。•使用指令将中断服务程序入口地址的IP写入n×4的RAM位置,中断服务程序入口的CS写入n×4+2的位置。中断向量表的初始化30例例若中断类型号n=70H,中断服务程序的过程名是INTSUB。借助伪指令和传送指令,将中断服务程序入口地址写入中断向量表。VECDATASEGMENTAT0ORG70H*4LOCA_70DW2DUP(?)VECDATAENDSININTSEGMENT……MOVLOCA_70,OFFSETINTSUBMOVLOCA_70+2,SEGINTSUB31中断向量表的初始化例:中断类型码为48H的中断处理子程序的名字为int48h,编写程序段将该中断处理子程序的入口地址放入向量表。32中断向量表的初始化CLIMOVAX,0MOVDS,AXMOVSI,48H*4MOVAX,OFFSETint48hMOV[SI],AXMOVAX,SEGint48hMOV[SI+2],AXSTI33中断向量表的初始化(2)利用DOS功能调用写、读中断向量表。DOS功能调用25H用来写中断向量表。•入口参数是:AL:中断类型号;DS:中断服务程序入口的段地址;DX:中断服务程序入口的偏移地址。DOS功能调用35H用来读中断向量表•入口、出口参数:AL:中断类型号;ES:读出的中断服务程序入口的段地址;BX:读出的中断服务程序入口的偏移地址。34例例设中断类型号为70H,中断服务程序是INTSUB,用DOS功能调用25H将中断服务程序入口地址写入中断向量表。解:相关的程序段如下:PUSHDSMOVAX,SEGINTSUBMOVDS,AXLEADX,INTSUBMOVAL,70HMOVAH,25HINT21HPOPDS358086/8088CPU的中断响应过程内部中断响应过程•无INTA周期•中断类型码固定或由指令给出•响应过程主要步骤:①PUSHFLAG②IF=0③PUSHCS④PUSHIP⑤取中断向量送入IP和CS36中断响应过程(续)外部中断响应过程•非屏蔽中断,与内部中断响应过程类似•可屏蔽中断①INTA(1),PIC进行优先级排队判优处理②INTA(2),PIC把中断类型码放到DB上,CPU读入③PUSHFLAG④IF=0⑤PUSHCS⑥PUSHIP⑦取中断向量送入IP和CS与内部中断一样37NYNYNNNNNYY执行指令执行完否?取指令IF=1?内部中断?NMI?INTR?TF=1?类型码=0~255类型码=2类型码=1中断响应,读回类型码FLAG入栈TEMP←TFCF=TF=0CS、IP入栈计算向量表地址高字→CS低字→IP执行中断服务程序NMI?TEMP=1?转入中断服务程序恢复CS和IP恢复FLAGS返回被中断的程序YYYYNIRET指令的操作8086/8088的中断处理流程38可编程中断控制器8259AIntel8259A是一种可编程的中断控制器PIC(ProgrammableInterruptController)•可为CPU管理和处理8个中断源电路的中断,并对它们进行优先级管理。•可与其它8个8259A芯片组成主从式中断系统,实现64级中断源控制。•优先级方式在执行程序时可动态改变,有多种中断管理方式。•每一中断源中断都可以屏蔽或允许,可通过编程选择。•能自动送出中断类型号,使CPU方便的找到中断服务程序的入口地址。398259A的结构功能8259A的引脚•双列直插式•28引脚封装408259A内部功能结构418259A的内部结构8259A的内部结构•中
本文标题:第十讲--8086-8088-CPU-中断
链接地址:https://www.777doc.com/doc-5682201 .html