1 / 61

第 7 章

第 7 章. 第 7 章:教学重点. 教学重点 8088 CPU 的中断系统 内部中断服务程序的编写 中断控制器 8259A 的作用. 7.1 概述. 中断是微处理器与外部设备交换信息的一种方式。 程序中断 ( 定义 ) 中断处理程序 中断是提高计算机工作效率的一种手段,能较好的发挥处理器的能力 中断技术对实时微机控制系统来说特别有效 中断技术也广泛用来进行应急事件的处理. 7.1 概述. 微处理器中常用的 3 种中断技术: 单线中断 多级中断 矢量中断. 7.1 概述. 单线中断技术

galena
Télécharger la présentation

第 7 章

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. 第 7 章

  2. 第7章:教学重点 教学重点 • 8088 CPU的中断系统 • 内部中断服务程序的编写 • 中断控制器8259A的作用

  3. 7.1 概述 • 中断是微处理器与外部设备交换信息的一种方式。 • 程序中断(定义) • 中断处理程序 • 中断是提高计算机工作效率的一种手段,能较好的发挥处理器的能力 • 中断技术对实时微机控制系统来说特别有效 • 中断技术也广泛用来进行应急事件的处理

  4. 7.1 概述 • 微处理器中常用的3种中断技术: • 单线中断 • 多级中断 • 矢量中断

  5. 7.1 概述 • 单线中断技术 • 多个外设的中断请求必须用“或”逻辑连接在一起,共同接到微处理器的一条中断请求线上。 • 需解决的问题 • 中断源的识别 • 中断请求的优先权排队问题 • 中断的多级嵌套 • 多级中断技术 • 微处理器有几条优先级别不同的中断请求线,若每一个中断源都对应一条请求线,则发生中断时,微处理器就能识别中断源及其优先级别 • 特点:响应速度快,结构简单,但受引脚数的限制

  6. 7.1 概述 • 矢量中断技术 • 由每个中断源向CPU提供中断源的设备标志码,将程序转向相应中断源设备的中断处理程序,或中断源提供中断处理程序的入口地址 • 由于矢量中断不需要查询中断源,故中断处理速度较快

  7. 7.1 概述 • 异常 • 是在指令执行期间检测到的不正常的非法的状态,使指令不能成功执行。它与所执行的指令有直接的联系 • 异常的发生源于微处理器的内部,且总是与微处理器操作同步(中断是外部) • 例如:指令执行期间检测到段异常或页异常 • 处理器对中断和异常的处理通常在两条指令之间进行

  8. 7.1 概述 • 8088/386/486的中断系统采用向量中断机制,每个中断或异常都有它自己的中断矢量 • 中断矢量用8位二进制表示,能够处理256个中断 • 用中断向量号0 ~ 255区别 • 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理

  9. 7.2 中断 • 中断由异步的外部事件引起。外部设备根据其自身需要,使用微处理器芯片上特定的引脚,把实时中断请求信号传送给微处理器。 • 中断分类 • 可屏蔽中断 • 非屏蔽中断

  10. 第7章: ⑴可屏蔽中断 • 外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断 • 8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器 • 8088通常需要配合中断控制器8259A共同处理可屏蔽中断 • 可屏蔽中断主要用于主机与外设交换数据

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

  12. 7.3 异常 • 异常分类 • 故障(Fault) • 引起该故障的程序可被恢复执行的异常,它也是在引起故障的指令执行之前就报告给系统的一种异常 • 陷阱(Trap) • 是在指令执行期间被检测到的,并在引起异常的指令执行之后向系统报告的一种异常 • 中断(Abort) • 是微处理器面临严重错误时产生的异常。

  13. 7.3 异常 • 异常错误码 • 产生异常时,为了帮助系统分析问题,微处理器在异常处理程序的栈中压入一个错误码,对于一些无错误信息的异常,压入错误码0 • 错误码格式—略 • 处理器定义的异常 • 是80X86处理器中保留自用的异常,共16个 • 异常0、1、3、4 较重要,其他了解即可

  14. 非屏蔽中断源 可屏蔽中断源 NMI 8259A 中断 控制器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 CPU INTR 中断逻辑 外 设 中 断 源 INTA INT N 指令 INTO 指令 除法 错误 单步 中断 第7章 补充 • 内部中断 • 除法错中断 • 指令中断 • 溢出中断 • 单步中断 • 外部中断 • 非屏蔽中断 • 可屏蔽中断

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

  16. 第7章:⑴ 除法错中断 • 在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断 例如: mov bl,0 idiv bl ;除数BL=0,产生除法错中断 mov ax,200h mov bl,1 div bl ;商=200H,不能用AL表达 ;产生除法错中断

  17. 第7章:⑵ 指令中断 • 在执行中断调用指令INT n时产生的一个向量号为n(0 ~ 255)的内部中断,称为指令中断 • 其中向量号为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断 例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT 3指令实现的

  18. 第7章:⑶ 溢出中断 • 在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断 例如: mov ax,2000h add ax, 7000h ;2000H+7000H=9000H,溢出:OF=1 into ;因为OF=1,所以产生溢出中断

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

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

  21. 7.4 中断及异常的暂时屏蔽 • IF=0:可屏蔽中断不会被响应 • 关中断、禁止中断、中断屏蔽 • 系统复位,使IF=0 • 任何一个中断被响应,使IF=0 • 执行指令CLI,使IF=0 • IF=1:可屏蔽中断会被响应 • 开中断、允许中断、中断开放 • 执行指令STI,使IF=1 • 执行指令IRET恢复原IF状态 • RF=1,屏蔽排错故障 • 其他 明 确 IF 标 志 的 状 态 是 关 键

  22. 7.5 中断及异常的优先级

  23. 7.6 实方式下的中断 • 中断向量:中断服务程序的入口地址(首地址) • 逻辑地址含有段地址CS和偏移地址IP(32位) • 每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节 • 8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始 • 256个中断占用1KB区域,就形成中断向量表 向量号为N的中断向量的物理地址=N×4

  24. 可屏蔽中断的相应和处理过程

  25. 中断处理流程图

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

  27. 例7.1 内部中断服务程序 • 编写80H号中断服务程序,并调用 • 功能:具有显示以“0”结尾字符串的功能,利用显示器功能调用INT 10H实现字符显示 • 字符串缓冲区首地址为入口参数: DS:DX(段地址:偏移地址)传递参数

  28. 第7章:例7.1的数据段 ;数据段 intoff dw ? ;用于保存偏移地址 intseg dw ? ;用于保存段基地址 intmsg db ‘A Instruction Interrupt !’, 0dh,0ah,0 回车、换行 以“0”结尾

  29. 第7章:例7.1的获取原中断向量 ;代码段 mov ax,3580h ;利用DOS功能35H号 int 21h ;获取原80H中断向量 mov intoff,bx ;保存偏移地址 mov intseg,es ;保存段基地址 获取中断向量(DOS功能调用INT 21H) 功能号:AH=35H 入口参数:AL=中断向量号 出口参数:ES:BX=中断向量(段地址:偏移地址)

  30. 第7章:例7.1的设置新中断向量 push ds mov dx,offset new80h ;取中断程序偏移地址 mov ax,seg new80h ;取中断程序段地址 mov ds,ax mov ax,2580h int 21h pop ds 设置中断向量(DOS功能调用INT 21H) 功能号:AH=25H 入口参数:AL=中断向量号 DS:DX=中断向量(段地址:偏移地址)

  31. 程序功能 第7章:例7.1的中断调用 ;设置入口参数: DS=段地址(已设置) DX=偏移地址 mov dx,offset intmsg int 80h;调用80H中断服务程序 A Instruction Interrupt !

  32. 第7章:例7.1的主程序返回 mov dx,intoff;恢复原中断向量 mov ax,intseg mov ds,ax;改变DS mov ax,2580h int 21h;因紧接着返回DOS mov ax,4c00h;故无需恢复DS int 21h 设置中断向量(DOS功能调用INT 21H) 功能号:AH=25H 入口参数:AL=中断向量号 DS:DX=中断向量(段地址:偏移地址)

  33. 第7章:例7.1的中断服务程序(1) ;80H号内部中断服务程序: ;显示字符串(以“0”结尾) ;入口参数:DS:DX=缓冲器首地址 new80h proc ;过程定义 sti;开中断 push ax ;保护寄存器 push bx push si

  34. 第7章:例7.1的中断服务程序(2) mov si,dx new1: mov al,[si] ;读取欲一个显示字符 cmp al,0;为结尾“0”,则结束 jz new2 mov bx,0;采用ROM-BIOS功能调用 mov ah,0eh ;bl内容为前景色 int 10h inc si;准备显示下一个字符 jmp new1

  35. 程序功能 第7章:例7.1的中断服务程序(3) new2: pop si ;恢复寄存器 pop bx pop ax iret;中断返回 new80h endp ;过程(中断服务程序)结束 A Instruction Interrupt !

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

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

  38. 8259A引脚图

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

  40. 8259A的内部寄存器 • 优先权判别器PR • 根据CPU发来的命令字定义和修改IRR中各中断源的优先级别 • 多个中断源同时请求中断时,可根据各中断源的优先级别判断并选择出最高的优先级别,进而判断该优先权是否高于正在处理的中断 • 若当前申请中断的最高优先权高于正在处理的中断级,则向CPU发出中断请求信号

  41. 7.8.2 8259A的编程 • 8259A的中断操作能很强,包括中断的请求、屏蔽、排队、结束、级联以及提供中断类型号和查询等操作,并且其操作的方式也有不同。它既能实现向量中断,又能进行查询中断,它可用于16位机,也可用于8位机。 • 对8259A编程分两步: • 在系统加电和复位后,用初始化命令对8259A芯片进行初始化编程 • 在操作阶段,用操作命令字对8259A进行操作过程编程,即实现对8259A的状态、中断方式和中断响应次序等的管理

  42. 7.8.2 8259A的编程—初始化命令字及其编程 • ICW1命令字--中断请求触发方式 • 8259A为了判断有无外部设备提出中断请求,设有两种检测方法供选择:电平触发和边沿触发。 • 电平触发方式 • 在IR输入线上检测出一个高电平,并且在第一个INTA* 脉冲到来之后可维持高电平,就认为有外设提出中断请求,并使IRR相应位持续置1。电平触发方式提供了重复产生的中断,用于需要连续执行子程序直到中断请求IR变低为止的情况。应注意及时撤除高电平。 • 边沿触发方式 • 当在IR输入端检测到由低到高的上跳变时,且高电平保持到第一个INTA* 到来之后,8259A就认为有中断请求。

  43. 初始化命令字及其编程 • ICW1的格式如下: 其中:D4位为ICW1的特征位,必须为“1”。D3位决定电平触发方式(LTIM):D3=1,为电平触发;D3=0,为边沿触发。 D1位决定单片使用(SNGL):D1=1,为单片使用;D1=0,为多片级联方式。 D0位决定是否需要初始命令字ICW4配合,(对8088/8086一般都需使用ICW4),D0=1, 需要ICW4;D0=0,不需要ICW4。    其他位只对8位微机(8085)有效,故写0。

  44. 初始化命令字及其编程 例如,若8259A采用电平触发,单片使用,需要ICW4,则程序段为: MOV AL,1BH  ;ICW1的内容00011011B OUT 20H,AL  ;写入ICW1端口(A0=0) 8259A的命令字/状态字读写条件

  45. 初始化命令字及其编程 • ICW2命令字—中断类型号设定 • 8259A提供给CPU的中断类型号是一个8位代码,是通过初始化命令ICW2提供的。但由于ICW2的低3位被8位机占用,因此只有高5位是在初始化编程时,通过命令字ICW2写入的,它的低3位是由中断请求线IRi的二进制编码(如IR4的编码为100)决定,并且是在第一个INTA到来时,将这个编码写入低3位的。ICW2的格式如下:  

  46. 初始化命令字及其编程 • 例如,在PC系列中断系统中,硬盘中断类型号的高5位是08H,它的中断请求线连到 8259A的IR5上,在向ICW2写入中断类型号时,只写中断类型号的高5位(08H),低3位可以取0: MOV AL,08H  ;ICW2的内容(中断类型号高5位) OUT 21H,AL  ;写入ICW2的端口(A。=1)   当CPU响应硬盘中断请求时,8259A把IR5的编码101作为低3位构成一个完整的8位中断类型号0DH(00001101B),经数据总线发送给CPU。   可见,外部硬中断中断源的中断号(8位代码)是由两部分构成的,即高5位(ICW2)+低3位(IRi的编码)。

  47. 初始化命令字及其编程 • ICW3命令字--中断级联方式的设定

  48. 初始化命令字及其编程 • ICW3对主控芯片和从控芯片要分开写,其格式分别为: 若主控输入端IRi上联接从控,则Si=1;否则,Si =0。例如,上页图中主控的IR3和IR6的两个输入端分别联接了从控A与B。故:  主控ICW3的值=01001000B=48H MOVAL,48H  ;ICW3(主)内容 OUT21H,AL   ;写入ICW3端口(A0=1)

  49. 初始化命令字及其编程 3位从控标志码可有8种编码,表示从控的中断请求线INT被联到主控的哪一个输入端IRi。   例如,图中从控A和B的请求线INT分别联到主控的IR3和IR6,故:   从控A的ICW3的内容=00000011B=03H   从控B的ICW3的内容=00000110B=06H MOV AL,03H  ;ICW3(从片A)内容 OUT 0A1H,AL ;写入ICW3(从片A)端口(A0=1)

  50. 0 0 0 SFNM BUF M/S AEOI uPM 初始化命令字及其编程 • ICW4命令字--特殊完全嵌套方式的设定 • 只有ICW1中的IC4=1,才需设置ICW4,其格式如下: SFNM:置“1”表示特殊全嵌套方式. 否则是正常全嵌套方式. BUF:置“1”表示采用缓冲方式.SP/EN作为输出. 否则是非缓冲方式.SP/EN为输入.接高电平. M/S:当工作在缓冲方式下,该位置“1”是主片. AEOI:置“1”表示中断自动结束.第二个INTA脉冲. 否则中断正常结束.在处理程序中用命令字. uPM:置“1”表示8259A工作于8086/8088模式. 否则工作于8086/8085模式.

More Related