输入输出和中断技术.ppt

上传人:小飞机 文档编号:6028106 上传时间:2023-09-16 格式:PPT 页数:96 大小:879.50KB
返回 下载 相关 举报
输入输出和中断技术.ppt_第1页
第1页 / 共96页
输入输出和中断技术.ppt_第2页
第2页 / 共96页
输入输出和中断技术.ppt_第3页
第3页 / 共96页
输入输出和中断技术.ppt_第4页
第4页 / 共96页
输入输出和中断技术.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《输入输出和中断技术.ppt》由会员分享,可在线阅读,更多相关《输入输出和中断技术.ppt(96页珍藏版)》请在三一办公上搜索。

1、6.4 中断技术,中断基本概念 中断的一般过程8086/8088中断系统8259介绍,一、中断基本概念,1.实现CPU 与外设的并行工作,提高了 CPU 的效率。,查询方式的数据输入,中断方式的数据输入,中断示意图,2 中断定义,引起CPU中断的事件中断源。例如:数据传送请求输入输出数据,报告故障等事故处理掉电、硬件故障、软件错误、非法操作、定时时间到等中断源分为:外部中断、内部中断内部中断:CPU内部执行程序时自身产生的中断外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMIINTR可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前

2、指令后CPU对它作出响应。NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。,中断类型(回顾),二、中断过程,五个步骤:中断请求中断判优(有时还要进行中断源识别)中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤。,1)中断请求,外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。,2.1)中断源识别,计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。识别中断源有两个方法:1、软件查询(查

3、询中断)。,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使用,I

4、NTA的第二个总线周期读入中断矢量。教材图6-22,矢量中断,CS,T,INTA信号,2.2)中断判优,多个中断源产生中断,CPU首先为谁服务?中断优先级排队问题。中断优先级的控制方法硬件判优链式判优、并行判优(中断向量法)软件判优顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。x86系统中,这项任务由PIC8259和CPU共同完成。,链式判优电路原理图(教材图6.18),菊花链逻辑电路,INTAin,IREQ,INTR,&,1,INTAout,DB,三态门,中断向量码,E,外设接口,中断确认,菊花链逻辑电路,3)中断响应,在每条指令的最后

5、一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断:对INTR,CPU被允许中断,即IF=1;当前指令执行完。对INTR,还应满足以下条件当前指令是STI和IRET,则下条指令也要执行完。无总线请求。(HOLD)信号和复位(RESET)。-若NMI和 INTR 同时发生,则首先响应NMI。,响应中断的条件,3)中断响应(续),CPU中断响应时,要做下述五项工作:向中断源发出INTA中断响应信号;获得向量。硬件现场保护PSW(FLAGS)关中断IF=0;断点保护和CS、IP。这主要是保证中断结束后能返回被中断的程序。获得中断服务程序首地址(入口)。如何得到中断处理程序

6、的首地址?固定入口法-单片机中断向量法常用,4)中断处理(中断服务),中断服务子程序特点为”远”过程或“过程”(类型为FAR或NEAR)要用IRET指令返回中断服务子程序要做的工作保护现场(PUSH regs)开中断(STI)进行中断处理 关中断(CLI)恢复现场(POP regs)中断返回(IRET),push ax;1、保护现场push bxsti;2、开中断;3、中断处理cli;4、关中断pop bx;5、恢复现场pop axsti;6、开中断和中断返回 iret,Int_48H PROC FAR,5)中断返回,执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到I

7、P、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。,IPL,IPH,CSL,CSH,FLAGL,FLAGH,SP,IPL,IPH,CSL,CSH,FLAGL,FLAGH,SP,IP,CS,FLAG,进入中断服务程序时,中断返回后,三、8086中断系统,1、中断类型,8086能处理256种中断,分为两大类:外部中断和内部中断。其中断分类如右图,8086的中断分类,0,1,2,4,与中断有关的控制线为:NMI、INTR、INTA#8088系统的中断源内部中断除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。单步中断:类型号1,TF=1时产生(当前指令需执行完)断点中断:类型号

8、3,这是一个软件中断,即INT 3指令。溢出中断:类型号4,这是一个软件中断,即INTO指令。软件中断:即INT n指令,类型号n(0-32)。外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。,8088系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码。溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值软件中断的类型码由指令给出可屏蔽中断的类型码由8259给出,中断矢量的获取?,外部中断和 INT n 之间的关系 结合中断指令INT n,我们可以这样理解外部中断:当外部中断源

9、发中断给CPU时,如果CPU满足一定的条件,处于开中断状态,CPU就可以响应中断,这时外设在CPU正在执行指令与其下一个指令之间,等效“插入”了一个INT n指令,这里的n就是外设提供的中断类型号。,中断服务程序调试非常简单!,1、内部中断可以预测(除法中断除外)、内部中断不受IF的影响、内部中断不需要执行从外部获得矢量,2、中断向量表:中断服务子程序的入口地址,从00000H到003FFH区域,大小为1K空间,共256个中断向量。每个入口地址占用4个字节,低字为段内偏移,高字为段基址根据中断类型号获得中断服务程序入口4n。,中断向量统一管理,中断类型号和中断服务子程序的入口地址之间的关系:,

10、例 INT 12H在中断矢量表中的物理地址?INT 8中断服务程序首地址在中断矢量表中的物理地址?48H 20H,中断向量表的初始化,初始化将中断服务程序的入口地址放入向量表 例:中断类型码为48H的中断处理子程序的名字为int48h,编写程序段将该中断处理子程序的入口地址放入向量表。,若外设的中断类型号为6BH,设中断服务程序段地址是1000H,偏移地址为2000H。设置中断向量表,CLI MOV AX,,0 MOV DS,AX;置数据段段基地址为0 MOV AX,2000H MOV 6BH*4,AX;对偏移地址为01AC的单元MOV AX1000H;送双字MOV 6BH*4+2l,AX S

11、TI,例1 若外设的中断类型号为6BH,则此中断类型号对应的中断矢量表地址为从00lACH开始的四个存储单元设中断服务程序段地址是1000H,偏移地址为2000H。,中断向量表的初始化,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,、8086/8088 CPU的中断响应过程,内部中断响应过程 无INTA#周期中断类型码固定或由指令给出响应过程主要步骤:PUSH FLAG IF=0 PUSH CS、PUSH IP 取中断向量送入IP和CS,中

12、断响应过程(续),外部中断响应过程非屏蔽中断,与内部中断响应过程类似 可屏蔽中断(时序见教材图6.24)INTA#(1),PIC进行优先级排队判优处理 INTA#(2),PIC把中断类型码放到DB上,CPU读入 PUSH FLAG IF=0 PUSH CS、PUSH IP 取中断向量送入IP和CS,与内部中断一样,8088系统中各中断的优先级,优先级从高到低顺序如下:内部中断NMIINTR单步中断,8086/8088的中断响应过程,完成当前指令,内部中断,NMI,INTR,TF=1,执行下一条指令,IF=1,响应中断读类型码,标志入栈,调服务程序,CS、IP入栈,IF、TF=0,令TEMP=T

13、F,又有NMI,TEMP=1,执行服务程序,CS、IP出栈,标志出栈,返回被中断程序,Y,N,N,N,N,Y,Y,Y,Y,N,N,Y,Y,N,单步,当开关的状态为闭合时,在数码管显示“0”;当开关为打开时,数码管显示“1”。查询方式相应程序段如下:NEST:MOVDX,0F1H;状态接口的地址为F1HINAL,DX;读入开关状态TESTAL,01;测试位MOVAL,06H Jz DISP;断开显示1MOVAL,3FH;闭合显示0DISP:MOVDX,0F0H;数据接口的地址为F0HOUTDX,ALJMPNEST,当开关的状态为闭合时,在数码管显示“0”;当开关为打开时,数码管显示“1”。查询方

14、式相应程序段如下:,当开关的状态为闭合时,在数码管显示“0”;当开关为打开时,数码管显示“1”。中断方式相应程序段如下:,读取输入口,D0状态,打开输出“1”,闭合输出“0”,IRET,当开关的状态为闭合时,在数码管显示“0”;当开关为打开时,数码管显示“1”。中断方式相应服务程序段如下:INT1 PRO NEAR MOV AL,3FH MOV DX,0F0H OUT DX,ALLOP:MOVDX,0F1H;INAL,DXTESTAL,01;测试位Jnz LOP;闭合循环MOVAL,06;打开显示1 MOVDX,0F0H;OUTDX,ALIRET,PUSH AXPUSH DXSTI,CLIPO

15、P DXPOP AX,中断方式相应主程序段如下:CODE SEGMENT ASSUME CS:CODESTART:CLI MOV AX,0 MOV DS,AX MOV SI,80H*4 MOV AX,OFFSET INT1 MOV SI,AX MOV AX,SEG INT1 MOVSI+2,AX STI JMP$CODE ENDS END START,中断服务程序定义,9.53 中断入口地址设置一、用串指令二、用伪指令三、用系统调用四、用MOV指令(直接装入法),例2 若外设的中断类型号为N,则此中断类型号对应的中断矢量表地址为从N*4开始的四个存储单元设中断服务程序的名字INT_VCE,习题

16、9 假设中断类型9的中断服务程序首地址为INT_Proc09,写出建立这个中断矢量表的程序段。习题10 编写程序,使类型1CH的中断矢量指向中断处理程序SHOW_CLOCK。,CLI;关中断MOV AX,0MOV DS,AX;置附件段基地址为0MOV SI,n*4;假设中断类型号为NMOV AX,OFFSET INT_VCE;置中断程序首地址的偏移量到AXMOV SI,AX;填偏移量到中断地址表MOV AX,SEG INT_VCE;置中断程序的段基地址到AXMOV SI+2,AX;填段基地址到中断地址表STI;开中断,例2,9.6 8259简介,PIC,Programmable Interru

17、pt Controller可对8个中断源实现优先级控制,可扩展至对64个中断源实现优先级控制在中断响应周期,8259A 可提供相应的中断类型号。每一级中断可以屏蔽或允许。可编程设置不同工作方式,一、8259A的内部结构,中断服务寄存器,中断请求寄存器,IR0,IR1,IR7,IR2,IR3,IR4,IR5,IR6,IR0IR1IR2IR3IR4IR5IR6IR7,000,11,(一)、中断控制部分工作原理,从片A标志码:011,从片B标志码:110,1.中断请求寄存器 IRR,8 位,若IRi 有效(“1”,),对应位置“1”,直到IRi 得到响应。,因此,IRR记录外中断源IRi的请求信息。

18、,2.中断服务寄存器 ISR,8位,当IRi得到响应时,对应位置“1”。ISR 记录正在处理的IRi,当中断嵌套时,可能多位置“1”。,因此,ISR记录CPU对IRi的响应情况。,3.中断屏蔽寄存器 IMR,8位,某位置“1”,对应IRi 禁止产生中断。,因此,IMR控制是否对IRi进行屏蔽操作。,4.优先权电路,实现优先权的判断与处理,采用编码器和比较器电路。,5.控制逻辑,(1)由IRR 和PR 的情况,向8259A 其它部件发出控制信息。,(2)向CPU 发出INT 信号,接收CPU,信号,并提供中断矢量,(二)、级联缓冲/比较器,可以实现8259A的级联,扩展外中断。,主8259A:C

19、AS2CAS0 输出,输出被 响应的从片的标志码。,(三)、读/写控制逻辑,A0:常常与地址信号线A0相连。,8259A的两个端口地址,8259A 的引脚图,二、8259A的中断管理方式和编程,8259A有多种工作方式,这些工作方式可通过初始化命令字或预置命令字(ICW1ICW4)和操作命令字(OCW1OCW3)来设置。,低地址,高地址,ICW2中断向量码,ICW1初始化字,ICW3级连控制字,ICW4中断结束方式字,OCW1中断屏蔽字,OCW2中断结束和优先级循环,OCW3屏蔽方式和读出控制字,7个可编程寄存器,ICW2,ICW3,ICW4,OCW1(顺序写入),端口小结:8255有4个端口

20、,高地址为控制口;2个控制字。8253有4个端口,高地址为控制口;1个控制字。8251有2个端口,高地址为控制口;3个控制字(2个写,1个读)8259有2个端口,都是控制口;7个控制字,ICW1和OCW2/OCW3写入低地址口,其它写入高地址口。,二、8259A的中断管理方式(一)、中断优先权管理1完全嵌套方式 8259A的中断请求输入端引入的中断具有固定的优先权排队顺序,IR0为最高优先级,IR1为次高优先级,依次类推,IR7为最低优先级。,2特殊全嵌套方式 特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么,也会给予响应

21、,从而实现一种对同级中断请求的特殊嵌套。特殊全嵌套方式一般用在8259A级连的系统中。,3自动循环方式 从IR0IR7引入的中断轮流具有最高优先权。初始优先级队列规定为IR0IR1IR2IR3IR4IR5IR6IR7 如果IR0端正好有中断请求,处理完后IR1IR2IR3IR4IR5IR6IR7IR0 如果IR4端正好有中断请求,处理完后IR5IR6IR7IR0IR1IR2IR3IR4,4优先级特殊循环方式 最低优先级是由编程确定的,从而最高优先级也由此而定。,(三)中断屏蔽方式 有两种方法:第一、普通屏蔽方式。第二、采用特殊屏蔽方式。,(四)、8259A中断结束的管理方式 可采用三种中断结束

22、方式:自动EOI方式一般EOI方式特殊EOI方式,三、8259A编程(一)、8259A的初始化命令字ICW1的格式和含义主要功能是中断信号的触发方式,例如:上升沿触发,级联0 0 0 1 0 0 0 1,三、8259A编程(一)、8259A的初始化命令字ICW2的格式和含义功能是中断类型号,例如:中断类型号为080F0 0 0 0 1 x x x,三、8259A编程(一)、8259A的初始化命令字ICW3的格式和含义在8259A有级联情况下使用,主从,三、8259A编程(一)、8259A的初始化命令字ICW4的格式和含义主要功能是中断嵌套方式选择,使能中断结束方式,D11为自动EOI,Dl0为

23、非自动EOID4位SFNM为有级联时定义的,D41为特殊完全嵌套方式,D4=0完全嵌套方式例如:0 0 0 0 0 0 0 1,三、8259A编程(二)、8259A的操作命令字0CW1的格式和含义主要功能是确定屏蔽位,1表示禁止中断 0 0 0 1 0 0 0 1,三、8259A编程(二)、8259A的操作命令字0CW2的格式和含义主要功能是控制中断结束,优先权循环等操作,如果采用一般EOI方式 0 0 1 0 0 0 0 0,0,中断服务寄存器,中断请求寄存器,IR0,IR1,IR7,IR2,IR3,IR4,IR5,IR6,IR0IR1IR2IR3IR4IR5IR6IR7,000,11,MO

24、V AL,20HOUT 端口(A0=0),AL,三、8259A编程(二)、8259A的操作命令字0CW3的格式和含义主要功能是控制8259A的中断屏蔽和读取寄存器的状态,一般不用,9.7 中断举例,中断传送方式的设计过程是:一、硬件方面:设定硬件的中断类型号。二、软件方面:1、关中断;2、填写中断入口地址表;3、设置8259A及其他编程芯片;4、开中断;5、编写中断服务子程序。,举例一:软件中断,INTO中断执行结果由两个加数决定,有溢出:BL0FFH;无溢出:BL00。,INTO1PROC;中断溢出处理PUSH AXMOV BL,0FFHPOP AXIRET;中断返回INTO1ENDP,DA

25、TASEGMENT;定义数据段ADD1DB?ADD2DB?DATAENDSCODESEGMENT;定义代码段ASSUME CS:CODE,DS:DATASTART:MOV AS,DATAMOV DS,AX,MOV AX,0;填写中断地址表MOV ES,AXMOV DI,04*4;存中断程序首地址的偏移量MOV AX,OFFSET INTO1;可用MOV AX,CSCLDSTOSW;存中断程序首地址的段地址MOV AX,SEG INTO1STOSW,MOV BL,0;主程序MOV AL,ADD1;计算ADD1ADD2ADD AL,ADDD2INTO;若有溢出,转溢出处理MOV AL,BLMOV

26、AX,4C00HINT 21HHLT,INTO1PROC;中断溢出处理PUSH AXMOV BL,0FFHPOP AXIRET;中断返回INTO1ENDP;CODEENDSEND START,举例二:硬件中断,下图是一个接口电路,用中断传送方式使8255A的A口的发光二极管依次发光,要求每个二极管在一个循环中发光1S。设8255A端口地址为80H86H,8253端口地址为88H8EH,主8259端口地址为90H96H,从8259端口地址为98H9EH,CA0CA1CA2,CA0CA1CA2,SP,SP,+5V,0V,/INTA,/INTA,/INTA,INT,INT,INTR,IR0 IR7,

27、IR0 IR7,OUT0 GATA0 CLK0,+5V1KHz,A0 A1 A7,+5V,8259,8259,8255,8253,8255A的A口工作方式可选为方式0的输出,而8253通道0的工作方式可定为方式0,即计数结束产生中断信号。8255A的方式控制字:10001011B。即A输出,B口输入,C口输入。8253通道0的方式控制字:00110001B。即工作方式为方式0,BCD码计数。,8259设置特点1、初始化具有顺序性2、顺序为 ICW1、ICW2、ICW3、ICW4,主8259设置ICW1:上升沿触发,级联端口90H:00010001BICW2:中断类型码,端口92H:08HICW

28、3:主片从片标志,端口92H:00000100BICW4:完全中断嵌套方式,非自动中断结束方式端口92H:00000001B,从8259设置ICW1:上升沿触发,级联端口98H:00010001BICW2:中断类型码,端口9AH:30HICW3:主片从片标志,端口9AH:00000010BICW4:完全中断嵌套方式,非自动中断结束方式端口9AH:00000001B,SHIFT_DATDB 0FEHCLI;关中断CLD;填写中断入口地址表MOV AX,0MOV ES,AXMOV DI,4*31HMOV AX,OFFSET INT_31HMOV ES:DI,AXINC DIINC DIMOV AX

29、,SEG INT_31HMOV ES:DI,AX,;设置主8259MOV AL,11H;设置ICW1OUT 90H,ALMOV AL,08;设置ICW2OUT 92H,ALMOV AL,04;设置ICW3OUT 92H,ALMOV AL,01;设置ICW4OUT 92H,ALMOV AL,01101011B;设置IOW1,开放IR2,IR4,IR7中断OUT 92H,AL,;设置从8259MOV AL,11H;设置ICW1OUT 98H,ALMOV AL,30H;设置ICW2OUT 9AH,ALMOV AL,02;设置ICW3OUT 9AH,ALMOV AL,01;设置ICW4OUT 9AH,

30、ALMOV AL,00000000B;设置IOW1,开放IR0IR7中断OUT 9AH,AL,;设置8255和8253MOV AL,10001011B;设置8255AOUT 86H,ALMOV AL,0OUT 80H,ALMOV AL,00110001B;设置8253通道0OUT 8EH,AMOV AL,00OUT 88H,ALMOV AL,10HOUT 88H,ALSTI;开中断;执行其他程序,中断服务子程序:主要是对8255的A口进行操作,使变量SHIFT_DAT的内容左移,重新设置8253通道0,为下一次中断信号产生作准备,对8259A传送一个EOI命令,表示中断程序完成。,INT31H

31、PROC FAR;中断服务子程序PUSH AX;保护现场PUSHFMOV AL,SHIFT_DAT;对8255的A口送数OUT 80H,ALROL AL,1;变量SHIFT_DAT左移MOV SHIFT_DAT,AL;准备下一次数据,MOV AL,00110001B;重新设置8253OUT 8EH,ALMOV AL,00OUT 88H,ALMOV AL,10HOUT 88H,AL,;发EOI命令MOV AL,20H;传送EOI命令给8259OUT 98H,AL;向从8259发EOI命令OUT 90H,AL;向主8259发EOI命令;POPF;恢复现场POP AXIRET;中断返回INT31HE

32、NDP,9.81 中断设置 在PC/XT机中,有一片8259A中断控制芯片,可管理8个中断源。在PC/AT机中有两片8259A中断控制芯片,可管理15个中断源。,9.81 中断设置优先权主片:IR0,IR1从片:IR0,IR1,IR2,IR3,IR4,IR4,IR5,IR6,IR7 主片:IR3,IR4,IR5,IR5,IR7中断类型号主片:00H07H从片:70H77H,9.8 IBM-PC机硬件中断,9.82 PC机中断资源的使用一、对中断屏蔽寄存器的操作 主片8259A中断屏蔽寄存器的IO端口地址是21H,它的8位对应控制8个外部设备,通过设置这个寄存器的某位为0或为1来允许或禁止某外部

33、设备的中断。某位为0表示允许某种外设中断请求,某位为1表示某种外没的中断请求被屏蔽(禁止)。从片8259A中断屏蔽寄存器的IO端口地址是A1H,例如,只允许键盘中断,可设置如下中断屏蔽字:MOV AL,11111101BOUT 21H,AL如果系统重新增设键盘中断则可用下列指令实现:IN AL,21H AND AL,11111101B OUT 21H,AL,9.82 PC机中断资源的使用二、中断结束命令 在一次中断处理结束之前,还应给8259A可编程中断控制器的中断命令寄存器发出中断结束命令EOI,可采用一般的EOI方式,中断命令寄存器的IO端口地址为20H,结束外中断用下面的指令:MOV AL,20HOUT 20H,AL 同样,如果中断是从片8259A的中断输入线产生的,则要同时对主片和从片的中断命令寄存器发EOI命令。从片8259A中断命令寄存器的IO端口地址是A0H,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号