1 / 110

第 9 章

第 9 章. 中断技术. 呱,打扰一下!. 主要内容 中断的概念 8088 CPU 的中断系统 中断控制器 8259A. §8.1 中断概念 什么是中断 所谓中断,就是指当 CPU 正在执行程序时,外设 ( 或其它中断源 ) 向 CPU 发出请求, CPU 暂停当前程序的执行,转向该外设服务 ( 或称中断服务 ) 程序,当中断服务程序运行结束后,返回原程序继续执行的过程。 处理 :外部紧急事件、异常情况.

kamea
Download Presentation

第 9 章

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. 第 9 章 中断技术 呱,打扰一下!

  2. 主要内容 • 中断的概念 • 8088 CPU的中断系统 • 中断控制器8259A

  3. §8.1 中断概念 • 什么是中断 所谓中断,就是指当CPU正在执行程序时,外设(或其它中断源)向CPU发出请求,CPU暂停当前程序的执行,转向该外设服务(或称中断服务)程序,当中断服务程序运行结束后,返回原程序继续执行的过程。 处理:外部紧急事件、异常情况

  4. 中断服务程序(Interrupt-service routing ),处理随机事件的特殊程序,又被称为中断处理程序(interrupt handler)。 • 中断源,引起CPU中断的随机事件,或能发出中断请求的其它来源。

  5. 中断技术是现代计算机系统中很重要的一项功能,可以应用于以下几个方面的处理。中断技术是现代计算机系统中很重要的一项功能,可以应用于以下几个方面的处理。 1 )故障检测和自动处理 2 )实时信息处理 3 )并行操作,控制和管理多台外设记终端 4 )分时操作

  6. 一 什么是中断 主程序 中断服务程序 中断请求 对外设 进行处理 断点 继续执行 返回断点 • ??? • 中断源有哪些 • 怎样识别中断源 • 怎样进入中断服务 • 怎样返回断点 • 怎样管理中断源

  7. 中断的过程 • 向CPU发出中断 • CPU允许响应此中断 • 压栈保护现场及断点 • 找到中断服务程序的入口地址 • 执行中断服务程序 • 恢复现场及断点 即 包括:中断请求,中断判优,中断响应,中断处理,中断返回。

  8. 中断系统应具有的功能 • (1)实现中断及返回 • (2)能实现优先权排队 • (3)高级中断源能中断低级的中断处理

  9. 中断响应与调用子程序的区别 中断响应 随机的、被动行为 保护断点及现场 为外设服务 为处理各种事件服务 软件中断和调用子程序很相似,调用方便 调用子程序 事先安排好的主动行为 保护断点 为主程序服务 一般与外设无关

  10. §8.2 8086的中断技术 • 8088的中断系统采用向量中断机制 • 能够处理256个中断 • 用中断向量号0 - 255区别 • 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理

  11. 8086提供两条外部中断请求线,和一条与中断有关的控制线:NMI,INTR, INTA(中断响应)。 • 8086中断有两大类 • (1)软件中断(内部中断),由指令的执行所引起的中断; • (2)硬件中断(外部中断),由外部主要是外设的请求引起的中断。

  12. 一、中断类型和中断向量表 1、中断类型号 8086用0-255来区分256个不同中断源,并对应给出中断向量。 0~4: 5个内部中断,有固定的定义和处理功能; 5~31:系统保留,用户一般不应使用 32~255:用户使用作为硬件或软件中断,也可不用,作为数据存储区。

  13. 2、中断向量表 • 8086/8088系统支持最多256个中断,对应每一个中断,都有一个中断服务程序,该中断服务程序的入口地址称为中断向量。 • 每个中断向量占用4个字节,前两个字节为服务程序的IP(偏移量),后两个字节为服务程序的CS(段地址)。

  14. 每个中断类型对应一个中断向量。 • 256个中断类型,其中断向量构成一个中断向量表,放在0段的0~3FFH区域内,每个占4个字节。 • 存放中断向量的位置=中断类型号×4(0段)开始的4个内存单元。 向量号为N的中断向量的物理地址=N×4

  15. 8086的中断向量表 返回

  16. 0080H 10H IP 0081H 20H 30H 0082H CS 40H 0083H 例:20H号中断的中断服务程序的入口地址(中断向量)4030H:2010H,则此中断向量占用的内存单元为: 0000H:0080H开始的4个单元

  17. 二、中断指令和中断屏蔽 1、中断指令 CLI:清中断标志,IF=0,禁止可屏蔽中断; STI:中断标志置位, IF=1,开放可屏蔽中断; INT n:软件中断 CPU工作:(Flags) ((SP)-2) 先复制TF状态,然后TF,IF=0 (CS) ((SP)-4) (4*n+2) (CS) (IP) ((SP)-6) (4*n) (IP)

  18. IRET: 中断返回 • CPU的工作: • ((SP)) IP • ((SP)+2) CS • ((SP)+4) flag • (SP)+6 SP • INTO 溢出中断(INT 4) • HLT 暂停等待外部中断或复位

  19. 2、 中断的屏蔽 • 中断允许标志位(IF),只能影响可屏蔽外部中断,不影响软件中断、内部中断以及非屏蔽的外部中断。 • 系统响应中断时,使IF=0,保证响应过程不被打断。 • 若有优先级高的中断, 在服务子程序中使IF=1。

  20. 3、IF 中断标志 • IF=0,关中断、禁止中断、中断屏蔽,因此可屏蔽的中断不会被响应。 • 系统复位 • 任何一个中断响应 • 执行CLI 将使IF=0 • IF=1,开中断、允许中断、中断开放,可屏蔽的中断会被响应。 • 执行STI 将使IF=1 • 执行IRET,恢复原IF

  21. INTA 三、中断的功能 • 内部中断 • 除法错中断 • 指令中断 • 溢出中断 • 单步中断 • 外部中断 • 非屏蔽中断 • 可屏蔽中断 非屏蔽中断源 可屏蔽中断源 NMI(2) 8259A 中断 控制器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 CPU INTR 中断逻辑 外 设 中 断 源 INT 3 指令 INT N 指令 除法 错误(0) 单步 中断(1) INTO 指令(4)

  22. 1. 内部中断 • 内部中断是由于8088内部执行程序出现异常引起的程序中断 • 利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径 • 例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用

  23. 除法错中断,类型0中断 • 在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断。自动转到0000H~0003H存放的地址执行。 例如: mov bl,0 idiv bl ;除数BL=0,产生除法错中断 mov ax,200h mov bl,1 div bl ;商=200H,不能用AL表达 ;产生除法错中断

  24. 溢出中断, 类型4中断 • 在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断 • 有必要时用INTO引入,用于测试溢出标志。跟在有符号数的计算后面,程序员知道是否为有符号数,对于无符号数则无所谓。 例如: mov ax,2000h add ax, 7000h ;2000H+7000H=9000H,溢出:OF=1 into ;因为OF=1,所以产生溢出中断

  25. 单步中断,类型1中断 • 若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断 例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试

  26. 断点中断,类型3中断 • 在调试程序时使用,将某处的一条指令替换为 INT3指令。需要保存原内容,调试完后回复原指令。 • 比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断 例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT 3指令实现的

  27. 2、软件(指令)中断 • 在执行中断调用指令INT n时产生的一个向量号为n(0 ~ 255)的内部中断,称为指令中断。 • 被成为向量化的子程序调用,一般会是功能比较复杂的仿真子程序。 • 所有的外部中断也可以用指令调用。

  28. 3、外部中断 • 外部中断是由于8088外部提出中断请求引起的程序中断 • 利用外部中断,微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件 • 外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt) • 内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception)

  29. ⑴ 非屏蔽中断 • 通过非屏蔽中断请求信号向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断 • 8088的非屏蔽中断的向量号为2,非屏蔽中断请求信号为NMI • 非屏蔽中断主要用于处理系统的意外或故障。例如: • 电源调电前的数据保护 • 存储器读写错误的处理

  30. ⑵ 可屏蔽中断 • 外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断 • 8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器。

  31. 申请在INTR线上发出信号,可以被CPU查到,有要在服务完成前及时撤销,以防重复触发。申请在INTR线上发出信号,可以被CPU查到,有要在服务完成前及时撤销,以防重复触发。 • INTA*作为中断应答信号,送出两个负脉冲,第一个通知外设得到响应,第二个将中断类型号送上数据线。 • 8088通常需要配合中断控制器8259A共同处理可屏蔽中断 • 可屏蔽中断主要用于主机与外设交换数据 明 确 IF 标 志 的 状 态 是 关 键

  32. 8086/8088的中断响应过程 • 查询中断的顺序, • 决定了各种中断源的优先权 • 软件中断 • 除法错中断 • 指令中断 • 溢出中断 • 非屏蔽中断 • 可屏蔽中断 • 单步中断 高 低 现行指令 Y 软件中断 N Y NMI N 中断响应周期 读中断向量号 Y Y INTR IF=1 N N Y TF=1 N 下条指令

  33. 8086/8088的中断响应过程(续) 标志寄存器入栈 (1) TEMP=TF,IF=TF=0 (2) CS:IP入栈 (3) 获取中断向量 (4) Y 还有NMI N Y TEMP=1 N 执行服务程序 (5) 弹出CS:IP 弹出标志寄存器 (6) 返回被中断程序

  34. 内部中断服务程序 • 编写内部中断服务程序与编写子程序类似 • 利用过程定义伪指令PROC/ENDP • 第1条指令通常为开中断指令STI • 最后用中断返回指令IRET • 通常采用寄存器传递参数 • 主程序需要调用中断服务程序 • 调用前,需要设置中断向量 • 设置必要的入口参数 • 利用INT n指令调用中断服务程序 • 处理出口参数

  35. 8.3 中断控制器8259A 呱。。。 呱,打扰一下 呱,还有我 呱呱

  36. 中断申请管理接口的主要功能: 1.向CPU的引脚INTR发中断申请信号 • 当有多个外设同时发出中断请求时, • 能按照一定的优先级顺序,向CPU发出中断申请, • 使CPU能优先响应优先级最高的外部设备的中断申请。 2.送中断类型号 • 在CPU中断响应周期,针对不同外设的中断请求, • 向CPU传送不同的中断类型号, • 使CPU执行相应的中断子程。

  37. Intel 8259A是可编程中断控制器 • 用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断 • 8259A的基本功能 • 一片8259A可以管理8级中断,可扩展至64级 • 每一级中断都可单独被屏蔽或允许 • 在中断响应周期,可提供相应的中断向量号 • 8259A设计有多种工作方式,可通过编程选择

  38. 8259A的引脚双列直插式芯片,28个引脚 8259A Vcc + 5V 总线 18.2Hz IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 方 波 数 据 线 D0 ~ D7 D0 ~ D7 键 盘 保 留 串 口2 IOR RD 串 口1 IOW WR 硬 盘 A0 A0 软 盘 打印机 片 选 译 码 CS A5 ~ A9 20~3FH SP/EN CA0 CA1 CA2 GND 用于多片 8259A 级连情况 INTA INTA INT INTR

  39. 一、8259A的引脚、结构和工作原理 • 引脚 • 1、D0~D7: 8条数据线,与CPU数据总线相连,进行数据交换,写入控制字或送出类型号。 • 2、INT:中断请求,与CPU INTR相连发出中断申请。 • INTA*: 接收来自CPU的响应信号,一般两个负脉冲。 • RD*: 读信号,读CPU某个内部寄存器的内容 • WR*:写信号,通知CPU接收命令字。

  40. CS*:片选信号 • A0:1片8259A占用两个端口地址,一个偶地址(A0=0)较低,一个奇地址(A0=1)较高。 • IR0~IR7: 分别接8个外设中断请求或从片中断请求。 • CAS0~CAS2:主从结构时,区分不同的从片。 • SP*/EN*: 双向线,(由初始化命令字设置) • 非缓冲方式:输入 SP*=1本片主片, SP*=0本片主片 • 缓冲方式:输出EN*=0有效,数据从8259传向8086,一般用于驱动一个总线驱动器

  41. 关于数据线和地址线的连接 • 8259A只有8根数据线,一般与8086的低8根数据线相连,因此必须把8086地址线的A1与8259A的A0相连。 • 其中A0=0为偶地址 • A0=1为奇地址。

  42. 8259A的内部结构 • 8259的内部控制器。 • 1 根据中断请求寄存器IRR、中断屏蔽寄存器IMR的设置情况,通过优先级比较器判定优先级; • 2 向其他部件发出控制信号; • 3 并发出中断请求信号INT; • 4 接受中断响应信号INTA,使中断服务寄存器ISR的相应位置1,IRR的相应位清0; • 5 在INTA第二个负脉冲到来的时候送出中断类型号; • 6 根据中断结束类型对ISR的相应位清0。 RD WR A0 CS INTA 控制逻辑 INT D7~D0 数据 总线 缓冲器 中断服务寄存器 优先权判别电路 中断请求寄存器 IR0 读/写 控制 逻辑 IR7 CAS0 级联 缓冲器 比较器 • *用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套. • *保存对中断请求信号IR的屏蔽状态 • *Di位为1表示IRi中断被屏蔽(禁止),为0表示允许; • *各自独立. • *保存正在被8259A服务着的中断状态; • *Di位为1表示IRi中断正在服务中,为0表示没有被服务. CSA1 • * 保存8条外界中断请求信号IR0~IR7的请求状态; • * Di位为1表示IRi引脚有中断请求;为0表示无请求. CAS2 中断屏蔽寄存器 SP/EN

  43. 8259A的内部寄存器 • 中断请求寄存器IRR • 保存8条外界中断请求信号IR0~IR7的请求状态 • Di位为1表示IRi引脚有中断请求;为0表示无请求 • 中断服务寄存器ISR • 保存正在被8259A服务着的中断状态 • Di位为1表示IRi中断正在服务中;为0表示没有被服务 • 中断屏蔽寄存器IMR • 保存对中断请求信号IR的屏蔽状态 • Di位为1表示IRi中断被屏蔽(禁止);为0表示允许

  44. 优先级比较器(裁决器) • 用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。 • 数据总线缓冲器 • 它是8259A与系统数据总线的接口,是8位双向三态缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该缓冲器传送的。 • 读/写控制逻辑 • CPU通过它实现对8259A的读/写操作。

  45. 级连缓冲器: • 用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。 • 控制逻辑电路 • 对整个芯片内部各部件的工作进行协调和控制。8259的中断控制部分有7各寄存器,根据初始化命令字和操作命令字工作。

  46. 中断响应过程CPU在INTA*上给出两个负脉冲 • 第一个负脉冲使8259A作如下的工作: • 使IRR寄存器暂时失效,不再接收新的申请,第二个负脉冲恢复 • 使当前的ISR中的相应位置1 • 使IRR中的相应位清0 • 第二个负脉冲 • 使中断类型寄存器的ICW2的内容送D0~D7(中断类型码) • 如果ICW4中的自动结束位为1,则使ISR的相应位清0。

  47. 三、8259A的工作方式 • 8259A有多种工作方式,这些工作方式,可以通过编程设置或改变。 • 1.优先级的管理方式

  48. (1).全嵌套方式 • 这是8259A默认的优先权设置方式,在全嵌套方式下,8259A所管理的8级中断优先权是固定不变的,其中IR0的中断优先级最高,IR7的中断优先级最低。 • CPU响应中断后,请求中断的中断源中,优先级最高的中断源,在中断服务寄存器ISR中的相应位置位,而且把它的中断矢量送至系统数据总线,在此中断源的中断服务完成之前,与它同级或优先级低的中断源的中断请求被屏蔽,只有优先级比它高的中断源的中断请求才是运算的,从而出现中断嵌套。

  49. (2).特殊全嵌套方式 • 特殊全嵌套方式与全嵌套方式基本相同,所不同的是,当CPU处理某一级中断时,如果有同级中断请求,那么CPU也会作出响应,从而形成了对同一级中断的特殊嵌套。 • 特殊全嵌套方式通常应用在有8259A级连的系统中,在这种情况下,对主8259A编程时,通常使它工作在特殊全嵌套方式下。这样,一方面,CPU对于优先级别较高的主片的中断输入是允许的,另一方面,CPU对于来自同一从片的优先级别较高(但对于主片来讲,优先级别是相同的)的中断也是允许、能够响应的。

  50. (3).优先级自动循环方式 • 在实际应用中,中断源优先级的情况是比较复杂的,要求8级中断的优先级在系统工作过程中,可以动态改变。即一个中断源的中断请求被响应之后,其优先级自动降为最低。系统启动时,8级中断优先级默认为IR0—IR7,这时,刚好IR4发出了中断请求,CPU响应之后,若8259A工作在优先级自动循环方式下,则中断优先级自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。

More Related