微型计算机通信与接口技术(第二版) 第2章 中断接口技术.ppt
第二章第二章 中断接口技术中断接口技术 2.1 2.1 8086的中断系统的中断系统 2.1.1 中断与中断系统功能 1中断的概念 中断是一个过程,是CPU在正常执行程序的过程中,遇到外部或内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为紧急事件服务,当为这个紧急事件服务处理完毕之后,再返回到暂停点(中断点)继续执行原来的程序,由于CPU正在执行的原程序被暂停执行,所以称为中断 .2中断系统的功能()中断处理与返回()中断优先权判断()中断嵌套 2.1.2 中断分类 硬件中断和软件中断 1硬件中断硬件中断是指通过外部硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。2软件中断(内部中断)(1)除法出错中断(2)INT0溢出中断(3)INT n指令(4)断点中断(5)单步中断 2.1.3 中断向量和中断向量表本章首页本章首页本章首页本章首页00H04H系统专用10H1FHBIOS用40HFFH用户用08H0FH硬件中断20H3FHDOS用2.1.4 中断响应过程与时序1硬件中断的响应过程2硬件中断的时序3软件中断 软件中断是指通过中断指令来使CPU执行中断处理子程序的方法(1)中断类型码由指令提供,不需执行中断响应总线周期,也不受IF标志的影响。(2)正在执行软件中断时,若有通过NMI发出的中断请求,则立即响应;若发生可屏蔽中断请求,只要条件允许(如IF1,当前指令执行完)即可响应中断。3软件中断(3)软件中断,由于其处理程序的入口是通过中断向量表来定位,所以可以方便地用INT n指令进行调用,因此在使用中和一般的子程序没有两样,并且原则上0255种软件中断类型均可使用。2.1.5 中断程序设计举例/*/*例例2-1.c*/2-1.c*/#include#include /支持标准输入输出,如支持标准输入输出,如printfprintf()()。#include#include /控制台输入输出控制台输入输出#include#include /支持接口访问、中断向量操作函数支持接口访问、中断向量操作函数void interrupt(*sys_vect09)();void interrupt(*sys_vect09)();/申明一个函数为中断函数,该中断函数的中断号为申明一个函数为中断函数,该中断函数的中断号为sys_vect09sys_vect09unsigned unsigned intint key;key;/定义全局变量定义全局变量key(key(无符号整型无符号整型),),记录记录60H60H端口的值端口的值unsigned unsigned intint flag;flag;/定义标志定义标志flagflag,用来判断是否进行过新的中断,用来判断是否进行过新的中断void interrupt my_vect09()void interrupt my_vect09()/自定义的中断函数自定义的中断函数 key=inportb(0 x60);key=inportb(0 x60);/从从60H60H端口读取一个字节的数据送变量端口读取一个字节的数据送变量keykey flag=1;flag=1;/标志标志flagflag置置1 1,说明变量,说明变量keykey从端口读取一个新值从端口读取一个新值 (*sys_vect09)();(*sys_vect09)();/执行原来系统中的中断函数执行原来系统中的中断函数 void main()void main()flag=0;flag=0;/初始化标志初始化标志flagflag,表示还没有发生新的中断,表示还没有发生新的中断sys_vect09=getvect(0 x09);sys_vect09=getvect(0 x09);/读取系统读取系统9 9号调用的中断向量地址存入号调用的中断向量地址存入sys_vect09sys_vect09setvect(0 x09,my_vect09);setvect(0 x09,my_vect09);/设置系统新的设置系统新的9 9号调用入口地址是号调用入口地址是my_vect09my_vect09while(1)while(1)if(flag)if(flag)printf(%02x,key);printf(%02x,key);/输出中断中从输出中断中从60H60H端口读取的值到屏幕端口读取的值到屏幕 flag=0;flag=0;/标志清标志清0 0,准备接收新的,准备接收新的keykey值值if(key=0 x0010)break;if(key=0 x0010)break;/当输入的值是当输入的值是0AH0AH时,退出时,退出whilewhile循环循环if(key&0 x0080)=0 x0080)if(key&0 x0080)=0 x0080)printf(nprintf(n););nn/当字节变量当字节变量keykey的最高位是的最高位是1 1时,屏幕上输出换行符时,屏幕上输出换行符 setvect(0 x09,sys_vect09);setvect(0 x09,sys_vect09);/恢复系统恢复系统9H9H中断的中断入口地址中断的中断入口地址 2相关函数说明(1)inportb:inportb函数的原型是:int inportb(int port)。该函数是从指定的输入端口port读入一个字节,并返回这个字节。2相关函数说明(2 2)getvectgetvect与与setvectsetvectgetvectgetvect函数是用来获取中断处理程序的入口地址函数是用来获取中断处理程序的入口地址的;的;setvectsetvect函数则用来设置某个中断处理程序的函数则用来设置某个中断处理程序的入口地址。入口地址。(3 3)interruptinterrupt定义一个中断类型函数定义一个中断类型函数void interrupt (*sys_vect09)void interrupt (*sys_vect09)()();在用;在用setvectsetvect改写中断改写中断09h09h时就是时就是setvect(0 x09,my_vect09);setvect(0 x09,my_vect09);在改写之前应该先保在改写之前应该先保存原来中断存原来中断09h09h的中断向量地址的中断向量地址,这就用到了这就用到了getvectgetvect,sys_vect09=getvect(0 x09);sys_vect09=getvect(0 x09);其中其中sys_vect09sys_vect09是个声明为是个声明为“void interrupt (*sys_vect09)void interrupt (*sys_vect09)()();”型的指针型的指针2.2 可编程中断控制器Intel 8259A Intel 8259A的主要性能包括:具有8级中断优先控制,通过级连可以扩展至64级优先权控制;每一级中断都可以通过初始设置为允许或屏蔽状态;8259A的工作方式可以通过编程进行设置;8259A采用NMOS制造工艺,只需要单一的+5V电源。2.2.1 8259A的内部结构和工作原理8259A的内部结构主要有数据总线缓冲器、读/写控制逻辑、级连缓冲器、中断控制逻辑电路、中断请求寄存器、优先级比较器 1数据总线缓冲器数据总线缓冲器是8259A与系统数据总线的接口,是8位双向三态缓冲器。数据线D7D0与CPU系统总线相连,构成CPU与8259A之间的信息传送的通道。2读/写控制逻辑用于接收CPU的读写命令一方面把来自CPU的初始化命令字ICW和操作命令字OCW存入8259A内部相应的端口寄存器,用以规定8259A的工作方式和控制模式;另一方面也可使CPU通过读写电路读8259A内部有关端口寄存器的状态信息。3级连缓冲器8259A既可以工作于单片方式,也可以工作于多片级联方式。当用于实现8259A芯片之间的级连时,可把中断源由8级扩展至64级;在多片级连时,只有一个为主片,其余为从片。4中断控制逻辑电路5中断请求寄存器IRR6中断屏蔽寄存器IMR7中断服务寄存器ISR8优先级比较器PR2.2.2 8259A的外部引脚2.2.3 8259A的工作过程当完成初始化后,当完成初始化后,8259A8259A对外部中断请求的响应对外部中断请求的响应和处理过程如下:和处理过程如下:(1 1)当有一条或若干条中断请求输入)当有一条或若干条中断请求输入(IR7IR0IR7IR0)有效时,则使中断请求寄存器的)有效时,则使中断请求寄存器的IRRIRR的相应位设置为的相应位设置为1 1。(2 2)若)若CPUCPU处于开中断状态,则在当前指令执行处于开中断状态,则在当前指令执行完之后,响应中断,并且从完之后,响应中断,并且从INTAINTA发应答信号(两发应答信号(两个连续的个连续的INTAINTA负脉冲)。负脉冲)。2.2.3 8259A的工作过程(3 3).第一个第一个INTAINTA负脉冲到达时,负脉冲到达时,IRRIRR的锁存功能失效,的锁存功能失效,对于对于IR7IR0IR7IR0上发来的中断请求信号不予理睬。上发来的中断请求信号不予理睬。(4 4)使)使ISRISR寄存器的相应位置寄存器的相应位置1 1,以便为中断优先级比较,以便为中断优先级比较器的工作做好准备。器的工作做好准备。(5 5)使寄存器的相应位复位,即清除中断请求。)使寄存器的相应位复位,即清除中断请求。(6 6)第二个)第二个INTAINTA负脉冲到达时,将中断类型寄存器中的负脉冲到达时,将中断类型寄存器中的内容内容ICW2ICW2,送到数据总线的,送到数据总线的D7-D0D7-D0上,上,CPUCPU以此作为相以此作为相应中断的类型码。应中断的类型码。(7 7)若)若ICW4ICW4中的中断结束位为中的中断结束位为1 1,那么,第二个,那么,第二个INTAINTA负负脉冲结束时,脉冲结束时,8259A8259A将将ISRISR寄存器的相应位清零;否则,寄存器的相应位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字直至中断服务程序执行完毕,才能通过输出操作命令字EOIEOI,使该位复位。,使该位复位。2.2.4 8259A的工作方式1中断优先权管理方式(1)全嵌套方式(2)特殊全嵌套方式(3)优先级自动循环方式(4)优先级特殊循环方式2中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有普通屏蔽方式和特殊屏蔽方式两种。3结束中断处理的方式(1)中断自动结束方式(2)一般的中断结束方式(3)特殊的中断结束方式启动外设启动外设主程序主程序外设准备好外设准备好输入设备输入设备Ready=1输出设备输出设备Busy=0中断请求中断请求中断响应中断响应数据数据IN/OUT中断服务程序中断服务程序IRET中断响应中断响应外设又一次准备好外设又一次准备好中断请求中断请求优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。2.2.3 8259A的工作过程(1)当有一条或若干条中断请求输入(IR7IR0)有效时,则使中断请求寄存器的IRR的相应位设置为1。(2)若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号(两个连续的INTA负脉冲)。(3)第一个INTA负脉冲到达时,IRR的锁存功能失效,对于IR7IR0上发来的中断请求信号不予理睬。(4 4)使)使ISRISR寄存器的相应位置寄存器的相应位置1 1,以便为中断优,以便为中断优先级比较器的工作做好准备。先级比较器的工作做好准备。(5 5)使寄存器的相应位复位,即清除中断请求。)使寄存器的相应位复位,即清除中断请求。(6 6)第二个)第二个INTAINTA负脉冲到达时,将中断类型寄负脉冲到达时,将中断类型寄存器中的内容存器中的内容ICW2ICW2,送到数据总线的,送到数据总线的D7-D0D7-D0上,上,CPUCPU以此作为相应中断的类型码。以此作为相应中断的类型码。(7 7)若)若ICW4ICW4中的中断结束位为中的中断结束位为1 1,那么,第二个,那么,第二个INTAINTA负脉冲结束时,负脉冲结束时,8259A8259A将将ISRISR寄存器的相应寄存器的相应位清零;否则,直至中断服务程序执行完毕,才位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字能通过输出操作命令字EOIEOI,使该位复位。,使该位复位。中断优先权管理中断嵌套中断屏蔽中断结束2.2.4 8259A的工作方式1中断优先权管理方式8259A中断优先权的管理方式有:全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式。2中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有:普通屏蔽方式特殊屏蔽方式3结束中断处理的方式是自动结束方式(是自动结束方式(AEI)和非自动结束方式。)和非自动结束方式。非自动结束方式又可进一步分为一般的中断结束方式非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。和特殊的中断结束方式。向向CPUCPU发出总线请求信号发出总线请求信号HOLDHOLD,接收接收CPUCPU发发出总线响应信号出总线响应信号HLDAHLDA接管对总线的控制,进入接管对总线的控制,进入DMADMA方式方式 发出地址信息,对存储器寻址并修改地址指针发出地址信息,对存储器寻址并修改地址指针 发出发出DMADMA结束信号,释放总线,使结束信号,释放总线,使CPUCPU恢复正恢复正常工作常工作 4系统总线的连接方式(1)缓冲方式(2)非缓冲方式5引入中断请求的方式(1)边沿触发方式)边沿触发方式(2)电平触发方式)电平触发方式(3)中断查询方式)中断查询方式本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)2.2.8259A8259A的外部特性和内部结构的外部特性和内部结构1 1)引脚)引脚(28脚)D D0 07 7、CSCS、RDRD、WRWRA A0 0:端口选择信号;输入INTINT :8259A的中断申请;输出;高有效;向CPU发出中断申请INTA:INTA:中断响应;输入;接收CPU的中断响应信号,第2个负脉冲中送出类型号面向面向CPUCPU的信号的信号(14)面向外设的信号面向外设的信号(8)IR07:外设的中断申请;输入;触发方式由编程设定面向同类芯片的信号面向同类芯片的信号(4)CASCAS0 03 3:级联信号;双向;主片向从片发送级联代码SP/EN:SP/EN:主从定义/缓冲器方向;双功能;缓冲方式:输出,控制缓冲器传送方向,非缓冲方式:输入,定义主从片,1:主片,0:从片读/写逻辑数据总线缓冲器D0D7A0IORIOW级联/缓冲比较器CS优先级分析器PRCAS0CAS2CAS1SP/EN正在服务寄存器ISR中断请求寄存器ISR控制逻辑中断屏蔽寄存器IMRIR0IR1IR7INTAINT2 2)内部结构)内部结构本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)中断请求寄存器中断请求寄存器(IRR):8位,寄存有请求的中断级,IRi有请求,IRRi=1中断中断服务寄存器服务寄存器(ISR):8位,寄存正在服务的中断级,IRi被响应且未服务完,ISRi=1,ISR可能多位同时为1中断屏蔽寄存器中断屏蔽寄存器(IMR):8位,寄存中断级的屏蔽情况,IMRi=1,IRi被屏蔽优先级分析器优先级分析器(PR):由IRR、IMR、ISR的状态确定INT引脚的输出;优先级编码器+比较电路何时何时中断嵌套中断嵌套INTAB比较器中断屏蔽寄存器IMRIR0IR1IR2IR3IR4IR5IR6IR7中断请求寄存器IRR中断请求优先级编码器1B0B1B2A0A1A2ISR编码器&D1D0D7D5D4D2D3D6工作原理工作原理本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)级联缓冲器级联缓冲器/比较器比较器:级联时传送级联代码;缓冲方式控制传送方向读写控制逻辑读写控制逻辑:中断类型号的读取不是读写逻辑控制的INTAFFDEH0A1H21H读IMR1010FFDCH0A0H20H读IRR,ISR,查询字0010FFDEH0A1H21H写ICW24,OCW11100FFECH0A0H20H写ICW1,OCW230100TP86ATP86A从片从片主片主片读写操作读写操作A A0 0RDRDWRWRCSCS3.3.8259A8259A的工作方式的工作方式1 1)中断触发方式)中断触发方式2 2)连接系统总线的方式)连接系统总线的方式3 3)中断屏蔽的方式)中断屏蔽的方式4 4)优先级排队的方式)优先级排队的方式5 5)中断结束的方式)中断结束的方式 电平触发:高电平 边沿触发:上升沿 向量中断 查询中断 缓冲方式 非缓冲方式SP/ENSP/EN的的作用作用 常规屏蔽:设置IMR 特殊屏蔽:开放低级中断 固定:IR0最高,IR7最低 轮换 自动轮换 指定轮换 用于非嵌用于非嵌套系统套系统 自动结束方式:第2个INTA后沿自动清除ISRi 非自动结束方式:由程序发EOI命令清除ISRi 不指定EOI 指定EOI EOI命令 固定:IR0最高,IR7最低 轮换 自动轮换 指定轮换 自动结束方式:第2个INTA后沿自动清除ISRi 非自动结束方式:由程序发EOI命令清除ISRi 不指定EOI 指定EOI EOI命令本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)4.4.8259A8259A的编程命令及中断操作功能的编程命令及中断操作功能1 1)ICWICW1 14个初始化命令字(ICW14)、3个操作命令字(OCW13);写入到2个端口中同一端口写入多个命令字的区分方式:设置特征位、规定写入顺序1 1LTIMSNGLIC4特征位特征位:16位机无效,一般写0LTIM:LTIM:触发方式,=0,边沿触发;=1,电平触发 SNGL:SNGL:=0,多片级联;=1,单片系统 ICIC4 4:=0,不写入ICW4;=1,要写入ICW4,16位机要写入ICWICW1 1还实现对还实现对8259A8259A的复位的复位如如PCPC机机:边沿触发,单片MOV AL,13H OUT 20H,AL2 2)ICWICW2 2T7T6T5T4T3A00A01如如PCPC机机:类型号08H0FHMOV AL,08H OUT 21H,AL确定中断类型号的高五位 高五位:ICW2的高五位 低三位:IRi的编码 中断类型号(8位)本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)3 3)ICWICW3 3(级联系统才写入,主、从片格式不同)S7S6S5S4S3S2S1S0如图中所示的级联系统如图中所示的级联系统主片的ICW3=24H;00100100 从片1的ICW3=02H;00000010从片2的ICW3=05H;00000101A01ID2ID1ID0的编码=i,该从片挂在主片的IRi上主片:相应的申请端是否挂接从片 0:IRi上无从片 1:IRi上接有从片Si从片:该从片的识别码ID2ID1ID0A01级联方式的硬件连接级联方式的硬件连接级联方式下工作过程级联方式下工作过程IR0从片1从片28259A(主片)INTINTCAS02CAS02SP/ENSP/ENIR2IR5CAS02AIR6SP/EN+5VINTAINTAINTINTAINTRINTAIR1IR7IR4CIR0IR1IR7BD只有只有A A有申请有申请(与单片系统相同)从片1:IRR=00H 从片2:IRR=00H 主片:IRR6=1,INT=1 收到INTA,主片ISR6=1,送IR6的类型号CPUCPU的操作与单片无任何区别的操作与单片无任何区别本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)4 4)ICWICW4 4A A、B B、C C同时申请同时申请 从片1:IRR7=1 从片2:IRR4=1 主片:IRR6、IRR2、IRR5同时为1,INT=1(转发IR2的请求)第第1 1个个INTA INTA 主片ISRISR2 2=1=1并送IR2的级联代码 从片2与自己的识别码比较不同,无操作 从片1:相同,ISRISR7 7=1=1 第第2 2个个INTAINTA 从片1送出IR7的类型号,主片不送A01BUFM/SAEOISFNMPM 0:8位机系统 1:16位机系统PM 0:非自动结束方式 1:自动结束方式AEOI 0:从片 1:主片M/S BUF1有效 0:非缓冲方式 1:缓冲方式BUF 0:一般完全嵌套 1:特定完全嵌套SFNM特定完全嵌套方式特定完全嵌套方式(用于级联系统的主片)送两个送两个EOIEOI命令命令开放同级和高级中断,上例中,主片若采用特定完全嵌套方式,则允许D打断B的服务从片服务从片服务程序中送程序中送EOIEOI的方法的方法给主片送给主片送EOI的条件的条件:从片从片ISR=00H5 5)OCWOCW1 1(设置IMR)M7M6M5M4M3M2M1M0 0:开放IRi 1:屏蔽IRiMiA01如开放如开放IRIR1 1、IR7IR77 7;屏蔽屏蔽IRIR3 3、IR7IR76 6;其他不变其他不变IN AL,21H AND AL,7DH OR AL,48H OUT 21H,AL ;读取IMR本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)6 6)OCWOCW2 2(设置优先级轮换、发EOI命令)RSLEOI0 00 0L2L1L0A00 优先级固定轮换自动轮换指定轮换 结束方式自动非自动,用EOI命令清ISRi EOI命令不指定:清除ISR中优先级最高位指定:清除ISR中的指定位特征位特征位 0:优先级不轮换 1:优先级轮换R 0:不对ISR操作 1:清除ISRiEOISL=1,L2 L1 L0的编码有效,与R、EOI配合R=1:L2 L1 L0指定的中断级为最低优先级EOI=1:将ISR中L2 L1 L0指定的位清0R R、SLSL、EOIEOI的组合就是的组合就是OCWOCW2 2的命令的命令R RSLSLEOIEOI功能功能000自动EOI中轮换复位001不指定EOI命令010无效011指定EOI命令100自动EOI中轮换置位101不指定EOI中的轮换110直接设置优先级111指定EOI中的轮换如如:不指定不指定EOI EOI MOV AL,20H OUT 20H,AL指定指定EOIEOI(清除ISR4)MOV AL,64H OUT 20H,AL本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)7 7)OCWOCW3 3(设置特定屏蔽方式、查询式中断、读寄存器选择)ESMMSMM0 01 1PRRRISA00ESMM=1,特定屏蔽方式允许 ESMM=1时有效0:清除特定屏蔽方式SMM1:设置特定屏蔽方式P=1,查询式中断RR=1,读寄存器选择有效 RR=1时有效0:IRRRIS:读寄存器选择1:ISR特征位特征位特定屏蔽方式特定屏蔽方式(开放低级中断)设置方法设置方法:用OCW1屏蔽当前中断用OCW3设置特定屏蔽方式清除方法清除方法:用OCW3清除特定屏蔽方式用OCW1开放当前中断设置后一设置后一直有效直有效,直到清除直到清除CLI IN AL,21H OR AL,08H OUT 21H,AL MOV AL,68H OUT 20H,AL STI CLI MOV AL,48H OUT 20H,AL IN AL,21H AND AL,0F7H OUT 21H,AL STI MOV AL,20H OUT 20H,AL RET ;IMR3=1如在如在IRIR3 3服务程序中使用服务程序中使用;特定屏蔽设置;特定屏蔽清除;IMR3=0;EOI命令IRIR0 02 2开放开放IRIR3 37 7关闭关闭IRIR0 02 2、IRIR4 47 7开放开放 IRIR3 3关闭关闭比IR3优先级低的中断的服务程序必须送指定EOINOTEWhy?本章首页本章首页本章首页本章首页可编程中断控制器可编程中断控制器8259A8259A(续)续)查询式中断查询式中断读寄存器读寄存器不需要接收中断请求,CPU查询8259A,发查询命令(P=1的OCW3)后读查询字(A0=0),再根据查询字内容确定中断源I-W2W1W0查询字格式查询字格式I=1时,W2W1W0是当前有请求的优先级最高的中断级编码0:无中断请求I1:有中断请求读查询字读查询字MOV AL,0CH OUT 20H,AL IN AL,20H;查询命令;读查询字每次读查询每次读查询字需重新送字需重新送查询命令查询命令查询命令查询命令令读寄存令读寄存器无效器无效读读IMR:IMR:直接对A0=1端口进行读读读IRRIRR、ISR:ISR:先选择(RR=1的OCW3)再读选择后一直有选择后一直有效效,直到改变直到改变初始为初始为IRRIRR读读IMR IMR IN AL,21H读读IRR IRR MOV AL,0AH OUT 20H,AL IN AL,20H读读ISR ISR MOV AL,0BH OUT 20H,AL IN AL,20H查询方式的应用查询方式的应用:无中断向量表无INTR或INTA信号级联增加到第3层查询方式不查询方式不用送用送ICWICW2 2?2.2.7 8259A的应用举例 例例1 1 CPUCPU与与8259A8259A连连接接如如图图所所示示。向向8259A8259A的的中中断断屏屏蔽蔽寄寄存存器器IMRIMR写写入入控控制制命命令令,使使系系统统时时钟钟、键盘、硬盘、软盘开放中断,并使其它中断关闭:例2 IBM-PC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H0FH,初始化程序使用汇编语言实现 例3 进入和退出特殊屏蔽方式的流程图。;IR3中断服务程序入口STI ;保护现场。;STI 开中断MOV AL,00001000B ;服务程序OUT 21H,AL ;OCW1 写入OCW1,使IM3=1MOV AL,01101000B ;写入OCW3,使ESMM=SMM=1OUT 20H,AL ;OCW3 继续服务。;写入OCW3,使ESMM=1,SMM=0MOV AL,01001000B ;写入OCW1,使IM3=0OUT 20H,AL ;OCW3 写入OCW2,普通的EOI命令 MOV AL,00H ;中断返回OUT 21H,AL ;OCW1MOV AL,00100111BOUT 20H,AL ;OCW3OUT 21H,AL ;OCW3 EOI命令例4 读8259A相关寄存器的内容。MOV AL,00001010B ;发OCW3,欲读取IRR的内容OUT 20H,ALIN AL,20H ;读入并保存IRR的内容 MOV 2000H,ALMOV AL,00001011B ;发OCW3,欲读取ISR的内容 OUT 20H,ALIN AL,20H ;读入并保存ISR的内容MOV 2001H,ALIN AL,21H ;读入并保存ISR的内容MOV 2002H,ALMOV AL,0000110 xB;发OCW3,欲查询是否有中断请求OUT 20HIN AL,20H ;读入相应状态,并判断最高位是否为1TEST AL,80H JZ DONEAND AL,07H ;判断中断源的编码 DONE:HLT