1 / 48

第一节 8086/8088 中断系统

第一节 8086/8088 中断系统. 重点: 8086/8088 中断系统,中断控制器 Intel8259A 的性能概述,内、外部结构,工作过程,工作方式等。 一、中断分类及中断类型码 中断源 :引起中断的原因或发出中断请求的设备称为中断源。 1 、中断的分类 共分为两类:硬件中断和软件中断. ① 硬件中断 :由外部硬件产生的中断,如打印机、键盘等,也称为外部中断。可分为两类:不可屏蔽中断和可屏蔽中断。 不可屏蔽中断:由 NMI 引脚引入,不受中断允许标志的影响,每个系统仅允许有一个,用来处理紧急情况,如掉电处理。这种中断一旦发生,系统会立即响应。

Download Presentation

第一节 8086/8088 中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一节 8086/8088中断系统 • 重点:8086/8088中断系统,中断控制器Intel8259A的性能概述,内、外部结构,工作过程,工作方式等。 • 一、中断分类及中断类型码 • 中断源:引起中断的原因或发出中断请求的设备称为中断源。 • 1、中断的分类 • 共分为两类:硬件中断和软件中断

  2. ①硬件中断:由外部硬件产生的中断,如打印机、键盘等,也称为外部中断。可分为两类:不可屏蔽中断和可屏蔽中断。①硬件中断:由外部硬件产生的中断,如打印机、键盘等,也称为外部中断。可分为两类:不可屏蔽中断和可屏蔽中断。 • 不可屏蔽中断:由NMI引脚引入,不受中断允许标志的影响,每个系统仅允许有一个,用来处理紧急情况,如掉电处理。这种中断一旦发生,系统会立即响应。 • 可屏蔽中断:由INTR引脚引入,受中断允许标志的影响,当IF=1时,可屏蔽中断才能进入CPU,可屏蔽中断可有多个,一般通过优先级排队,从多个中断源中选出一个进行处理。

  3. ②软件中断(内部中断):根据某条指令或对标志寄存器中某个标志的设置产生,与硬件电路无关,如除数为0,或用INT n指令产生。 • 溢出中断由INTO指令引起 • 断点中断由INT3指令引起 • 单步由标志TF引起 ,不对应指令 • 除0中断由计算结果引起,不对应指令

  4. 2、中断类型码: • 8086/8088为每个中断源分配了一个中断类型码,其取值范围为0~255,可处理256种中断。其中包括软件中断、系统占用的中断和预留给用户使用的中断。

  5. 二、中断向量和中断向量表 • 中断向量:中断服务子程序的入口地址。 • 中断向量表:将中断向量按一定规律排列成的表 。

  6. 三、中断响应过程与时序 • 1、硬件中断的响应过程 • 硬件中断指的是从NMI进入的非屏蔽中断或从INTR进入的可屏蔽中断。对可屏蔽中断,响应过程为: • CPU在INTR上接到一个中断请求信号,如果IF=1,CPU在当前指令执行完以后开始响应中断请求,在INTA*连续发两个负脉冲,外设在第二个负脉冲到来后,向数据线上送出中断类型码, CPU接到中断类型码后,动作如下:

  7. ①将中断类型码存入暂存器; • ②将FLAG内容压入堆栈; • ③将IF清0,防止中断响应过程被中断,将TF清0,防止以单步方式执行中断处理子程序。注意:CPU在中断响应时自动清除IF标志,如允许中断嵌套,必须在中断处理子程序中用指令置位IF; • ④保护断点,将IP和CS的内容入栈; • ⑤根据中断类型码,在中断向量表中找到相应的中断向量,装入IP和CS,转向中断服务子程序。

  8. 2、硬件中断的时序 ①指令最后一个T采样INTR,进入中断响应后,在第一个总线周期的T1仍采样INTR。 ②最小模式时,从INTA*发中断响应信号,最大模式,通过S2、S1、S0的组合完成。 ③第一个总线周期用来通知外设,准备响应中断,第二个总线周期,接收外设发来的中断类型码。 ④在中断响应总线周期,M/IO*为低,数据/地址线浮空,BHE*和S7地址/状态线均浮空。

  9. 3、软件中断 • 通过中断指令使CPU执行中断处理子程序的方法,特点如下: • ①中断类型码由指令提供,不需执行中断响应总线周期,也不受IF标志的影响。 • ②正在执行软件中断时,若来NMI,立即响应,若来可屏蔽中断,只要条件允许(如IF=1,当前指令执行完)也可响应。 • ③中断处理程序是定位装配的(中断向量表),可用INT n指令调用,在使用中和一般的子程序调用相同,原则上0~255种类型均可使用,程序设计中使用方便。

  10. 习题与思考: • 1、在中断响应总线周期中,第一个脉冲向外部电路说明什么?第二个脉冲呢? • 2、中断向量表的功能是什么?已知中断类型码分别是84H和0FAH,它们的中断向量应放在中断向量表的什么位置?

  11. 第二节 中断控制器Intel8259A • 重点:8259A的编程、8259A的级联、8259A的应用举例 • Intel 8259A可编程中断控制器件,具有对中断源进行管理、向CPU请求中断的能力。 • 一、 8259A的性能概述 • 1、具有8级中断优先级控制,通过级连可以扩展至64级优先权控制 • 2、每一级中断都可以通过初始化设置为允许或屏蔽状态 • 3、8259A的工作方式,可通过编程设置 • 4、8259A采用NMOS制造工艺,单一+5V电源

  12. INTA 控制逻辑 INT D7~D0 数据 总线 缓冲器 RD 中断服务寄存器 优先权判别电路 中断请求寄存器 IR0 WR 读/写 控制 逻辑 A0 CS IR7 CAS0 级联 缓冲器 比较器 CSA1 CAS2 中断屏蔽寄存器 SP/EN 二、 8259A的内部结构和工作原理

  13. 8259A内部结构主要组成部分: • 1、数据总线缓冲器:8位双向三态。传送CPU与8259A之间的控制命令、状态信息及中断类型信息。 • 2、读/写控制逻辑:控制对8259A读/写。 • 3、级连缓冲器:实现8259A芯片间的级连。 • 4、控制逻辑电路:协调和控制芯片内部各部件的工作。 • 5、中断请求寄存器IRR:8位,保存8个中断请求信号,输入引脚有中断请求时,相应位置1。

  14. 6、中断屏蔽寄存器IMR:8位,某位置”1”时,相应的中断请求被屏蔽,其内容为操作命令字OCW1,由程序设置或改变。6、中断屏蔽寄存器IMR:8位,某位置”1”时,相应的中断请求被屏蔽,其内容为操作命令字OCW1,由程序设置或改变。 • 7、中断服务寄存器ISR:8位,当CPU正在处理某个中断请求时,ISR寄存器中的相应位置1。 • 8、优先级比较器:比较正在处理的中断和刚进入的中断请求之间的优先级,决定是否产中断嵌套。

  15. 三、 8259A的外部引脚 • 1、D7-D0:双向,数据输入/输出。 • 2、IR7-IR0:中断请求信号输入,默认优先级为IR0>IR1>…>IR7,有多片8259A形成级连时,从片的INT接主片的IRi。 • 3、INT:中断请求信号输出,高电平有效,向CPU发中断请求,接CPU的INTR。 • 4、INTA*:中断响应信号输入,低电平有效,CPU发出第二个INTA*时,8259A将中断类型码送出。

  16. 5、RD*:读控制信号输入,低电平有效,实现对8259A内部寄存器内容的读操作。5、RD*:读控制信号输入,低电平有效,实现对8259A内部寄存器内容的读操作。 • 6、WR* :写控制信号输入,低电平有效,实现对8259A内部寄存器的写操作。 • 7、CS* :片选信号输入,低电平有效,由系统地址总线译码后形成,决定8259A的端口地址。

  17. 8、 A0:8259A内部寄存器的端口地址选择信号输入。 • A0=0ICW1、OCW2、OCW3 • A0=1ICW2~ICW4、OCW1 • 9、 CAS2-CAS0:级连信号,主片为输出;从片为输入,与SP*/EN*信号配合,实现芯片的级连。 • 10、 SP*/EN*:级连管理信号输入,非缓冲方式,主片SP*=1 ,从片SP*=0;缓冲方式用作8259外部数据总线缓冲器的启动信号。 • 11、 +5V、GND:电源和接地引脚

  18. 四、 8259A的工作过程 • 1、中断请求输入(IR7-IR0),使中断请求寄存器的IRR的相应位置位。 • 2、若CPU允许中断,当前指令执行完后,响应中断,发应答信号INTA*。 • 3、第一个INTA*使IRR的锁存功能失效,不锁存IR7-IR0上的中断请求。 • 4、使在服务寄存器ISR的相应位置1,为中断优先级比较器的工作做准备。

  19. 5、使中断请求寄存器的相应位复位,清除中断请求。5、使中断请求寄存器的相应位复位,清除中断请求。 • 6、第二个INTA*到达时,将中断类型寄存器ICW2中的内容送数据总线。 • 7、若ICW4中的中断自动结束位为1,第二个INTA*结束时,将ISR寄存器的相应位清零。否则,执行完中断服务程序,通过输出操作命令EOI,使该位复位。

  20. 五、 8259A的工作方式 • 1、优先权的管理方式 • (1)、全嵌套方式 • 8级中断优先权固定不变,IR0的中断优先级最高,IR7的中断优先级最低。 • CPU响应中断后,使中断服务寄存器ISR相应位置1,能屏蔽同级或低级的中断请求,可为高级中断源服务,实现中断嵌套。

  21. (2)、特殊全嵌套方式 • 可响应同级中断,形成对同级中断的嵌套。 • 用在级连系统中,编程时,使主片工作在特殊全嵌套方式下。同一从片的8个优先级不同的中断源对主片来说级别相同。这时主片能响应本片高级中断,也能响应与正在处理的中断源处于同一从片的高级中断。对主片来讲能响应同级中断。

  22. (3)、优先级自动循环方式 • 多个中断源优先级相同时,设置OCW2为循环优先级方式。默认IR0—IR7。一个中断请求被响应后,其优先级自动降为最低。设IR4请求中断,CPU响应后,优先级顺序自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。 • (4)、优先级特殊循环方式 • 用OCW2设置最低优先级中断源,如设R4最低,则优先级顺序为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。

  23. 2、中断源的屏蔽方式 • (1)、普通屏蔽方式: • 中断请求输入受屏蔽寄存器的控制,相应位置“1”,屏蔽该级中断请求。通过设置IMR(操作命令字OCW1)屏蔽或开放中断。 • (2)、特殊屏蔽方式: • 设置OCW1使屏蔽寄存器中的某一位置1,屏蔽本级中断,同时使中断服务寄存器ISR中的相应位复位,屏蔽本级中断,开放低级中断。

  24. 3、结束中断处理的方式 • (1)、中断自动结束方式 • 用于单片8259A场合。这种方式下,系统响应中断,CPU发第二个INTA*脉冲时,清除中断服务寄存器ISR中相应位。虽然系统正在进行中断处理,但对8259A来讲就象中断处理已经结束。这样,可响应任何级别的中断请求。

  25. (2)、一般的中断结束方式(EOI) • 用于全嵌套情况下,在程序中向8259A偶端口地址输出一个操作命令,使OCW2 中的R,SL,EOI=0,0,1;ISR中优先级最高的位复位,接束中断。 • (3)、特殊的中断结束方式 • 特殊全嵌套模式下,在程序中向8259A偶端口地址输出一个操作命令,使OCW2 中的R,SL,EOI=0,1,1,用L3L2L1指出ISR中要复位的位;ISRL3L2L1复位,接束当前中断。

  26. 4、系统总线的连接方式 • (1)、缓冲方式 • 多片8259A级连系统中,8259A通过总线驱动器接系统数据总线,SP*/EN*端接总线驱动器允许端。输出状态字或中断类型码的同时使SP*/EN*=0实现对总线的驱动。 • (2)、非缓冲方式 • 单片或多片8259A级联时,D7-D0直接接系统数据总线。这时SP*/EN*为输入,单片时, SP*/EN*=1;多片时,主片SP*/EN*=1 ,从片SP*/EN*=0

  27. 5、引入中断请求的方式 • (1)、边沿触发方式 • 通过初始化命令字ICW1设置,在输入端出现的上升沿作为中断请求信号。 • (2)、电平触发方式 • 通过初始化命令字ICW1设置, 中断请求输入端出现的高电平作为中断请求信号,这种方式下,中断响应后必须马上撤除,以免引起第二次中断。

  28. (3)、中断查询方式 • (a)查询工作过程 • 系统先关中断,用OUT指令将操作命令字OCW3中的P位置1,发送到8259A的偶地址端口,如果有中断请求,ISRi=1。接着用IN指令从偶地址端口读取8259A的查询字。CPU从ISR中读取优先级,判断执行哪个服务程序。 • (b)查询字格式 • D7 。 。 。 D3 D2 D1 D0 • I X X X X W2 W1 W0 • 注:I=1有中断请求;W2W1W0为最高优先级中断号。

  29. (c)读8259A的状态 • 当OCW3中P=0时,通过RR、RIS的状态构成对IRR、ISR的读出命令。 RR、RIS=10时,读IRR的状态。 RR、RIS=11时,读ISR的状态。 • IMR的状态可用IN指令从奇地址读取。

  30. 七、 8259A的编程 • 1、8259A的端口地址 • 由8259A的结构可知:寻址8259A内部寄存器组的信号包括:CS*、A0、RD*、WR*;CS*是片选信号,低电平时,芯片工作。 • A0:寻址8259A芯片中不同的寄存器组,8259A芯片占用系统的两个端口地址,偶地址和奇地址,规定偶地址小于奇地址。 • 8259A内部寄存器的区别,采用特征位和操作顺序方法。

  31. 2、8259A的初始化编程 • 初始化编程 8259A开始工作前,必须写入初始化命令字ICW • 操作命令字 工作期间要改变8259A的中断控制方式,可写入操作命令字OCW

  32. 1、初始化命令字ICW • 初始化命令字ICW,有4个 • 在8259A开始工作前写入 • 必须按照ICW1~ICW4顺序写入 • ICW1和ICW2必须写 • ICW3和ICW4由工作方式决定

  33. ICW1:写入偶地址端口 • D0(IC4): D0=1设置ICW4,D0=0不设置ICW4 。 • D1(SNGL): =1单片; =0多片级连。 • D2(ADI):8088/8086系统不用。 • D3(LTIM):=1电平触发;=0上升沿触发。 • D4=1是ICW1的特征位。 • D5-D7:8088/8086系统不用。

  34. ICW2:写入奇地址端口D7—D3:中断类型码的高5位,D2—D0由IRi决定(000—IR0 - - -111—IR7) 。 例:若ICW2=45H,则8级中断源的中断类型码:IR0为40H,…,IR7为47H

  35. ICW3:级连命令字 • 主8259A:Si=1对应IRi接有从片 • 从8259A:ID2~ID0为该片的识别码例:主ICW3=11100010,说明IR7、IR6、IR5、IR1上接有从片;若从片的INT接在主片的IR1引脚上,其ICW3=00000001

  36. ICW4:D7~D5=000是ICW4的特征 • SFNM——嵌套方式: (=1)特殊全嵌套方式, (=0)全嵌套方式 • BUF——数据线的连接方式:缓冲方式(=1);非缓冲方式(=0) • M/S——主片/从片选择:主片(M/S=1);从片(M/S=0) • AEOI—中断结束方式:自动中断结束(=1);非自动中断结束(=0) • μPM —16位8086(PM=1) D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 SFNM BUF M/S AEOI μPM

  37. 例:单片8259A,8088模式,采用缓冲方式连接,优先级设置为全嵌套中断方式,端口地址为20H,21H。中断类型码:08H例:单片8259A,8088模式,采用缓冲方式连接,优先级设置为全嵌套中断方式,端口地址为20H,21H。中断类型码:08H • MOV AL,13H ;边沿触发,单片,需ICW4 • OUT 20H ,AL • MOV AL,08H;中断向量为00001*** • OUT 21H,AL • MOV AL,09H;8088模式,缓冲,全嵌套 • OUT 21H,AL

  38. 2、 操作命令字OCW • 8259A工作期间,可随时接受操作命令字OCW:OCW1~OCW3 • OCW1:写入奇地址端口,是中断屏蔽命令字,通过编程对中断源进行屏蔽或开放 • Di=1禁止IRi中断;0允许IRi中断。 • D7 D6 D5 D4 D3 D2 D1 D0 • M7 M6 M5 M4 M3 M2 M1 M0

  39. OCW2:写入偶地址端口,D4D3=00是特征位,用于设置中断优先级循环方式和中断结束方式。OCW2:写入偶地址端口,D4D3=00是特征位,用于设置中断优先级循环方式和中断结束方式。 • R(=1)优先级采用循环方式;(=0)为非循环方式 • SL(=1)用L2、L1、L0指明中断源; • EOI指示OCW2是否作为中断结束命令。

  40. R、SL、EOI • 0、0、0:清除自动EOI循环优先级命令; • 1、0、0:设置自动EOI循环命令; • 0、0、1:普通的EOI命令。完全嵌套方式下,中断服务程序结束时,用命令设置EOI=1结束中断程序返回断点; • 0、1、1:特殊EOI,非完全嵌套方式下,用L2、L1、L0指出ISR寄存器中需要被清除的位; • 1、0、1:自动循环的EOI,使当前中断处理程序的ISR清零,优先级次序左移一位; • 1、1、1:设置特殊循环方式,清除当前中断的对应位ISR;用L2、L1、L0指出哪一个中断源的中断优先级降为最低; • 1、1、0:设置优先级,用L2、L1、L0指出中断优先级最低的中断源。

  41. (3)、OCW3:写入偶地址端口 • D4D3=01是特征位 D7 D6 D5 D4 D3 D2 D1 D0 0 ESMM SMM 0 1 P RR RIS • D6D5=(11)置特殊屏蔽模式;(=01)撤消特殊屏蔽模式;D6=0,D5无意义。 • D2:查询方式位(P),=1,设置为查询方式。 • P=0与D1(RR)、D0(RIS)组合构成对内部寄存器的读出命令 • D2D1D0=010,读中断请求寄存器(IRR)。 • D2D1D0=011,读取中断服务寄存器(ISR)。

  42. 八、 8259A的级联

  43. 主片的3条级联线与各从片的同名级联线引脚对接,主片为输出,从片为输入。主片向从片发优先级别最高的中断请求的从片代码,从片用该代码与本片的代码进行比较,符合则将本片ICW2中设定中断类型码,送数据总线。主片的3条级联线与各从片的同名级联线引脚对接,主片为输出,从片为输入。主片向从片发优先级别最高的中断请求的从片代码,从片用该代码与本片的代码进行比较,符合则将本片ICW2中设定中断类型码,送数据总线。 • sp*/en*主片的接+5v,从片的接地。 • 级连系统中的所有8259A都必须进行各自独立的编程,作为主片的8259A必须设置为特殊的全嵌套方式,以避免同一从片中,优先级较高的中断请求被屏蔽。

  44. 九、 8259A的应用举例 • 例1、IBMPC机中,单片8259A。在I/O地址中,分配给8259A的端口地址为20H和21H,要求初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H—0FH

  45. 初始化程序为: • 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 • 。。。。。。

  46. 例3、读8259A相关寄存器的内容。 • 设8259A的端口地址为20H、21H,读IRR、ISR、IMR寄存器的内容,并相继保存在数据段2000H开始的内存单元中;若该8259A为主片,请用查询方式,查询哪个从片有中断请求。 • 解:MOV AL,xxx01010B ;设置OCW3,读取IRR的内容 • OUT 20H,AL • IN AL,20H ;读入并保存IRR的内容 • MOV (2000H),AL

  47. MOV AL,xxx01011B ;置OCW3读取ISR的内容 • OUT 20H,AL • IN AL,20H ;读入并保存ISR的内容 • MOV (2001H),AL • IN AL,21H 读入并保存IMR的内容 • MOV (2002H),AL • MOV AL,xxx0110xB ;置OCW3,查询是否有中断请求 • OUT 20H,AL • IN AL,20H 读相应状态,判断最高位是否为1 • TEST AL,80H • JZ DONE • AND AL,07H 判断中断源的编码 • ………… • DONE:HLT

  48. 习题: • 1、8259A芯片是如何实现对8级中断进行管理的?又是如何级联实现对64级中断管理的? • 2、不需要ICW4,单片以及边缘触发, 8259AICW1的值为多少? 要求产生的中断类型码在70H~77H之间,ICW2的值是多少? • 3、某系统有五个中断源,分别从8259A的IR0~IR4以边沿触发方式引入,中断类型码分别为48H~4CH,允许以全嵌套方式工作,编写相应的初始化程序。

More Related