450 likes | 840 Views
第七章 中断. 第一节 概述. 7 - 4 , 7 ― 9 , 7 - 10. 一、中断的一般概念. 二、中断申请. 三、中断系统的功能( 8086/8088 系统). 第二节 最简单的中断情况. 一、 CPU 响应中断的条件. 二、 CPU 对中断的响应. 第三节 中断优先权. 一、用软件确定优先权 ( 查询法 ). 二、 硬件优先权排队电路. 第四节 8086 的中断方式. 一、 8086/8088 的中断源. 二、 8086/8088 的中断响应过程. 三、 8086/8088 中断向量表.
E N D
第七章 中断 第一节 概述 7-4,7―9,7-10 一、中断的一般概念 二、中断申请 三、中断系统的功能( 8086/8088系统) 第二节 最简单的中断情况 一、CPU响应中断的条件 二、CPU对中断的响应 第三节 中断优先权 一、用软件确定优先权(查询法) 二、 硬件优先权排队电路 第四节 8086的中断方式 一、8086/8088的中断源 二、8086/8088的中断响应过程 三、8086/8088中断向量表 第五节 中断控制器8259A 二、 结构 一、 功能 三、中断顺序 (8259在8086/8088系统) 四、 PC机的中断控制系统
INTA=0 第七章 中断 第一节 概述 中断技术是微机中一项重要技术。它不仅在数据输入、输出中提高了CPU的效率,而且在多外设、实时控制、故障处理中也是一项必不可少的技术。 中断处理的过程: 外设中断源 申请中断 INTR=1 CPU 响应中断 i+1条指令 i条指令 中断服务程序
1、中断的应用特点 ①CPU与外设并行工作。解决CPU速度快、外设速度慢的矛盾。在外设需要时发出中断申请,CPU才中断原有工作执行中断服务程序,与外设交换数据;中断服务结束,CPU返回原程序继续执行。 2、中断源 ①内部中断:执行INT n 指令时产生中断 ②外部中断:外设(I/O)设备向CPU提出中断申请,使INTR=1。 一、中断的一般概念 ②实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。中断可为实时控制提供支持。 ③故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。
中断源的功能:在需要时,向CPU发出中断申请INTR=1,直至CPU响应中断INTA=0 后撤销中断申请。 Intel 8088/8086的二种中断申请:可屏蔽中断申请和非屏蔽中断申请 1、可屏蔽中断申请INTR 用户可以使用编程手段(STI、CLI指令),使CPU处于“开中断”或“关中断”状态。CPU只有在”开中断” 状态下才能响应外设通过INTR可屏蔽中断线提出的中断申请。 2、非屏蔽中断申请NMI 用户无法使用编程手段控制。只要NMI=1,CPU在当前指令运行结束后,马上响应NMI非屏蔽中断申请。 二、中断申请
1、中断响应和返回 中断响应:中断屏蔽、断点和标志保护(CS、IP、PSW)、转向中断服务程序。 中断返回:断点和标志恢复(PSW、IP、CS)、转向主程序。 2、优先权排队 多个中断源同时申请中断时,根据预先安排的各中断源预先级别,首先响应级别高的中断源;待中断服务结束后,再响应级别稍低的中断源。 3、中断服务嵌套 在低级中断源服务过程中,若有高级中断源申请,CPU中断低级别中断服务程序;响应高级别中断申请,并服务;待高级别中断服务结束后,再继续执行低级别中断服务。 三、中断系统的功能( 8086/8088系统)
1、(中断源接口电路设置的)中断请求触发器提出中断申请1、(中断源接口电路设置的)中断请求触发器提出中断申请 中断源提出的中断申请,CPU不可能马上响应,必须执行完当前的指令,况且还有中断优先权排队等问题,故CPU需保持中断申请的信号。 中断请求触发器的功能:使外设的READY、BUSY等状态信号保持到CPU响应外设的中断请求后再撤销。 数据 数据端口 DB 地址译码 AB 输入设备 CPU n M/ IO RD Ready R INTR Q D 第二节 最简单的中断情况 一、CPU响应中断的条件
工作过程: ①输入设备数据准备好 输入数据 数据端口(三态缓冲器) Ready=1 中断申请触发器 ②中断申请触发器Q=1 向CPU提出中断申请 INTR=1 ③CPU中断响应,在中断服务程序中执行 IN AL,n指令 端口数据 AL 中断申请触发器 复位
2、(中断源接口电路设置的)中断屏蔽触发器允许中断申请2、(中断源接口电路设置的)中断屏蔽触发器允许中断申请 数据 数据端口 DB 地址译码 AB 输入设备 CPU n M/ IO RD Ready R Q D INTR 优先权排队信号 Q 中断屏蔽触发器 在有多个中断源的系统中,为了使CPU能灵活的控制外设的中断请求,对每个外设接口设置一个中断屏蔽触发器。只有当此触发器为”1“时,外设的中断请求才能被送至CPU。
3、CPU的中断是开放的 CPU内部设置(可屏蔽)中断允许触发器,它的状态由PSW的IF标志指示。 4、CPU执行完当前指令 CPU在执行当前指令最后一个时钟周期时采样INTR,然后响应中断。 IF=1,CPU允许中断, 即中断开放 IF=0,CPU不允许中断,即中断关闭 使IF=1的条件:执行STI 指令 使IF=0的条件:① 执行CLI 指令; ② CPU RESET; ③ CPU响应中断
IF=1 INTR=1 CPU 1、CPU发INTA同时,自动关中断 执行一条指令 执行主程序 2、CPU自动将断点CS,IP,PSW入栈 取下一条指令 指令结束 N N 3、CPU将中断源提供的中断类型码形成中断服务入口地址,送CS,IP INTR=1 CPU自动执行中断响应 关中断 断点保护 转中断服务 执行PUSH指令 保护现场 用于中断嵌套。若无中断嵌套,可放在恢复现场前 CPU 执行中断服务程序 开中断 中断服务 执行POP指令 恢复现场 原PSW,IP,CS出栈,返回主程序 返回主程序 二、CPU对中断的响应
中断响应周期时序 三、CPU中断响应时序 中断请求信号有效,且CPU开中,则CPU在执行完当前指令后,响应中断,在响应中断时,CPU执行两个中断响应周期。 在每一个中断响应周期,都给出中断响应信号INTA,第一个响应周期,使AD7~AD0浮空;第二个响应周期,被响应的外设应将中断类型号送到数据线上,以便CPU寻找该设备的服务程序的入口地址,转入中断服务。
电路结构: 1、各中断源申请通过或门组合后与INTR连接。 2、各中断源情况通过缓冲器从DB输入。 INTR 或 中断触发器输出 (D7) (D6) (D1) (D0) AB GH 三态缓冲器 各外设 DB .. AB 译码 M/IO RD 第三节 中断优先权 问题:多中断源,一条INTR申请线 方法:按优先权处理;CPU先响应优先权级别高的中断源申请 一、用软件确定优先权(查询法)
保护现场 输入各中断源 中断触发器状态 Y A申请 N A外设服务 Y 查询法软件结构 所有外设共有一个中断服务程序。首先输入它们的中断申请情况,再依次查询每一个中断源申请情况;若是,则转入相应子程序服务。 B申请 N B外设服务 DONE 恢复现场 查询法特点 查询次序就是优先权次序。 电路简单,但转入服务时间长。 返回主程序 查询法中断服务程序 IN AL,20H TEST AL,80H JNZ PWA TEST AL,40H JNZ PWB ……… DONE:…… PWA:…… …… JMP DONE PWB: …… …… JMP DONE
或 中断触发器输出 IR7 IR6 IR1 IR0 8:3优先权编码器 各外设 A2A1A0 .. 1 A>B INTR 3 比较器 B2 B1 B0 CPU DB 优先权寄存器 2 优先权失效 二、 硬件优先权排队电路 组成:8:3,比较器,逻辑电路,优先权寄存器 工作原理
1、中断申请8:3优先权编码器 将8个中断申请输入进行8:3编码 A2 A1 A0 低 中断优先权级别 高 若有多个中断申请,只输出优先权最高的编码 2、优先权寄存器 由CPU通过DB输入正在中断服务的优先权级别编码B2、B1、B0。若CPU不处于中断服务状态,则优先权失效信号为 1 。 3、比较器 对A2、A1、A0与B2、B1、B0的编码比较。A>B,则输出为1,表示申请级别高于正在服务的级别。 0 0 0 IR0 中断申请 4、逻辑电路 通过逻辑组合,在下列二种情况下,INTR=1 0 0 1 IR1 中断申请 ……………… 1 1 1 IR7 中断申请 ①CPU在不处于中断服务时有中断申请 ②申请中断源的级别高于CPU在执行中断服务的级别。
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 非屏蔽中断请求 8 2 5 9 A NMI INTR 中断逻辑 INT n 指令 INTO 指令 除法 出错 单步 (TF=1) 断点 中断 CPU 8086/8088中断源 第四节 8088/8086的中断方式 一、8086/8088的中断源 8088/8086有一个简单而灵活的中断系统,每个中断都有一个中断类型码以供CPU进行识别,8086/8088可以处理256种不同的中断。这些中断又可分为外部中断和内部中断两大类。 内部中断的特点: 中断类型码包含在指令中,或者是预先规定的; 不执行INTA总线周期; 除单步中断外,任何内部中断都无法禁止; 除单步中断外,任何内部中断的优先级都比任何外部中断的高。
完成当前指令 二、8086/8088的中断响应过程 Y 内部中断 形成中断类型码 N Y NMI N Y Y 响应中断 读类型码 INTR IF=1 标志入栈 N N Y 读类型码 令TEMP=TF TF=1 IF=1 N N 执行服务程序 清除IF、TF 执行下一条指令 CS、IP入栈 CS、IP出栈 调服务程序 标志出栈 Y 又有NMI 继续执行被 中断的程序 N Y N TEMP=1
三、8086/8088中断服务程序服务程序入口地址表 1. 中断向量表 8086/8088在内存区的00000H~003FFH(1KB)建立一个中断向量表。用于存放与256个中断类型码(00H~0FFH)相应的中断服务程序入口地址。每个中断服务程序入口地址使用4个字节,低16bit为段内偏移量送IP,高16bit为段码送CS。 各中断服务程序入口地址的段地址和段内偏移量按中断类型号顺序存放在表中。因此由中断类型号n*4可得到相应中断服务程序入口地址的地址,取4n和4n+1单元中的内容(中断入口段内偏移量)装入指令指针IP,取4n+2和4n+3单元中的内容(中断入口段地址)装入代码段寄存器CS,即可转入中断服务程序。
中断服务程序入口地址表 000H I P 100H 类型 0 除数为零 类型 64 CS 004H 104H 类型 1 单步(TF =1) 类型 65 CPU使用(5) 008H 108H 非屏蔽中断 类型2 类型66 00CH 10CH 类型 3 断点中断 类型 67 010H 类型 4 溢出(OF=1) 用户使用(192) 014H 类型 5 DOS使用(59) 070H 3FCH 类型 28 1/18.2S定时 类型255 中断服务程序入口地址表地址 =4×中断类型码 0FCH 类型63
INT 68H MOV AX,0 存放地址=68H*4 =1A0H 2050 A000 001A0H 50 中断服务程序 20 A000:2050 001A2H 00 STI PUSH DS IRET A0 001A4H 例:某中断的中断类型号为68H,其中断过程为: (1) 计算存放中断服务程序入口地址的地址=68H*4=1A0H; (2) 取中断入口地址的段内偏移量装入IP,IP=2050H, 段码装入CS,CS=A000H; (3 ) 转向中断服务程序; (4 ) 中断返回
2. 中断入口地址的设置 IBM PC对256个中断类型已进行了地址分配,其中40H以后的中断类型号可供用户使用。供用户使用的中断类型号,可由用户定义为软中断,由INT n指令引用;可通过INTR端或通过中断控制器8259A引入可屏蔽的硬件中断。使用时用户要自己将中断服务程序入口地址置入相应的中断向量表内。 方法1:通过指令来设置 MOV AX,0 ;中断入口表 MOV ES,AX ;段地址送ES MOV DI,n*4 ;偏移量送DI MOV AX,OFFSET INTRAD CLD STOSW ;传送子程序偏移地址 MOV AX,CS STOSW ;传送子程序段地址 STI MOV AX,0 ;中断入口表 MOV ES,AX ;段地址送ES MOV BX,n*4 ;偏移量送DI MOV AX,OFFSET INTRAD MOV ES: [BX],AX MOV AX,SEG INTRAD MOV ES: [BX+2],AX STI
MOV AL,n ;取中断入口 MOV AH,35H INT 21H PUSH ES ;存原中断入口 PUSH BX PUSH DS MOV AX,SEG INTRAD MOV DS,AX MOV DX,OFFSET INTRAD MOV AL,n ;中断类型号 MOV AH,25 ;设置中断入口 INT 21H POP DS POP DX ;恢复原中断入口 POP DS MOV AL,n MOV AH,25 INT 21H RET 方法2:通过调用DOS功能来设置 设置中断入口:把由AL指定中断类型号的中断入口DS:DX中放置在中断入口表中。 预置:AL=中断类型号 DS:DX=中断服务程序入口地址 AH=25H 执行:INT 21H 取中断入口:把由AL指定中断类型号的中断入口,从中断入口表中取到ES:BX中。 预置:AL=中断类型号 AH=35H 执行:INT 21H 返回: ES:BX=中断服务程序入口地址
1、数据总线缓冲器 与CPU的DB连接,传送控制字、状态字和中断类型码等。 2、读写逻辑 通过IORD、IOWR、CS、A0控制接收CPU的命令、发出8259的状态。 第五节 中断控制器8259A 一、 功能 1、8级优先权控制,通过级连可扩展到64级优先级控制; 2、每一级可由程序单独屏蔽或允许; 3、在CPU响应周期,可提供相应的中断类型码。中断类型码由 8259编程设定; 4、通过编程可设定多种工作方式。 二、 结构
INTA INTR 数据总线缓冲器 DB 控 制 逻 辑 RDWRA0 读 / 写逻辑 优先权电路 中断请求寄存器 IRR IR0 在服务寄存器 ISR :: CS IR7 CAS0CAS1CAS2 级连缓冲 / 比较器 中断屏蔽寄存器IMR 内部总线 SP / EN 中断控制器8259A方框图
8259的读写功能 CS RD WR A0 D4 D3 读写操作 0 1 0 0 1 写ICW1 0 1 0 1 写ICW2、 ICW3 、ICW4、OCW1 0 1 0 0 1 0 写OCW2 0 1 0 0 0 1 写OCW3 0 0 1 0 读IRR/ISR 0 0 1 1 读IMR 3、级联缓冲/比较器 (1)缓冲方式:在多片8259A级联的系统中,8259A通过总线驱动器和数据总线相联。在缓冲方式下,SP / EN与总线驱动器的允许端相连,控制总线驱动器的启动,当EN=0,8259A控制数据送到CPU,当EN=1,控制数据从CPU送到8259A。
(2)非缓冲方式:此时各8259A直接与数据总线相连。 SP / EN为输入端,当SP=1,该片为主片,当SP=0,该片为从片。主片与从片通过CAS0~CAS2级连。主片的INTR与CPU的INTR连接;从片的INTR作为主片的IR0~IR7输入。 5、在服务寄存器 IRS(8位) 存放正在服务的中断源级别,当某个中断被响应后,CPU发出第一个INTA信号,ISR中的相应位置“1”,一直被保存到该中断处理结束。当多重中断时,ISR的多位同时被置1。 4、中断请求寄存器IRR(8位) 存放中断请求信号,当IR0——IR7中的某个IR端有中断请求时,IRR相应的某位置1。当该中断被响应后, IRR相应的位被复位。优先权IR0最高,IR7最低。
7、优先权电路(PR) 对IRR保持的各中断请求(已屏蔽的除外)进行优先权判别,并在CPU的中断响应周期将其送IRS。在出现多重中断时,由PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。 6、中断屏蔽寄存器IMR(8位) 用于存放对中断请求的屏蔽信息。软件编程使得IMR的某位为“1”时,相应IRR中的中断请求被屏蔽;若IMR的某位为“0”时,允许相应IRR中的中断请求进入中断优先级判别器。 IMR的各中断屏蔽位是独立的,屏蔽了优先级高的中断,不影响其它较低优先级的中断允许。 8、控制逻辑 向CPU输出INTR中断请求,接受CPU的中断响应信号INTA。
5、在第一中断响应周期,8259收到INTA=0后,IRR中最高级别的位使ISR的相应位置1,IRR的相应位复位。5、在第一中断响应周期,8259收到INTA=0后,IRR中最高级别的位使ISR的相应位置1,IRR的相应位复位。 6、在第二中断响应周期,8259收到INTA=0后,CPU从DB接收8259提供的8bit中断类型码。 三、中断顺序 (8259在8086/8088系统) 1、在ISR中存放正在服务的中断源级别。 2、当IR0~IR7中一条或多条中断申请线为高电平时,使IRR相应位置1。 3、若该中断源未被屏蔽,而且其优先级高于ISR中的中断级别,则INTR为1,向CPU申请中断。 4、若CPU的IF=1,则在当前指令执行结束后响应该中断申请;向8259发出INTA=0信号。 7、CPU继续进行后续的中断响应过程。
ICW1 ICW2 级联方式 N SNGL=1 Y(SNGL=0) ICW3 1. 初始化命令字 需要ICW4 N (IC4=0) 初始化命令字有四个ICW1、 ICW2、 ICW3、 ICW4,首先输入ICW1,然后输入ICW2、 ICW3、 ICW4,由ICW1决定是否输入ICW3、 ICW4。 Y(IC4=1) ICW4 四、8259的编程方法 系统复位后,由初始化程序对8259置入初始化命令字ICW。初始化后可通过发出操作命令字OWC来定义8259A的操作方式,实现对8259A的控制。初始化命令字只发一次,操作命令字可以重置,以动态改变8259A的操作与控制方式。
A0 初始化命令字ICW1写入后,8259内部完成初始化过程: (1)清除ISR和IMR寄存器; (2)指定中断优先级R0 R7; (3)从方式的地址置成7; (4)特殊屏蔽方式复位; (5)自动EOI循环方式复位;(6)边沿触发器复位。 D7 D6 D5 D4 D3 D2 D1 D0 0 * * * 1 LTIM ADI SNGL IC4 0 1 0 1 不写ICW4 8088/8086不用 写ICW4 标志位 级联,写ICW3 单片,不写ICW3 0=边沿触发方式 1=电平触发方式 =0(不用) ICW1
D7 D6 D5 D4 D3 D2 D1 D0 A0 A15 /T7 A14 /T6 A13 /T5 A12 /T4 A11 /T3 A10 A9 A8 1 8259A输送的中断类型号 自动填入 D7 D6 D5 D4 D3 D2 D1 D0 IR7 T7 T6 T5 T4 T3 1 1 1 IR6 T7 T6 T5 T4 T3 1 1 0 IR5 T7 T6 T5 T4 T3 1 0 1 IR4 T7 T6 T5 T4 T3 1 0 0 IR3 T7 T6 T5 T4 T3 0 1 1 IR2 T7 T6 T5 T4 T3 0 1 0 IR1 T7 T6 T5 T4 T3 0 0 1 IR0 T7 T6 T5 T4 T3 0 0 0 ICW2
A0 D7 D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2/ID2 S1/ID1 S0/ID0 (1)工作在主设备 8259A作为主设备,SP/ EN接高电平,或缓冲方式ICW4的M/S=1时,S0---S7表明从设备接在IR0——IR7的哪一根线上,接有从设备的IR端对应的S位为1,未接从设备的IR端对应的S位为0。 (2)工作在从设备 8259A作为从设备时,SP/ EN接低电平,或缓冲方式ICW4的M/S=0时,ID0---ID2表明从设备接在主设备的哪一根IR线上, ID0---ID2用编码表示IR0——IR7的8根线。 8259A在级联工作方式(SNGL=0)时,要写入ICW3,它规定本8259为主设备,还是从设备。 ICW3
A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNM BUF M/S AEOI PM 0 1 0 1 选用8085 0= 全嵌套方式 1= 特殊全嵌套方式 选用8088 正常EOI方式 自动结束中断方式 = 非缓冲方式,此时若用级联, 由SP/ EN确定主从设备。 = 缓冲方式,本机为从机 = 缓冲方式,本机为主机 0 1 0 1 1 ICW4 全嵌套方式:高级中断可打断正在处理的中断,优先处理更高级的中断。 特殊全嵌套方式:对于级联方式,主8259A把从同一从8259A来的不同级别的中断请求认为是同级的,而不予以响应。在8259A级联时,若主片处于特殊全嵌套方式就允许对相同级别的中断请求开放。
A0 A0 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 R M7 M6 SL EOI M5 M4 0 M3 0 M2 L2 L1 M1 L0 M0 2. 操作命令字 8259A有3个操作命令字,由CPU写入8259A,写入顺序不限。 OCW1 中断屏蔽字:1=屏蔽中断; 0 = 允许中断 OCW2----控制8259A的中断结束和优先级循环方式的命令 OCW2
R、SL、EOI编码表 L2、L1、L0编码表 R SL EOI 操作 0 0 1 正常EOI中断结束命令 0 1 1 特殊EOI中断结束命令 1 0 1 正常EOI时循环命令 1 0 0 自动EOI时循环置位命令 0 0 0 自动EOI时循环复位命令 1 1 1 特殊EOI时循环命令 1 1 0 优先级设定命令 0 1 0 无操作 L2 L1 L0 IR 0 0 1 IR0 0 1 1 IR1 1 0 1 IR2 1 0 0 IR3 0 0 0 IR4 1 1 1 IR5 1 1 0 IR6 0 1 0 IR7 (1)中断结束命令 普通EOI结束方式:8259A收到EOI结束命令后,自动将ISR中级别最高的置“1”位清“0”。
特殊EOI结束方式:正常EOI是自动清除级别最高的ISR位,而特殊EOI则清除有L0—L2指定的ISR位。特殊EOI结束方式:正常EOI是自动清除级别最高的ISR位,而特殊EOI则清除有L0—L2指定的ISR位。 自动EOI结束方式:某中断被响应后,ISR对应位被置1,但CPU在中断响应的第二个脉冲将ISR的对应位清0。此时,尽管CPU对某个外设正在进行中断服务,但在8259A中无指示,低级别的中断可打断高级中断,产生重复嵌套,嵌套深度无法控制。 在级联方式下,一般用非自动结束方式,中断结束时,要发两次中断结束命令,一次是对主片,另一次是对从片发的位。
(3)优先级循环 自动循环(设备优先级相等):一个设备受到服务后,优先级变得最低,原优先级比它低一级的设备的优先级变得最高。 特殊循环(特定优先级):由编程设定最低优先级,从而规定了所有其它的优先级。例:若设定IR3对应的设备优先级最低,则IR4对应的设备优先级最高。 IR7 IR7 IR5 IR5 IR3 IR3 IR1 IR1 IR6 IR6 IR4 IR4 IR2 IR2 IR0 IR0 默认优先级 4 7 3 6 2 5 4 1 3 0 2 7 1 6 0 5 (2)优先级设定命令 优先级循环
A0 D7 D6 D5 D4 D3 D2 D1 D0 0 * ESMM SMM 0 1 P RR RIS 0* :无效 10:下次RD有效读IRR 11:下次RD有效读ISR 标志位 1:查询8259A状态 0:不查询 0* :无效 10:特殊屏蔽方式复位 11:特殊屏蔽方式置位 OCW3----特殊屏蔽方式和查询方式的命令 OCW3
地址总线(16) 控制总线(8) 数据总线(8) CS A0 D7-D0 INTA INT CS A0 D7-D0 INTA INT CAS0 CAS1 CAS2 CAS0 CAS1 CAS2 从8259 1# 主8259 CS A0 D7-D0 INTA INT CAS0 CAS1 CAS2 从8259 2# SP/EN IR7 IR6-- -IR0 SP/EN IR7 IR6-- -IR0 Vcc SP/EN IR7 IR6-- -IR0 GND GND 五、8259的中断级联
RD WR CS A0 D7--D0 INTA RD WR CS A0 D7--D0 INTA CAS0 CAS1 CAS2 CAS0 CAS1 CAS2 从8259 主8259 INT IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN SP/EN IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 外部中断请求 外部中断请求 例:某中断级联系统,从片的INT端接主片的IR3,主片从IR1、IR3引入两个中断请求,中断类型号为31H、35H。中断服务程序的段基址为1000H,偏移量分别为2000H、3000H。从8259的IR4、IR5引入两个中断请求,中断类型号为44H、45H。中断服务程序的段基址为2000H,偏移量分别为3600H、4500H。
(1)中断入口地址写入中断向量表 000C4 IP IP IP IP 00 20 00 20 00 30 00 10 00 20 00 10 00 36 00 45 31 35 45 44 000C6 CS CS CS CS 000D4 000D6 00110 00112 00114 00116 MOV AX,1000H ;送段地址 MOV DS,AX MOV DX,2000H;送偏移地址 MOV AL,31H MOV AH,25H INT 21H MOV DX,3000H MOV AH,35H INT 21H MOV AX,2000H MOV DS,AX MOV DX,3600H MOV AL,44H MOV AH,25H INT 21H MOV DX,3000H MOV AH,35H INT 21H
(2)主片8259A初始化编程(端口地址FFC8H,FFC9H)(2)主片8259A初始化编程(端口地址FFC8H,FFC9H) MOV AL,11H ;ICW1,级联,边沿触发 MOV DX,0FFC8H; OUT DX, AL MOV AL,30H ;ICW2,确定中断类型号 MOV DX,0FFC9H; OUT DX, AL MOV AL,08H ;ICW3,IR3端接从INT端 OUT DX, AL MOV AL,11H ; ICW4,特殊嵌套,非缓冲方式 OUT DX, AL MOV AL,0D5H ;OCW1,允许IR1,IR3,IR5中断 OUT DX, AL MOV AL,20H ; OCW2,普通EOI结束方式 MOV DX,0FFC8H; OUT DX, AL
(3)从片8259A初始化编程(端口地址FFC8H,FFC9H)(3)从片8259A初始化编程(端口地址FFC8H,FFC9H) MOV AL,11H ;ICW1,级联,边沿触发 MOV DX,0FFCAH; OUT DX, AL MOV AL,40H ;ICW2,确定中断类型号 MOV DX,0FFCBH; OUT DX, AL MOV AL,03H ;ICW3,从片接主片的IR3端 OUT DX, AL MOV AL,01H ; ICW4,完全嵌套,非缓冲方式 OUT DX, AL ;非自动EOI结束方式 MOV AL,0CFH ;OCW1,允许IR4,IR5中断 OUT DX, AL ; MOV AL,20H ; OCW2,普通EOI结束方式 MOV DX,0FFCAH; OUT DX, AL
1、中断控制系统的硬件电路 OR 8087中断请求 AND CPU RAM奇偶错 NMI INTR I /O通道检查错 NMI屏蔽寄存器屏蔽位 INTR 中 断 优 先 级 8259A IRQ 7 6 5 4 3 2 1 0 8253 定时 键盘 未用 插 槽 卡 异步通信(辅) 异步通信(主) 软盘 硬盘 并行打印机 四、 PC机的中断控制系统
8086/8088 微型机的中断系统 (8259A的应用) 8088的INTR屏蔽中断请求线接中断控制器8259A。8259A有可进行优先级排队的八条中断请求线,其中IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7编号的中断已为系统配置的I /O设备所占用。 PC机将主控板上的8259A设置为:中断全嵌套优先权为固定排队:IR0的优先级最高,IR7的优先级最低;中断屏蔽控制口地址为21H,与IRQ相应位被置0为允许中断。 8088/8086的中断向量共有00H~FFH共256个。例如8253 的1/18.2S定时器中断向量是1CH。DOS系统将8253定时器设置为1/18.2S申请中断,它的中断服务地址已设置在中断向量1CH中。如用户需使用自己的1/18.2S定时,则可用自己的中断服务程序入口地址替换1CH中的内容。