
(微机原理与接口技术课件)第9章中断系统与 8259A 中断控制器.ppt
116页第 九 章中断系统与 8259A 中断控制器 99.1 .1 中断的基本概念中断的基本概念 复习复习CPUCPU与外设信息交换的控制方式种类与外设信息交换的控制方式种类 以查询方式输入为例以查询方式输入为例当外设数据未准备好时, CPU需要不断查询外设是否准 备好的状态,效率低读取状态信息数据准备好?从数据口读数据NY1.中断方式示意 (以输入中断为例)③数据④中断请求⑤中断响应⑦数据断点现行 程 序中 断 服 务 子 程 序⑥⑧② 现行程序输 入 设 备输 入 接 口①启动CPU⑨中断基本概念2. 什么是中断?CPU暂停执行现行程序,转而处理随机事件,处理完毕后再 返回被打断的程序,这一全过程称为中断3. 中断源 能够引发CPU中断的信息源 (1)外部中断源(硬件中断源)I/O设备 如键盘、显示器、打印机数据通道 如磁带、磁盘时钟 如8254 0#,由此引发的中断故障源 如掉电、存贮器奇偶校验错 (2)内部中断源(软件中断源)执行INT软件中断指令 如执行指令INT 21HCPU指令执行产生的异常 如被0除、单步执行中断基本概念4. 中断系统 系统为实现中断而采取的硬件和软件措施。
5.中断系统应具备的基本功能 对于硬件中断,接口电路应具备‘屏蔽’和‘开放’的功能,这种功能由程序员通过软件去控制能实现中断判优(中断排队),当有多个中断源提出请求时,应能优先响应高级别的中断源中断基本概念能够实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序 响应中断后,能自动转入中断处理,处理完毕能自动返回断点现行 程 序断点为 B 服 务B设备中断为 A 服 务A设备中断断点为A 服 务设“B” 级 别高于 “A”中断基本概念1. 开中断指令 STISTI功能:使F寄存器中I标志置1,CPU处于开中断状态2. 关中断指令 CLICLI功能:使F寄存器中I标志置0,CPU处于关中断状态 3. 软件中断指令 INT nINT nn为中断类型码,n为0~255之间有定义的无符号整数功能:无条件转向n型中断服务子程序 99. .2 80X862 80X86的中断指令的中断指令 INT nINT n 指令的执行过程—CPU响应软件中断的过程① F寄存器→栈(保存INT n 之前的F状态)使F中的T标志置0——禁止单步操作I标志置0——CPU处于关中断状态 ② 断口地址→栈先:断口基地址(CS) →栈,后:断口偏移地址(IP)→栈③ CPU从4n ~ 4n+3单元取出n型服务程序入口地址→ IP:CS,从而转入n型中断服务程序。
80X86中断指令4. 中断返回指令 IRETIRET功能:依次从栈顶弹出6个元素→ IP,CS,F如果栈顶是INT n 的断口地址,则执行IRET后,返回断点,否则不能执行INT n 栈顶示意图执行IRET 示意图sp → 断口偏移地址断口段基址FCSFIPsp → IRET IRET 是中断服务子程序的出口指令是中断服务子程序的出口指令80X86中断指令99. .3 3 中断向量中断向量 1. 1. 什么是中断向量?什么是中断向量?中断向量是实模式下,中断服务子程序的 入口地址它由2部分组成: 服务程序所在代码段的段基址 2 个字节 服务程序入口的偏移地址 2 个字节2. 2. 中断向量表中断向量表每个中断都指定了一个类型码,也称为中断号 每一种中断对应有一个中断服务程序(Interrupt Service Program ——ISP )中断类型码通过一个地址指针表地址指针表与中断服务程序的入口地址相联系:实模式实模式下: 该表称为中断向量表中断向量表;保护模式保护模式下:该表称为中断描述符表中断描述符表3. 3. 中断向量表的设置中断向量表的设置CPU规定:在实模式下,中断向量表需设置在系统的RAM最低端的1K单元(00000H ~ 003FFH)00000H :00004H :003FCH:0型中断向量1型中断向量255型中断向量……n型中断向量4*n:中断向量4. 4. 中断向量表的表地址与中断类型的关系中断向量表的表地址与中断类型的关系如:“21H”型中断向量:存放在84H ~ 87H单元中解:21H型中断的中断向量应存放在4*21H ~ 4*21H+3这四个单元中。
4n+0+2 +3+1n 型服务程序入口的偏移地址n 型服务程序入口的段基址n 型中断 向量中断向量例:若21H型中断的中断向量为:1234H:5678H ,问:具体的存放情况时怎样的?5 5. . 中断向量表的初始化中断向量表的初始化 由BIOS设计的中断服务程序(如INT 16H , INT 10H…)其中断向量在加电时由BIOS负责写入中断向量表由DOS设计的中断服务程序(如 INT 21H)其中断向量是在启动DOS时,由DOS负责写入中断向量表用户程序开发的中断服务程序,由用户程序写入其中断向量中断向量XX:YY…用户编写的n型中断服务程序IRETYYXX中断向量表4 × n?问题:用户如何向中断向量表中写入中断向量?问题:用户如何向中断向量表中写入中断向量?中断向量DOSDOS设计设计2 2个子程序,专门用于中断向量的读出、写入个子程序,专门用于中断向量的读出、写入[ INT 21H 的35H子功能 ]功能:读出n型中断向量入口:AL=中断类型码出口:ES:BX=n型中断向量[ INT 21H 的25H子功能 ]功能:写入n型中断向量入口:DS=中断服务程序所在代码段的段基址DX=中断服务程序入口的偏移地址AL=中断类型码出口:无 中断向量例:把用户程序中以“TIMER”命名的中断服务子程序 的入口地址 →4 ×1CH ~ 4 ×1CH+3单元PUSH DS中断向量代:…MOV AH , 35HMOV AL , 1CHINT 21H数:OLD1C DD ?MOV WORD PTR OLD1C , BXMOV WORD PTR OLD1C+2 , ESMOV AH , 25H MOV AL , 1CH INT 21H…MOV AX , CS MOV DS,AXMOV DX , OFFSET TIMERPOP DS 6 6. . 中断向量的引导作用中断向量的引导作用 YYXX21H型中断向量4 × 21H用户程序MOV AH,1 INT 21H MOV DL,AL ……NEXT:F寄存器内容堆栈区NEXT的偏移地址NEXT的段基址①XX:YY…21H型服务程序IRETIPCS②③IPCSF④IRET——CPU——CPU响应软件中断的过程响应软件中断的过程中断向量CPU中断硬件中断 (外部中断)软件中断PC机 256种 中断可屏蔽中断非屏蔽中断BIOS中断DOS中断DOS专用中断 DOS保留中断 用户可用DOS中断 用户可开发的中断99. .4 4 系统中断的分类系统中断的分类 CPU中断逻辑CPU中断软件中断(INT n指令)非屏蔽中断请求中断控制系统NMI可屏蔽中断请求INTR系统中断的分类1. CPU1. CPU中断中断 CPU中断是指:CPU执行某些操作而引发的中断,这类中断 使用了0、1、3、4、6、7中断号。
1 1)) 除法错中断除法错中断———— 0 0型中断型中断((2 2)) 单步中断单步中断———— 1 1型中断型中断((3 3)) 断点中断断点中断———— 3 3型中断型中断((4 4)) 溢出中断溢出中断———— 4 4型中断型中断 系统中断的分类2. 2. 软件中断软件中断 执行有定义的INT n指令而引发的中断,称为软件中断软件中断使用05H,10H~FFH中的若干个中断号又分为:(1) BIOS中断BIOS中断,占用了05H、10H~1FH中断号,用户程序执行相关的软中断指令可以调用相应的中断服务程序 INT 05H 屏幕打印; INT 10H 屏幕显示 I/O; INT 11H 设备配置检测; 系统中断的分类INT 12H 测试内存容量; INT 13H 磁盘I/O; INT 14H 串行通信I/O; INT 15H BIOS扩展功能; INT 16H 键盘I/O; INT 17H 打印机I/O; INT 18H 启动PC机ROM BASIC(AT机)无; INT 19H 重新装入引导程序; INT 1AH 实时时钟管理 中断号1DH,1EH,1FH,41H,46H也被BIOS占用了。
但是 ,与这些中断号对应的并不是中断服务程序系统中断的分类(2) DOS中断DOS中断,又分为DOS专用中断,DOS保留中断,用户可调用的 DOS中断以及保留给用户开发的中断 DOS专用中断① 22H型中断② 23H型中断③ 24H型中断④ 28H~3FH型中断系统中断的分类用户可调用的DOS中断 ① 20H型中断② 21H型中断③ 25H型中断④ 26H型中断⑤ 27H型中断用户可开发的DOS中断 DOS保留的中断 系统中断的分类外部硬件中断是由CPU以外的中断请求而引发的如果有多 个中断请求,怎样连接至CPU呢?中断0…中断n中断请求80X86INTR? 8259A99. .5 8259A5 8259A中断控制器中断控制器 1. 8259A1. 8259A的内部结构的内部结构数据 总线 缓冲器D0 ~ D7读/写 逻辑级连/缓冲 比较器CAS1CAS0CAS2SP/ENRD WR A0控制逻辑INTINTA中断 服务 寄存器 (ISR)优先权 电路中断 请求 寄存器 (IRR)IR0 IR1 IR2IR3 IR4 IR5 IR6 IR7中断屏蔽寄存器(IMR)内部总线CS数据 总线 缓冲器D0 ~ D7读/写 逻辑级连/缓冲 比较器CAS1CAS0CAS2SP/ENRD WR A0控制逻辑中断 服务 寄存器 (ISR)优先权 电路中断 请求 寄存器 (IRR)IR0 IR1 IR2IR3 IR4 IR5 IR6 IR7中断屏蔽寄存器(IMR)内部总线CS((1 1)中断请求寄存器)中断请求寄存器 ( ( IRR) IRR) 寄存引脚IR0~IR7的中断请求信号,IRRi位置1,表明IRi引脚上有了中断请 求信号 8259A内部结构2. 2. 中断屏蔽寄存器中断屏蔽寄存器 ( (IMR)IMR) 寄存程序员写入的中断屏蔽字,屏蔽字某位=1(IMRi位=1),则与该位对应的 中断请求信号(IRRi位)就不能送到中断优先权电路。
数据 总线 缓冲器D0 ~ D7读/写 逻辑级连/缓冲 比较器CAS1CAS0CAS2SP/ENRD WR A0控制逻辑中断 服务 寄存器 (ISR)优先权 电路中断 请求 寄存器 (IRR)IR0 IR1 IR2IR3 IR4 IR5 IR6 IR7中断屏蔽寄存器(IMR)内部总线CS8259A内部结构如:MOV AL , 11111100B OUT 屏蔽寄存器口地址,AL;屏蔽IRR7 ~IRR2的请求开放IRR1,IRR0…如: IN AL,屏蔽寄存器口地址AND AL,11110111BOUT 屏蔽寄存器口地址,AL ;开放IRR3的请求;对其它位的请求不改变屏蔽/开放的状态8259A内部结构优 先 权 电 路Q3Q4IR3IR4Q3Q4IMRIRR……......数据 总线 缓冲器D0 ~ D7读/写 逻辑级连/缓冲 比较器CAS1CAS0CAS2SP/ENRD WR A0控制逻辑中断 服务 寄存器 (ISR)优先权 电路中断 请求 寄存器 (IRR)IR0 IR1 IR2IR3 IR4 IR5 IR6 IR7中断屏蔽寄存器(IMR)内部总线CS3. 3. 优先权电路优先权电路 ( (排队电路排队电路) )8259A内部结构②比较CPU正为之服务的中断源。
