资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,6.4,中断技术,中断基本概念,中断的一般过程,8086/8088,中断系统,8259,介绍,引起,CPU,中断的事件,中断源。例如:,数据传送,请求输入输出数据,报告故障等,事故处理,掉电、硬件故障、软件错误、非法操作、定时时间到等,中断源分为:外部中断、内部中断,内部中断:,CPU,内部执行程序时自身产生的中断,外部中断:,CPU,以外的设备产生的中断,(数据传送),8086/8088,的外部中断信号:,INTR、NMI,INTR,可屏蔽中断请求,高电平有效,受,IF,标志的控制。执行完当前指令后,CPU,对它作出响应,INTA。,NMI,非屏蔽中断请求,上升沿有效,任何时候,CPU,都要响应此中断请求信号。,中断(回顾),一、中断基本概念,1.,实现,CPU,与外设的并行工作,提高了,CPU,的效率。,N,Y,READY,?,输入状态信息,输入数据,查询方式的数据输入,中断方式的数据输入,外设请求中断,INTR,有效,主程序,中断服务程序,输入,数据,外设准备数据,所谓中断,是指这样一个过程:当,CPU,正在执行程序过程中,,由于某一,突然,事件的发生,,暂时中止,正在执行的程序,转去处理突然发生的事件(执行中断服务程序),,处理完毕,,再返回,原来被中止的程序继续运行,。,中断申请,主程序,中断服务程序,返回,中断示意图,2 中断定义,外部中断引起的数据交换!,二、中断过程,五个步骤:,中断请求,中断识别和判优,中断响应处理,中断服务,中断返回,以下以,外部中断,为主介绍这五个步骤。,1,)中断请求,外设接口(中断源)发出中断请求信号,送到,CPU,的,INTR,或,NMI,引脚;,中断请求信号:边沿请求,电平请求,例如,,NMI,为边沿请求,,INTR,为电平请求,中断请求信号应保持到中断被处理为止;,CPU,响应中断后,中断请求信号应及时撤销。,2.1,)中断源识别和判优,计算机中的中断源有很多,,CPU,必须识别是哪一个设备产生中断。识别中断源有两个方法:,1、,软件查询(,查询中断),。,IN ALIPORT;,从输入接口取中断信息,TEST AL,80H;,是0,号设备请求吗,?,JNZ SEVO;,是,转,0,号设备服务程序,TEST AL40H;,否,是,1,号设备请求吗,?,JNZ,SEVl,;,是,转,1,号设备服务程序,TEST AL20H;,否,是,2,号设备请求吗,?,JNZ SEV2;,是,转,2,号设备服务程序,TEST AL10H;,否,是,3,号设备请求吗,?,JNZ SEV3;,是,转,3,号设备服务程序,条件传送查询中断?查询中断没有浪费,CPU,资源,缺点:,低级别的中断反映慢!,(二)、矢量中断,中断申请信号,INTR,和中断响应信号,INTA,是一对握手信号。要求外设提供中断类型号。,中断矢量,8086/8088使用,INTA,的第二个总线周期读入中断矢量。教材图6-22,矢量中断,CS,T,INTA,信号,简单的中断号编码装置,2.2,)中断判优,多个中断源产生中断,,CPU,首先为谁服务?,中断优先级排队问题。,中断优先级的控制方法,硬件判优,链式判优、并行判优(中断向量法),软件判优,顺序查询中断请求,先查询的先服务(即先查询的优先级别高),通常将,中断判优,与,中断源识别,合并在一起进行处理。,x86,系统中,这项任务由,PIC8259,和,CPU,共同完成。,链式判优电路原理图(教材图,6.18,),INTA,in,CPU,INTA,INTR,外设,1,外设,2,外设接口,1,菊花链,逻辑电路,外设接口,2,外设,3,外设接口,3,1,菊花链,逻辑电路,菊花链,逻辑电路,IREQ,IREQ,IREQ,中断确认,INTA,in,INTA,in,中断确认,中断确认,菊花链逻辑电路,INTA,in,IREQ,INTR,&,=1,1,INTAout,DB,三态门,中,断,向,量,码,E,外设接口,中断确认,菊花链,逻辑电路,3,)中断响应处理,在每条指令的最后一个时钟周期,,CPU,检测,INTR,或,NMI,信号。若以下条件成立,则,CPU,响应中断:,对,INTR,,CPU,被允许中断,,即,IF=1;,当前指令执行完。对,INTR,,还应满足以下条件,当前指令是,STI,和,IRET,,,则下条指令也要执行完,。,无总线请求。,(,HOLD,),信号和复位,(,RESET,),。,-若,NMI,和,INTR,同时发生,则首先响应,NMI,。,响应中断的条件,3,)中断响应处理(续),CPU,中断响应时,要做下述,五,项工作:,向中断源发出,INTA,中断响应信号;获得向量。,硬件现场保护,FR,(,FLAGS,)(,IF=1),关中断,IF=0;,断点保护和,CS,、,IP,。这主要是保证中断结束后能返回被中断的程序。,获得中断服务程序首地址(入口)。,如何得到中断处理程序的首地址?,固定入口法-单片机,中断向量法,常用,4,)中断,服务,(中断服务),中断服务子程序特点,为,”,远”过程或“过程”(类型为,FAR,或,NEAR,),要用,IRET,指令返回,中断服务子程序要做的工作,保护现场,(,PUSH,reg,s,),开中断,(,STI,),进行中断处理,关中断(,CLI,),恢复现场,(,POP,reg,s,),中断返回,(,IRET,),push ax;1、,保护现场,push,bx,sti,;2、,开中断,;3,、中断处理,cli,;4、,关中断,pop,bx,;5、,恢复现场,pop ax,/,sti,;6、,断点恢复,iret,Int,_48H PROC FAR,中断请求,中断源识别,保护硬件现场,关中断,保护断点,获取中断服务程序地址,获取向量,保护软件现场,开中断,执行服务程序,关中断,恢复硬件现场,恢复断点,中断返回,中断处理,中断服务,硬件中断总流程,三、,8086,中断系统,INT n,指令,中断逻辑,非屏蔽中断请求,中断,控制系统,(,8259,A,),断点,INTO,指令,单步,中断,除数为,0,中断,可屏蔽,中断请求,NMI,INTR,硬件中断,软件中断,1、中断类型,8086,能处理,256,种中断,分为两大类:外部中断和内部中断。其中断分类如右图,8086,的中断分类,0,1,2,4,8088,系统采用中断类型码来识别不同的中断源,,每个中断源都有一个与它相对应的中断类型码,。,溢出、断点、除法溢出、单步、非屏蔽中断的类型码为,固定值,软件中断的类型码,由指令给出,可屏蔽中断的类型码,由,8259,或硬件,给出,中断矢量的获取?,与中断有关的控制线为:,NMI、INTR、INTA#,8088,系统的中断源,内部中断,除法溢出:类型号,0,,商大于目的操作数所能表达的范围时产生。,单步中断:类型号,1,,TF=1,时产生(当前指令需执行完),断点中断:类型号,3,,这是一个软件中断,即,INT 3,指令。,溢出中断:类型号,4,,这是一个软件中断,即,INTO,指令。,软件中断:即,INT n,指令,类型号,n(0-32)。,外部中断,非屏蔽中断,NMI:,类型号,2,,不可用软件屏蔽,,CPU,必须响应它。,可屏蔽中断,INTR:,类型号由,PIC,提供。,IF=1,时,CPU,才能响应。,外部中断和,INT n,之间的关系,结合中断指令,INT n,,我们可以这样理解外部中断:当外部中断源发中断,给,CPU,时,如果,CPU,满足一定的条件,处于开中断状态,,CPU,就可以响应中断,这时外设,在,CPU,正在执行指令与其下一个指令之间,等效“插入”了一个,INT n,指令,这里的,n,就是外设提供的中断类型号。,中断服务程序调试简单!,1、内部中断可以预测(除法中断除外),、内部中断不受,IF,的影响,、,内部中断不需要执行从外部获得矢量(处理4步),2、中断向量表:中断服务子程序的入口地址,从,00000,H,到003,FFH,区域,大小为,1,K,空间,共,256,个中断向量,。,每个入口地址占用4个字节,低字为段内偏移,高字为段基址,根据中断类型号,获得中断服务程序入口,4n,。,中断向量统一管理,中断类型号和中断服务子程序的入口地址之间的关系:,例,INT 12H,在,中断矢量表中的物理地址?,INT 8,中断服务程序首地址在中断矢量表中的物理地址?,48,H 20H,3 中断向量表的初始化,初始化,将中断服务程序的入口地址放入向量表,例:中断类型码为48,H,的中断处理子程序的名字为,int48h,,编写程序段将该中断处理子程序的入口地址放入向量表。,若外设的中断类型号为6,BH,,设中断服务程序段地址是1000,H,,偏移地址为2000,H。,设置中断向量表,CLI,MOV AX,,0,MOV DS,AX;,置数据段段基地址为,0,MOV AX,,2000H,MOV ,6BH,*4,AX;,对偏移地址为,01,AC,的单元,MOV AX,1000H,;,送双字,MOV 6BH*4+2l,AX,STI,例1,若外设的中断类型号为,6,BH,,则此中断类型号对应的中断矢量表地址为从,00,lACH,开始的四个存储单元设中断服务程序段地址是,1000,H,,偏移地址为,2000,H。,中断向量表的初始化,CLI,MOV AX,0,MOV DS,AX,MOV SI,48H*4,MOV AX,OFFSET int48h,MOV SI,AX,MOV AX,SEG int48h,MOV SI+2,AX,STI,例2 若外设的中断类型号为,N,,则此中断类型号对应的中断矢量表地址为从,N*4,开始的四个存储单元设中断服务程序的名字,INT_VCE,习题9 假设中断类型9的中断服务程序首地址为,INT_Proc09,写出建立这个中断矢量表的程序段。,习题10 编写程序,使类型1,CH,的中断矢量指向中断处理程序,SHOW_CLOCK。,一、用串指令,二、用伪指令,三、用系统调用,四、,用,MOV,指令,(直接装入法),CLI,;,关中断,MOV AX,0,MOV DS,AX,;,置附件段基地址为,0,MOV SI,n*4,;,假设中断类型号为,N,MOV AX,OFFSET INT_VCE,;,置中断程序首地址的偏移量,到,AX,MOV SI,AX,;,填偏移量到中断地址表,MOV AX,SEG INT_VCE,;,置中断程序的段基地址到,AX,MOV SI+2,AX,;,填段基地址到中断地址表,STI,;,开中断,例2,4、8086/8088 CPU,的中断响应过程,内部中断响应过程,无,INTA#,周期,中断类型码固定或由指令给出,响应过程主要步骤:,PUSH FLAG,IF=0,PUSH CS、PUSH IP,取中断向量送入,IP,和,CS,中断响应过程(续),外部中断响应过程,非屏蔽中断,与内部中断响应过程类似,可屏蔽中断,(,时序见教材图,6.24),INTA#(1),PIC,进行优先级排队判优处理,INTA#(2),PIC,把中断类型码放到,DB,上,,CPU,读入,PUSH FLAG,IF=0,PUSH CS、PUSH IP,取中断向量送入,IP,和,CS,与内部中断一样,8088,系统中各中断的优先级,优先级从高到低顺序如下:,内部中断,NMI,INTR,单步中断,8086/8088的中断响应过程,完成当前指令,内部中断,NMI,INTR,TF=1,执行下一条指令,IF=1,响应中断,读类型码,标志入栈,调服务程序,CS、IP,入栈,IF,、TF=0,令TEMP=TF,又有,NMI,TEMP=1,执行服务程序,CS、IP,出栈,标志出栈,返回被中断程序,Y,N,N,N,N,Y,Y,Y,Y,N,N,Y,Y,N,单步,当开关闭合一次时,在数码管显示“1”;当开关没有闭合时,数码管显示“0”。,查询方式,相应程序段如下,:,MOV DX,0F0H;,数据接口的地址为,F0H,MOVAL,3FH,OUTDX,AL,MOVDX,0F1H;,状态接口的地址为,F1H,LOP:INAL,DX;,读入开关状态,TESTAL,01;,测试位,Jz,LOP;,断开显示0,MOVAL,06H ;,闭合显示1,MOV DX,0F0H;,数据接口的地址为,F0H,OUTDX,AL,JMP$,当开关闭合一次时,在数码管显示“1”;当开关没有闭合时,数码管显示“0”。,查询方式,相应程序段如下,:,读输入状态,D0=1?,闭合输出“1”,当开关闭合一次时,在数码管显示“1”;当开关没有闭合时,数码管显示“0”。,中断方式,相应程序段如下,:,增加中断触点开关。,IRET,闭合输出“1”,入口,当开关闭合一次时,在数码管显示“1”;当开关没有闭合时,数码管显示“0”。,中断方式,相应服务程序段如下,:,增加中断触点开关。,INT_80H PRO NEAR,MOVAL,06H ;,闭合显示1,MOV DX,0F0H,OUTDX,AL,IRET,INT_80H ENDP,PUSH AX,PUSH DX,STI,CLI,POP DX,POP AX,中断方式,相应主程序段如下,:,CODE SEGMENT,ASSUME CS:CODE,START:CLI,MOV AX,0,MOV DS,AX,MOV SI,80H*4,MOV AX,OFFSET INT_80H,MOV SI,AX,MOV AX,SEG INT_80H,MOVSI+2,AX,STI,JMP$,CODE ENDS,END START,中断服务程序,定义,ORG100H,MOV DX,0F0H MOVAL,3FH,OUTDX,AL,6.5 8259,简介,PIC,,,Programmable Interrupt Controller,对外部中断(硬件中断)进行管理。,可对,8,个中断源实现控制管理,可扩展至对,64,个中断源实现控制管理,在中断响应周期,,8259,A,可提供相应的中断类型号。,可编程设置不同工作方式,一、,8259,A,的内部结构,IR0,IR7,:,中断请求寄存器,IRR,优先权电路,IR,服务寄存器,ISR,中断屏蔽寄存器,IMR,控 制 逻 辑,数据总线缓冲器,读/写逻辑,级连缓冲/比较器,INTA,INTR,DB,RDWRA0,CS,CAS0CAS1CAS2,SP/EN,内部总线,读,/,写控制逻辑,A0,:,常常与地址信号线,A0,相连。,8259,A,的两个端口地址,CPU,通常利用:,OUT,指令,,IN,指令,,8259,A,的引脚图,中断服务寄存器,中断请求,寄存器,IRR,IR0,IR1,IR7,IR2,IR3,IR4,IR5,IR6,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7,000,0,0,二、8259工作过程,ISR,IMR,PR,学习原理的观点,8259A,对中断请求的处理过程如下:,当某,IR,i,有效时,,IRR,相应位置,1,若有效的,IR,i,未被屏蔽,则,向,CPU,发出中断请求,检测到第,1,个,INTA,#,信号后,,置,ISR,i,=1,,IRR,i,=0,检测到第,2,个,INTA,#,信号后,,把,ISR,i,=1,中最高优先级的中断类型码放到,DB,上,若工作在,AEOI,方式,在第,2,个,INTA,#,结束时,使,ISR,i,复位;否则由,CPU,发出,EOI,命令使,ISR,i,复位,二、8259,A,的,工作过程,1.,中断请求寄存器,IRR,8,位,若,IR,i,有效,(“1”,),,对应位置,“1”,,直到,IR,i,得到响应。,因此,,IRR,记录外中断源,IR,i,的请求信息。,2.,中断服务寄存器,ISR,8,位,当,IR,i,得到响应时,对应位置,“1”,。,ISR,记录正在处理的,IR,i,,,当,中断嵌套,时,可能多位置,“1”,。,因此,,ISR,记录,CPU,对,IRi,的响应情况。,3.,中断屏蔽寄存器,IMR,8,位,某位置,“1”,,对应,IR,i,禁止产生中断。,因此,,IMR,控制是否对,IRi,进行屏蔽操作,。,4.,优先权电路,实现优先权的判断与处理,采用编码器和比较器电路,。,5.,控制逻辑,(,1,)由,IRR,和,PR,的情况,向,8259,A,其它部件发出控制信息。,(,2,)向,CPU,发出,INT,信号,接收,CPU,信号,并提供中断矢量,三、8259,A,的,工作方式,8259A,的工作方式有如下几类:,中断优先方式与中断嵌套,PR,中断结束处理方式,ISR,屏蔽中断源的方式,IMR,中断触发方式,IRR,级联工作方式,可编程,两个控制口,7种控制字,对芯片设置,初始化芯片,用户对寄存器,FF,写入的内容称为,命令字或方式控制字,,而寄存器,FF,称为,命令寄存器或控制寄存器,,,相应的端口称为,命令端口或控制端口,,对可编程芯片,初始化,过程实际上就是对芯片的控制端口写入各种命令字的操作过程。,可编程接口,四、8259,A,的中断管理方式和编程,8259,A,有多种工作方式,这些工作方式可通过初始化命令字或,预置命令字,(,ICW,1,ICW,4,),和,操作命令字(,OCW,1,OCW,3,),来设置。,8259,A,只有两个端口地址,A,0,=,0,偶地址端口,1,奇地址端口,低地址,高地址,7个可编程寄存器,程序员的观点,ICW,1,ICW,2,ICW,3,ICW4,(,顺序写入,),ICW1,初始化字,LTIM:,触发方式,=1,高电平触发,=0,上升沿触发,SNGL:,级连控制,=1,单片,=0,级连,IC4:ICW4,控制,=1,要写,ICW4(,8086,必须写),=0,不写,ICW4(,默认,ICW4,为全,0,),A0,D7D6 D5 D4 D3 D2 D1 D0,0,x,x,x,1 LTIM,x,SNGL IC4,8086连接8259,上升沿出发,单片。不写,ICW4,00010011=12H,ICW2,中断向量码,T,7,T,3,:,中断向量码的高,5,位,T,2,T,0,:,最低,3,位为中断源的序号,IR,n,000111,分别对应,IR,0,IR,7,由8259,A,根据中断源的序号自动填入,例如:,若,ICW2,命令字为01000000=,40,H,,则,IR,0,的中断向量码为,40,H,IR,7,的中断向量码为,47,H,,,等等。,A0,D7D6 D5 D4 D3 D2 D1 D0,1,T,7,T,6,T,5,T,4,T,3,x,x,x,OCW1,中断屏蔽字,M,i,=1,中断请求线,IR,i,被屏蔽,(,不允许中断,),=0,允许该,IR,i,中断,OCW1,将写入,IMR,寄存器。,A0=1,时读,OCW1,可读出设置的,IMR,内容。,A0,D7D6 D5 D4 D3 D2 D1 D0,1,M,7,M,6,M,5,M,4,M,3,M,2,M,1,M,0,8259,A,编程举例,按以下要求初始化,8259,A:,接口地址为,20,H,和21,H;,中断为上升沿触发;单片,8259,A;,不写,ICW4;,与,IR,0,-IR,3,对应的中断向量码为40,H-43H;,根据要求,各初始化参数及工作参数如下:,ICW1=0001,0,0,10,=12H,ICW2=,40,H,中断向量码,OCW1=,0F0,H,8259,A,编程举例(续),初始化程序如下:,INIT8259A:,MOVDX,20H;A0=0,,写,ICW1,MOVAL,12H;,上升沿触发,单片,不写,ICW4,OUTDX,AL,MOVDX,21H;A0=1,,写,ICW2,OCW1,MOVAL,40H;ICW2,OUTDX,AL,MOVAL,0F0H;OCW1:,屏蔽,IR4-IR7,OUTDX,AL,I/O,接口和端口,端口地址形成。,简单,244/273,组成的,I/O,系统,无条件和查询数据传输方式。,基本,I/O,的4,种方法,中断的一般过程,,5,个,8086,中断体系,矢量中断,统一管理,中断的,3,个要点,撰写中断服务程序和主程序。中断数据传送方式,了解8259是什么芯片,Ch6 I/O,和中断,ch2,微处理器及总线,808,6,/8088,的内部,结构。流水线,4+2,个特殊,寄存器,。,熟悉,8,个通用寄存器和,9,个标志位。,8088,储存体系。,物理地址的形成,,堆栈的特点;,CS,DS,ES,SS/,SP/BX,BP,SI,DI,意义。,熟悉,8088管脚。,ALE,#DEN,DT/#R,三条总线的形成。分时复用。,总线时序。,4,个周期。,T1,下沿锁存,,T3,开始检测,READY,8086,的结构,寄存器(隐含性质),寄存器,执 行 操 作,AX,整字乘法,整字除法,,整字,I/O。,AL,字节乘法,字节除法,,节字,I/O。,十进制算术运算。,AH,字节乘法,字节除法。,BX,基址寻址。,CX,字符串操作,,循环。,CL,移位和循环移位。,DX,整字乘法,整字除法,,间接,I/O。,BP,堆栈寻址,SP,堆栈操作。,SI,字符串操作,变址寻址,。,DI,字符串操作,,变址寻址,。,8088,的管脚功能,8088,采用双列直插式封装,有,40,个引脚,(,如右图所示,),,但总线信号数量却大于,40,,故,8088,采用了,分时复用,技术,部分引脚传送两种总线信号。,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,GND,A14,A13,A12,A11,A10,A9,A8,AD7,AD6,AD5,AD4,AD3,AD2,AD1,AD0,NMI,INTR,CLK,GND,VCC,A15,A16/S3,A17/S4,A18/S5,A19/S6,SS0,MN/MX,RD,HOLD*,HLDA*,WR*,IO/M*,DT/R*,DEN*,ALE*,INTA*,TEST,READY,RESET,Intel 8088,Ch3,指令系统,8,种寻址方式;数据寻址,指令寻址,4种,JUMP/CALL;I/O,寻址,2,种。,3,条通用规则,熟悉常用指令,指令类型,助记符,数,据,传,送,数据传送,MOV,,XCHG;,堆栈,PUSH/POP,地址传送,LEA ;,标志传送,PUSHF/POPF,输入输出,IN,OUT,算,术,运,算,加法,ADD,,ADC,,INC,,DAA,减法,SUB,SBB,DEC,,CMP,乘/,除法,MUL,DIV,逻辑移位,逻辑运算,AND,OR,NOT,XOR,,TEST,移位,SHL/SHR/SAR,ROL/ROR,RCL/RCR,串操作,MOVSB,控制转移,JMP,,,J,XX,,,LOOP,,CALL/RET,INT/IRET,Ch4,汇编语言程序设计,宏汇编的作用,伪指令的作用,符号、,变量,、段、过程定义,数据段变量的结构,顺序排放。,汇编模板,EXE,COM,熟悉常用算法,累加、排序、常用码转换。,EXE,模板,常用的汇编语言程序框架:,DATA SEGMENT;,定义数据段,VAL1 DB 12H,8EH ;,定义变量,DATA ENDS ;,数据段结束,CODE SEGMENT;,段定义,ASSUME DS:DATA,CS:CODE;,段,假设,START:,MOV AX,DATA;,段赋值,MOV DS,AX,MOV AX,4C00H,;,INT 21H,CODE ENDS,;,代码段结束,END,START,;,源程序结束,Ch5,存储系统,储存器的分类:,RAMROM;SRAMDRAM,,常用储存器的类型:,SRAM;EPROM,扩容技术:,地址分配表,,硬件连接和物理地址联系在一起。多片用译码器。,现代储存系统。数据访问局部化原理。,现代,PC,计算机的工作过程,冯,.,诺依曼计算机,一条条执行指令。,IP(ch2),现代储存系统。,Cache,虚拟储存系统,数据访问局部化原理。,数据,/,代码连续排放。容量,/,速度,/,价格最优,(,ch5),中断矢量表,Mem,前1,K,字节,RAM;,后,FFFF0H,启动字节(,ROM),PC,机储存系统的构成,(,ch6),
展开阅读全文