




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,计算机接口技术,第7章 微型计算机中断系统,2,Ch.7 微型计算机中断系统,本章内容 中断基本概念 8086/8088中断系统 可屏蔽中断处理过程 可编程中断控制器8259A,3,7.1 概述,7.1.1 中断的基本概念 什么是中断? 与生活场景的比较,4,7.1.1 基本概念,一、中断 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。,5,7.1.1 基本概念,二、中断源 引起CPU中断的事件中断源。例如:
2、外设请求输入输出数据,报告故障等 事件掉电、硬件故障、软件错误、非法操作、定时时间到等 中断源分为:外部中断、内部中断 内部中断:CPU内部执行程序时自身产生的中断 外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMI INTR可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。 NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。,6,7.1.1 基本概念,三、为何计算机中要引入中断? 中断功能便于实现 1分时操作 2实时处理 3故障处理 4.主机与外设之间的速度匹配,CPU和外设同时工作
3、;CPU可以通过分时操作启动多个外设同时工作,统一管理。大大提高了CPU的利用率,也提高了输入、输出速度。,当计算机用于实时控制时,中断是一个十分重要的功能。现场的各个参数、信息,需要的话可在任何时候发出中断申请,要求CPU处理;CPU就可以马上响应(若中断是开放的话)加以处理。这样的及时处理在查询的工作方式是做不到的。,计算机在运行过程中,往往会出现事先预料不到的情况,或出现一些故障:如电源突跳,存储出错,运算溢出等等。计算机就可以利用中断系统自行处理,而不必停机或报告工作人员。,7,7.1.2 中断过程与中断技术,一个完整的中断过程由中断请求、中断判优及屏蔽、中断响应、中断处理及中断返回五
4、个部分组成。 微机系统中使用的中断技术有单线中断、多级中断、矢量中断三种。 图7.1为微处理器的3种中断技术示意图。 一个完整的中断过程,如图7.2所示。 中断技术是对中断全过程的分析、研究及实现的方法。,继续,8,图7.1 微处理器的3种中断技术示意图,返回,9,图7.2 一个完整的向量中断过程,返回,中断返回,10,7.2 8086/8088中断系统,对于各种计算机系统,中断系统有很大的差异,但都具有基本功能: (1)能实现中断响应、中断服务、中断返回、中断屏蔽 (2)能实现中断优先级排队 (3)能实现中断嵌套 本章讨论与8086/8088CPU相配合的中断系统及中断接口芯片8259A。,
5、8086/8088微处理器有处理256种中断的能力。 每个中断分配给一个中断类型码,在0255之间,用一字节表示,也称为256种类型中断。 256种类型中断分为硬件中断和软件中断。,11,7.2.1 8086/8088中断源,12,8086/8088系统的中断源 内部中断(又称为软件中断) 通常包括由中断指令INT引起的、由CPU的某些运算错误引起的和由调试程序debug设置的中断3种形式。 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生 单步中断:类型号1,TF=1时产生 断点中断:类型号3,这是一个软件中断,即INT 3指令 溢出中断:类型号4,这是一个软件中断,即INTO指令
6、软件中断:即INT n指令,类型号n(0-255),13,8086/8088系统的中断源 外部中断(也称为硬件中断) 非屏蔽中断NMI(Non Maskable Interrupt):类型号2,不可用软件屏蔽,CPU必须响应它。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才响应。,14,15,中断源识别,8088系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码 。 溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值 软件中断的类型码由指令给出 可屏蔽中断的类型码由PIC给出 CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个
7、中断响应总线周期把中断类型码放到数据总线上,供CPU读入。,16,7.2.2 中断向量表(IVT),中断向量存放各类中断的中断服务程序的入口地址(段和偏移) 8086将内存最低地址的1K单元作为中断向量表,表的地址位于内存的00000H003FFH,大小为1KB,共256个中断向量 每个中断向量占用4 Bytes,低字为段内偏移,高字为段基址,17,03FFH,03FCH,Type 225,CS,IP,:,0083H,CS,Type 32,IP,0080H,007FH,CS,Type 31,IP,007CH,:,CS,Type 5,IP,0014H,0013H,CS,Type 4,IP,CS,
8、Type 3,IP,IP,IP,IP,CS,CS,CS,0010H,000FH,000CH,000FH,0008H,0007H,0004H,0003H,0000H,Type 2,Type 1,Type 0,:,224,保 留 27 个,用 户 定 义,个,8086 专 用 5 个,溢出中断,断点中断,非屏蔽中断,单步中断,除数为 0,8086/8088中断向量表 占内存0000H段,中断类型码,中断向量指针,中断向量,18,中断向量地址一览表,19,中断向量地址一览表续表,20,8086中断类型码,根据中断类型号获得中断服务程序入口的方法: (n为中断类型号) 中断向量在IVT中的存放地址4n
9、 例如:类型码=0CH,中断向量表指针=0030H 8086从0030H开始读取4字节中断处理程序的入口地址,前两字节装入IP,后两字节装入CS,8086执行中断处理程序。,21,中断向量表的初始化,初始化将中断服务程序的入口地址放入向量表,用MOV指令。 例1:中断类型码为48H的中断处理子程序的名字为int48h,编写程序段将该中断处理子程序的入口地址放入向量表。 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,22,假设中断类型号为60
10、H,中断服务程序的偏移地址是1234H,段地址5678H MOV AX,00H MOVES,AX; 0段 MOVBX,60H*4; (=180H)中断向量指针 MOVAX,1234; 中断服务程序偏移地址 MOVES:BX,AX;装入偏移地址 MOVAX,5678H; 中断服务程序段地址 MOVES:BX+2,AX;装入段地址,23,中断向量的修改:使用系统的中断资源 利用DOS功能调用21H中的35H和25H号功能修改中断向量 1.获取原中断向量: AH=35H AL=中断类型号 INT 21H 返回时送ES:BX=旧中断向量段地址:偏移地址 2.设置新中断向量: AH=25H AL=中断类
11、型号 DS:DX=新中断向量段地址:偏移地址 INT 21H 3.恢复原中断向量 AH=25H AL=中断类型号 DS:DX=旧中断向量段地址:偏移地址 INT 21H,24,1.获取原中断向量: MOV AL, N ;N为指定中断号 MOV AH, 35H INT 21H ; 取原中断向量到ES:BX PUSH ES PUSH BX ; 保存原中断向量,入栈 ,例用DOS功能调用修改中断向量,假设原中断服务程序的中断号为n,新中断服务程序入口地址的段基址为SEIN,偏移量为 OFIN。中断向量修改的程序段为:,25,2.设置新中断向量: PUSH DS MOV AX, SEIN MOV DS
12、, AX ; 新中断向量段地址放DS MOV DX, OFIN ;新中断向量偏移地址放DX MOV AL, N ;利用原中断类型码 MOV AH, 25H INT 21H ; 设置新的中断向量 POP DS,3.恢复原中断向量 POP DX ;恢复原中断向量,出栈 POP DS MOV AL, N MOV AH, 25H INT 21H ; 恢复原中断向量,26,7.2.3 8086/8088 中断过程,一个完整的中断过程,如图7.2所示。 以下以外部中断为主介绍五个步骤。,27,一、中断请求,外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚; 中断请求信号:边沿请求,电平
13、请求 例如,NMI为边沿请求,INTR为电平请求 中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。 在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出: (I/O接口) 1n -PIC-CPU,28,二、中断判优,1、中断源识别: 计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。识别中断源有两个方法: 软件查询:将中断信号从数据总线读入,用程序进行判别。 中断矢量法:由中断源提供中断类型号,CPU根据类型确定中断源。(8086/8088即采用此种方法) 2、中断判优 多个中断源产生中断,CPU首先
14、为谁服务? 中断优先级排队问题。,29,二、中断判优,3、中断优先级控制要处理两种情况: (1)对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理; (2)对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断即允许中断嵌套。 4、中断优先级的控制方法 (1)硬件判优链式判优、并行判优(中断向量法) (2)软件判优顺序查询中断请求,先查询的先服务(即先查询的优先级别高) 5、常将中断判优与中断源识别合并在一起进行处理 x86系统中,这项任务由PIC和CPU共同完成。,30,INTAin,CPU INTA INTR,外设1,外设2,外设接
15、口1,菊花链 逻辑电路,外设接口2,外设3,外设接口3,1,菊花链 逻辑电路,菊花链 逻辑电路,IREQ,IREQ,IREQ,中断确认,链式判优电路原理图,INTAin,INTAin,中断确认,中断确认,31,菊花链逻辑电路,INTAin,IREQ,INTR, ICW1:边沿触发,多片,要ICW4 out 20h,al mov al,08h ; ICW2:中断类型号08H0FH out 21h,al mov al,04h ; ICW3:IR2上引入从片 out 21h,al mov al,1h ; ICW4:一般全嵌套,非缓冲,非自 ;动结束,8086 out 21h,al,中断控制器的初始化
16、程序段,94,初始化从片8259A,mov al,11h ; ICW1:边沿触发,多片,要ICW4 out 0a0h,al mov al,70h ;ICW2:中断类型号70H77H out 0a1h,al mov al,02h ;ICW3:IR2上引入从片 out 0a1h,al mov al, 01h ;ICW4:全嵌套,非缓冲,非自动 ;结束,8086 out 0a1h,al,中断控制器的初始化程序段,95,4、8259A的操作命令字OCW,OCW用于设置8259的工作状态 在初始化后写入 OCW的写入顺序可任意,需要哪个OCW就写入那个OCW 写入地址要求: OCW1必须写入奇地址端口(
17、A0=1) OCW2,OCW3必须写入偶地址端口(A0=0),96,OCW1(A0=1)中断屏蔽,屏蔽命令字 内容写入中断屏蔽寄存器IMR DiMi对应IRi,为1禁止IRi中断; 为0允许IRi中断。各位互相独立。,97,或:OCW1中断屏蔽字,Mi=1 中断请求线IRi被屏蔽(不允许中断) =0 允许该IRi中断 OCW1将写入IMR寄存器。 A0=1时读OCW1可读出设置的IMR内容。,A0 D7D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0,98,OCW2(A0=0)中断排队方式,R、SL和EOI配合使用 产生中断结束EOI命令和改变优先权
18、顺序,L2L0的3位编码 指定IR引脚,99,或:OCW2中断结束和优先级循环,L2L0: 优先级编码 R: 优先级自动循环 SL: 指定优先级 EOI: 结束中断命令 R SL EOI 0 0 1 非指定EOI 命令(NSEOI),全嵌套方式 0 1 1 指定EOI 命令(SEOI),全嵌套方式,按L2-L0编码复位ISR 1 0 1 NSEOI 命令,优先级自动循环 1 0 0 自动EOI,设置优先级自动循环 0 0 0 自动EOI,取消优先级自动循环(固定优先级) 1 1 1 SEOI 命令,按L2-L0编码循环优先级(L2-L0设为最低优先级) 1 1 0 按L2-L0编码循环优先级(
19、L2-L0设为最低优先级),A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0,100,OCW3(A0=0)特殊屏蔽查询中断读状态,ESMM、SMM 设置中断屏蔽方式,P、RR和RIS 规定随后读取的状态字含义,101,或:OCW3屏蔽方式和读出控制字,ESMM: 允许使能特殊屏蔽方式 SMM: 特殊屏蔽方式 ESMM SMM 1 1 特殊屏蔽方式置位 1 0 特殊屏蔽方式复位 0 x 非特殊屏蔽方式 P(Polling): =1 查询方式 =0 非查询方式,A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P
20、 RR RIS,RR: 读寄存器 RIS: ISR/IRR选择 RR RIS 1 1 读ISR 1 0 读IRR 0 x 无效,102,或:OCW3(续),查询方式允许8259A不工作于中断方式,而是以查询方式工作。 CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节: I x x x x R2 R1 R0 I=1表示有中断请求,中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生 的中断。 读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。,103,5. 读取状态字,CPU可读出IRR、ISR、IMR和查询字 A0为低,由OC
21、W3中RR和RIS位设定读取IRR或ISR,由OCW3中P位设定读取查询字 而A0引脚为高电平时读取的都是IMR,104,查询字:反映8259A是否有中断请求,中断位I位为1, 有外设请求中断,W2W0的编码 当前中断请求的最高优先级,105,6. 命令字和状态字的区别方法, 利用读写信号区别写入的控制寄存器和读出的状态寄存器 利用地址信号区别不同I/O地址的寄存器 由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别不同的寄存器 由前面的控制字决定后续操作的寄存器,106,7. 8259A编程举例,按以下要求初始化8259A: 接口地址为20H和21H; 中断为上升沿触发;
22、单片8259A;不写ICW4; 与IR0-IR3对应的中断向量码为08H-0BH; IR4-IR7不使用。 根据要求,各初始化参数及工作参数如下: ICW1 = 00010010 = 12H ICW2 = 08H 中断向量码 OCW1 = 11110000 = 0F0H 中断屏蔽字,107,7. 8259A编程举例,初始化程序如下: INIT8259A: MOVDX,20H;A0=0,写ICW1 MOVAL,12H;上升沿触发,单片,不写ICW4 OUTDX,AL MOVDX,21H;A0=1,写ICW2,OCW1 MOVAL,08H;ICW2 OUTDX,AL MOVAL,0F0H;OCW1
23、:屏蔽IR4-IR7 OUTDX,AL,108,7.3.5 PC机中断程序设计,1)主程序 保存原中断向量 设置自己的中断向量 初始化堆栈指针 设置8259A的中断屏蔽字(其他的已由操作系统设置) STI 2)中断服务程序 保存所用到的寄存器内容 中断服务程序主体 恢复进入时保存的寄存器内容 发EOI命令(必要时可提前) STI(必要时可提前) IRET,109,中断程序举例,PC机中主8259A的I/O地址为20H和21H,中断向量码为08H; 中断请求从IR6引入,故中断类型号为0EH; 主程序如下: ;保存原来的中断向量 movah,35h moval,0eh;中断类型码 int21h;
24、取原中断向量(在es:bx中) movsave_ip,bx;保存原来的中断向量 movsave_cs,es,110,;设置自己的中断向量 pushds movdx,offset my_int movax,seg my_int movds,ax;DS:DX的内容为my_int的首地址 movah,25h moval,0eh int21h ;设置自己的中断向量 popds ;初始化堆栈指针 movsp,my_stack_top ;设置8259A的中断屏蔽字 inal,21h andal,10111111b;开放IR6中断 out21h,al sti ,111,子程序如下: my_int proc
25、far pusha popa moval,20h ;EOI命令,00100000B out20h,al ;写OCW2 sti iret my_int endp,112,8259A芯片的初始化流程,113,8087中断请求 RAM奇偶错 I/O通道检查错,NMI屏蔽寄存器屏蔽位,8253定时器 键盘 未用 异步通信卡(辅) 异步通信卡(主) 硬盘 软盘 并行打印机,NMI,INTR,0 1 2 3 4 5 6 7,优 先 级,8088 CPU,8259A,I/O 通 道,114,8259A的应用举例,例 IBMPC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口
26、地址为20H和21H,初始化要求为:边沿触发、缓冲连接、中断结束采用一般EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H0FH,写出初始化程序为:,115,MOV DX,20H MOV AL,00010011B OUT DX,AL ;写入ICW1 MOV DX,21H MOV AL,08H OUT DX,AL ;写入ICW2 MOV AL,00001101B OUT DX,AL ;写入ICW4 XOR AL,AL OUT DX,AL ;写入OCW1 。 STI 。,116,例进入和退出特殊屏蔽方式,假定初始化之后,8259A工作于完全嵌套方式,要求对于IR3的中断级,能
27、够允许任何级别的中断中断其中断服务程序,即8259A按特殊屏蔽方式工作。因而在响应IR3而执行IR3的中断服务程序时,在A处,写入OCW1以屏蔽IR3,然后写入OCW3使ESMM=SMM=1,于是从A处开始,8259A进入特殊屏蔽方式,此后继续执行IR3的中断服务程序。在中断服务结束之前B处,再向8259A写入OCW3使ESMM=1,SMM=0,结束特殊屏蔽方式,返回到完全嵌套方式,接着写入OCW1,撤消对IR3的屏蔽,最后写入OCW2,向8259A发出EOI命令。此例说明在IR3的中断服务程序的A处至B处,允许任何级别的中断源中断IR3的服务程序。(除本身之外),117,。 IR3中断服务程
28、序入口 STI ;STI 开中断 MOV AL,00001000B OUT 21H,AL ;A处 写入OCW1,使IM3=1,屏蔽IR3, MOV AL,01101000B ;写入OCW3,使ESMM=SMM=1,置特殊屏蔽 OUT 20H,AL 。 ; 继续服务 MOV AL,01001000B ;B处写入OCW3,使ESMM=1,SMM=0, ;清除特殊屏蔽 OUT 20H,AL ; MOV AL,00H ;写入OCW1,使IM3=0,开放IR3 OUT 21H,AL ; MOV AL,00100000B ;写入OCW2,普通的EOI命令 OUT 20H,AL ; IRET ;中断返回,1
29、18,例读8259A相关寄存器的内容,设8259A的端口地址为20H、21H,请读入IRR、ISR、IMR寄存器的内容,并相继保存在数据段2000H开始的内存单元中;若该8259A为主片,请用查询方式,查询哪个从片有中断请求。,119,MOV AL,xxx01010B ; 发OCW3,欲读取IRR的内容(偶地址) OUT 20H,AL IN AL,20H ;读入并保存IRR的内容 MOV (2000H),AL MOV AL,xxx01011B ;发OCW3,欲读取ISR的内容(偶地址) OUT 20H,AL IN AL,20H ;读入并保存ISR的内容 MOV (2001H),AL IN AL
30、,21H ;读入并保存IMR的内容(奇地址) MOV (2002H),AL MOV AL,xxx011xxB ;发OCW3,欲查询是否有中断请求 OUT 20H,AL IN AL,20H ;读入相应状态,并判断最高位是否为1 TEST AL,80H JZ DONE AND AL,07H ; 判断中断源的编码 DONE:HLT,120,例 完整的主程序和中断服务子程序,8259A的IRQ0(向量号为08H)中断请求来自定时器8253 本程序的08H号中断服务程序,每次中断显示一串信息,显示10次,121,数据段,Datasegment intmsgdb A 8259A Interrupt ! d
31、b 0dh,0ah,0 counterdb 0 Data ends Codesegment assume cs:code, ds:data Start:mov ax,data mov ds,ax,122,设置中断屏蔽寄存器,in al,21h ;读IMR(奇地址口) push ax and al,0feh;允许IRQ0 out 21h,al mov counter,0;设置中断次数初值 sti;开中断 start1:cmp counter,10 jb start1;中断10次退出 sti ;开中断 mov ax,4c00h ;返回dos int 21h ,123,new08hsti;开中断 p
32、ush ax;保护寄存器(现场) push bx push ds inc counter mov si,offset intmsg;显示信息 call dpstri mov al,20h ;结束中断 out 20h,al pop ds;恢复寄存器 pop bx pop ax iret;中断返回,进入中断服务程序,124,显示字符串,dpstriproc;显示字符串子程序 push ax push bx dps1:lodsb cmp al,0 jz dps2 mov bx,0 mov ah,0eh int 10h jmp dps1 dps2:pop bx pop ax ret dpstriendp,125,例题:中断向量的装入直接写入法,MOV AX,00H MOVES,AX; 0段 MOVBX,08H*4; 中断向量指针 MOVAX,1234; 中断服务程序偏移地址 MOVES:BX,AX;装入偏移地址 MOVAX,5678H; 中断服务程序段地址 MOVES:BX+2,AX;装入段地址,126,保存原中断向量,mov ax,3508h int 21
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 短期聘用司机合同范本
- 家庭搬家服务合同(2篇)
- 2024年份6月生物医药原材料采购合同保密条款细则
- 2025至2030年中国总线型温湿度管理系统市场分析及竞争策略研究报告
- 2025至2030年中国广东凉茶饮料行业发展研究报告
- 2025至2030年中国平底展开缸行业投资前景及策略咨询报告
- 2025至2030年中国工控机箱转接卡市场分析及竞争策略研究报告
- 防非法集资教育课件
- 高一上期末化学试卷及答案
- 高一地理上册试卷及答案
- GB 16325-2005干果食品卫生标准
- 混凝土减水剂课件
- 2023机修钳工试题库及答案
- 进料检验流程图
- 先进制造模式课件
- 人工智能简史与机器学习及其应用课件
- 奇美牌口风琴吹奏说明电子版
- 面对自我 课程辅导教师读本
- 奎因企业文化因导向诊断模型详解
- 温室大棚项目绩效管理手册范文
- 叉车技能比武实施方案
评论
0/150
提交评论