单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,微型计算机原理与应用,-8086,中断系统简介,主讲人:马永红,主要内容:,一、中断及中断过程,二、,8086,的中断系统,中断服务程序,发申请,中断服务程序,发申请,中断方式下,CPU,执行程序流程,外,设,由外设通过接口电路向,CPU,发出中断请求信号,,CPU,在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入,/,输出操作的子程序,待输入,/,输出操作执行完毕之后,CPU,即返回继续执行原来被中断的主程序,1,、什么是中断?,PPT,比如,.,讲课,相当于子程序,正在看书,电话铃响,接电话,继续看书,执行程序,事件发生,事件处理,继续执行程序,中断处理,中断请求及响应,实际场景,计算机,中断返回,计算机应外设的要求暂停主程序的执行,转而执行一个子程序这个过程就是中断,中断与子程序调用的区别:,中断源是随机产生的;,中断的处理过程与子程序调用完全不同,中断也是微处理器与外部设备进行信息交换的一种方式,。,平时,CPU,和外设你干你的事我干我的事,有事的时候才联系。,这样,CPU,就避免了把大量时间耗费在等待、查询状态信号的操作上,使其,工,作效率得以大大地提高。,2,、中断方式的优点:,程序员:,INT n,指令,引起中断,外部设备,:,IO,设备、实时时钟,什么是中断源?,引起中断的原因或发出中断请求的设备称为中断源。,3,、中断源,PPT,内部中断源,:,CPU,运行时出现的非正常情况,(,除数为零、溢出、内存不够),程序执行,(单步执行、断点执行),中断指令,INT n,外部中断源,:,外设提出的请求(可屏蔽中断、不可屏蔽中断),出现在,INTR,线上的中断请求,,CPU,是否响应要取决于,标志位,IF,的状态:,若,IF=1,,则,CPU,就响应,,此时,CPU,是处在开中断状态;,若,IF=0,,则,CPU,就不响应,此时,CPU,是处在关中断状态。,而,IF,标志位的状态,可以用指令,STI,使其置位,即开,中断;也可以用,CLI,指令来使其复位,即关中断。,可屏蔽中断,4,、可屏蔽中断与不可屏蔽中断,出现在,NMI,线上的中断请求,,不受标志位,IF,的影响,,在当前指令执行完以后,CPU,就响应。,NMI,线上的中断请求信号是,边沿触发,的,它的出现是异步的,由内部把它锁存。要求,NMI,上的中断请求脉冲的有效宽度,(,高电平的持续时间,),要大于两个时钟周期。,非屏蔽中断,5.,中断系统应具备的功能,能够实现中断,并能正确地返回;能够进行优先级排队和实现中断嵌套;(多个中断源的情况)能够禁止中断(不响应中断)和中断屏蔽(不让中断请求挂到,CPU,引脚上),。,与硬件中断,可屏蔽,不可屏蔽,软件中断,中断源的类型?,外设,时钟,在自动控制中,常采用一个外部时钟电路控制其时间间隔。需要定时时,,CPU,发出启动时钟电路开始计时,待定时时间到,就会向,CPU,发出中断请求,由,CPU,转去完成检测和控制等任务。,中断请求,4,。可屏蔽中断的处理过程,中断判优,中断响应,中断处理,中断返回,先以,官员接待访客,介绍这五个步骤,官员接待来访者?,中断过程的五个步骤:重点介绍其中三个,中断的处理过程总结,INTA,IF=0,1,)中断请求,外设要求,CPU,为他服务时就输出一个请求,信号,加载到,CPU,的中断请求输入引脚,只有一个中断源的情况,外设(中断源)发出中断请求信号,经中断管理器送到,CPU,的,INTR,引脚。,-,CPU,怎,么知道来了中断请求?,中断接口电路来管理中断请求!,客人,敲门,秘书登记、排序、拒绝,1,多个个中断源的情况,申请阶段的工作,请求需要登记,:,外设提出的中断请求信号,用,中断请求触发器,保存;,多个中断源管理,:多个中断源的中断请求,到底选哪一个中断请求信号与,CPU,的,INTR,引脚相沟通,用,中断屏蔽触发器,;,控制你的请求信号能否到达,CPU,的,INTR,引脚。,允许或禁止,CPU,响应中断,:用,中断允许触发器,,IF,标志来控制(用,STI,指令使,IF,标志为“,1”,,用,CLI,指令使,IF,标志为“,0”,)。,秘书处登记,秘书通报,-,多个中断源产生中断,,CPU,首先为谁服务?,-,排序,看成是申请阶段的工作内容,中断优先级控制两个含义:,对同时产生的中断:应首先处理优先级别较高的中断;,对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断,即允许,中断嵌套,。,优先级的问题一般,由专门的中断控制器来处理。,秘书给排号,(,1,)从申请进入响应阶段,要具备一定条件:,外设提出中断请求,该请求到达,CPU,的,INTR,引脚;(不能被屏蔽),CPU,执行完当前指令;,中断允许触发器,IF,状态为“,1”,。,CPU,在指令的最后一个时钟周期去检查,INTR,引脚,2,)中断响应,在每条指令的最后一个时钟周期,,CPU,检测,INTR,,若某些条件成立,则,CPU,响应中断:,(,2,)可屏蔽中断响应时序,1,2,2,)中断响应,可屏蔽中断响应周期包含两个总线周期,第一个总线总线周期,INTA,出现一次低电平,第二个总线周期又出现一次,第,1,个低电平表示响应引脚上的中断申请,由于这个申请已被响应,那么对应的(中断申请触发器内),请求标志要被清除,。告知外设我响应你的请求。,第,2,个低电平:(中断请求对应一个编码,中断类型号)将,中断类型号,读到,CPU,;中断类型号从哪里来?由中断控制器,8259,中来的,通过数据总线传给,CPU,;读进来后,根据,这个号找到中断服务程序的起始地址,,然后就,执行服务程序,。,读取中断类型号(在,-INTA,的第,2,个低电平时间,从数据总线上读取,中断类型号,N,(由中断控制器提供),。,保存,PSW,(,F,标志寄存器)标志入堆栈,关中断(,IF=,“,0,”,、,TF=,“,0,”,),保存断点(当前的,CS,、,IP,入堆栈保存),主要是保证中断结束后能返回被中断的程序。,调用中断服务程序的入口地址(比较复杂,单独介绍),执行,中断服务程序,(,3,)可屏蔽中断的响应处理,1,断点没保护好,中断服务程序入口地址,没找到,,将,IF,位置,0,;暂时不接待其他中,断请求,-,别打扰我!,计算机自动处理的。断点具体在哪里我,们是不知道的,只知道是,下一条指令,的,地址。,2,)中断响应,CPU,自动完成上述过程!,中断类型号,N*4=,中断向量表的偏移地址(内部计算),。,从中断向量表,0000H,:,N*4,内存单元中读取中断向量(中断服务程序的入口地址)四个字节,将中断向量送入,IP,、,CS,中,怎么找到,中断服务程序的首地址?,小结中断服务程序的首地址是这样来的:,N,什么时候读到的?中断相应开始,,INTA,引脚,第二次等于,0,的时候,由中断控制器通过数据总,线传到,CPU,;读进来做什么呢?把他乘以,4,,以,他为偏移地址与,0000,段叠加得到一个地址;这,个内存单元有四个字节内容,低地址两个单元,内容送,IP,高地址的内容送,CS,这样就找到了中断,服务程序的入口地址,2,)中断响应,入口地址,学名,中断向量,,放哪里了呢?放到内存中的一片区域中,这片区域位于,0,段,范围是,0000,:,00000000:0325,这个区域,这个区域由于是存放中断向量的地方称为,中断向量表,。,放在什么地方了呢?由类型号确定,,0000:4*N,开始的,4,个单元中,段地址在哪儿,偏移地址是多少,中断服务程序的首地址的讲解,1,),中断类型码,8086,可处理,256,个中断源,为每个中断源分配了一个编码,这个编码对应一个中断子程序,其取值范围为,0,255,,称为,中断类型码。,2,)中断向量,中断服务子程序都有的入口地址(中断服务程序的段基址和偏移量),称为,中断向量。,3,)中断向量表,中断向量放在固定的一块地址中(,000H-3FFH,)而且按中断类型,码的顺序来放 形成一个地址表,,叫中断向量表,预备知识,(1),保护现场(由一系列的,PUSH,指令完成)。目的是为了保护那些在子程序中可能改变的寄存器,,(,如,AX,,,BX,,,CX,等,),。,(2),开中断(由,STI,指令实现)。目的是为了能实现中断的嵌套。,(3),中断服务,-,执行子程序,(4),恢复现场是与保护现场对应的。,(5),返回(使用中断返回指令,IRET,)。,在中断子程序中通过编写代码完成上述过程,。,中断子程序的结构,2,)中断响应,(,4,)可屏蔽中断的响应处理,2,执行中断子程序,3,)中断返回,IP,L,IP,H,CS,L,CS,H,FLAG,L,FLAG,H,SP,IP,L,IP,H,CS,L,CS,H,FLAG,L,FLAG,H,SP,IP,CS,FLAG,进入中断服务程序时,中断返回后,PPT,执行,IRET,指令:。,从堆栈顶弹出断点送,IP,、,CS,寄存器,SP+4,送,SP,从堆栈顶弹出现场送F标志寄存器,SP+2送SP,根据,IP,、,CS,的值返回原来的程序。,回顾小结,1、中断处理包括哪几个阶段?,2、请求阶段涉及那几个硬件?,中断请求触发器:用来保存中断请求信号,中断屏蔽触发器:管理多个中断源,让谁的中断挂到CPU的INTA引脚上),中断允许触发器:常说的IF标志。,3、可屏蔽中断的响应有几步,读类型码,保持IF,关中断,断点保护,调用中断服务程序入口地址,执行子程序,4、返回阶段执行什么操作?,5、怎么通过中断类型码找到入口地址,如何将中断服务程序的入口地址放入中断向量表,中断向量表是内存当中的一个部分,用来存放中断向量;表存放的位置是段地址为,0000H,偏移地址从,0000H-03FH,这么一片区域。共,1024,个单元,每个中断向量占,4,个单元,总共可放,256,个中断向量。,怎么存放呢?每个,中断向量,占,4,个单元,而且按中断类型码的顺序来放,,,形成一个地址表,叫中断向量表,。,这样如果中断类型码是,0,,那么中断向量放在,0000,开始的,4,个单元,如果类型码是,1,,就放在,0004,开始的单元,类推下去,类型码为,N,,则放在,4*N,开始的,4,个单元,中断向量表,中断向量号(表)的规定,000H,004H,008H,00CH,014H,080H,3FFH,IP,偏移地址,CS,段基地址,IP,偏移地址,CS,段基地址,IP,偏移地址,CS,段基地址,中断类型码,0,(除法错),中断类型码,1,(单步中断),中断类型码,2,(,NMI,中断),中断类型码,3,(断点中断),中断类型码,4,(溢出中断),中断类型码,5,(保留),系统保留中断,用户自定义中断,某些外设的中断类型码由程序员给定范围是,32-255,中断类型号,0-4,是专用中断,,中断类型号,5-31,系统保留的,中断类型号,32-255,是用户可以,使用的。如果自己编写某个中,断源对应的中断服务程序,那,么中断源的编号只 能从,32-,255,之间选。,入口地址放入中断向量表程序,例:某个中断源,程序员将其中断类型码设置为,N,,并编写一个名字为,int48h,中断子程序,最后要编写程序将该中断处理子程序的入口地址放入向量表。,只需把子程序,INT48H,的,IP,和,CS,放到,地址表,-,中断向量表中去就可以了。,如何将中断服务程序的入口地址放入中断向量表,中断向量表的初始化程序,CLI,MOV AX,0,MOV DS,AX,;将,DS,内容设为,0-,0,段,MOV SI,48H*4,MOV