资源预览内容
第1页 / 共153页
第2页 / 共153页
第3页 / 共153页
第4页 / 共153页
第5页 / 共153页
第6页 / 共153页
第7页 / 共153页
第8页 / 共153页
第9页 / 共153页
第10页 / 共153页
亲,该文档总共153页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,中断技术,中断是计算机中一个重要且实用的技术。 采用中断技术主要为解决两个问题: 1. 在输入输出过程中,解决快速的CPU与慢速 的外设之间速度不匹配的问题,实现CPU与外设 并行工作,提高CPU的利用率。 2. 确保CPU在运行过程中具有实时响应和处理随机事件的能力。,2,中断实例,每按一下键盘,就产生一个键盘中断,CPU就要停下手边的工作来处理,记录下来哪个键被按下了,如果按下这个键要对应某一个操作,就赶快先做这个操作,做完之后,才恢复刚才的工作。对于接在串口上的MODEM也是一样,从电话线上传来数据了,这个串口就会产生一个中断,CPU就要停下来,先将数据收下来,放到一个安全的地方。我们能够一边写文章,一边从网上下载数据,就全靠中断的正常工作。,3,第3章 中断技术,3.1 中断及中断处理过程 3.2 中断优先权 3.3 8086中断系统 3.4 可编程中断控制器8259A 3.5 中断程序设计,4,3.1 中断及中断处理过程,3.1.1 中断源及分类 3.1.2 中断处理过程,5,CPU在正常执行程序的过程中,由于某些事件(外部或内部)发生,引起CPU暂时中止当前程序的执行,而转去执行一段特殊程序(称中断服务子程序),以处理该事件。该事件处理完后,再返回原被中断的程序继续执行。,一、中断,断点,3.1.1 中断源及分类,6,7,中断源:能够向CPU发出中断请求的设备或事件。 1. 外部中断源 一般的I/O设备,如显示器、打印机、键盘等。 数据通道中断源,如磁盘直接与内存交换数据所要求的中断。 实时时钟,如外部所需的定时电路等 计算机内部故障引起的中断,如电源掉电、存储出错等。,二、中断源,3.1.1 中断源及分类,8,2. 内部中断源 CPU指令执行异常。如运算结果溢出、除法错等。 在程序调试过程中由程序员所设置的中断。如单步中断、软中断指令INT n等。,微机系统中,中断分为内部中断和外部中断两大类。,3.1.1 中断源及分类,9,中断系统应具有以下功能: 1. 能实现中断响应、中断服务和中断返回 2. 能实现中断优先级排队 3. 能实现中断嵌套,3.1.1 中断源及分类,10,3.1.2 中断处理过程,一个完整的中断处理过程包括: 1. 中断请求 2. 中断优先级的判别(中断判优) 3. 中断响应 4. 中断处理 5. 中断返回,11,中断请求,中断响应,中断处理,中断返回(断点恢复),注意:中断过程由硬件和软件共同实现的。,识别中断源 禁止中断 保护断点并 进入中断子程序,保护现场 (开启中断以实现中断嵌套 STI) 中断服务 (关中断 CLI) 恢复现场,中断判优,3.1.2 中断处理过程,12,确定中断优先级的方法 1. 软件排优:由硬件电路和软件查询程序配合起来才能实现优先级的排队。各中断源的优先权由软件安排,与硬件关系不大。 2. 硬件排优:用专门的硬件电路或中断控制器对各中断源的优先权进行安排。如菊花链电路、可编程中断控制器 (如8259A),3.2 中断优先权,13,3.3 80X86中断系统,中断类型码,14,3.3 80X86中断系统,3.3.1 80X86中断结构,80X86中断结构图,外部硬件设备引起的中断,又称硬件中断。,又称软件中断CPU根据软件的某些指令或者软件对标志寄存器某个标志位的设置而产生的,与外部中断电路完全无关。,15,8086的中断源分类,一、外部中断 8086CPU提供两条引脚 INTR、NMI 接受中断请求信号 从NMI引脚进入的中断非屏蔽中断 从INTR引脚进入的中断可屏蔽中断,16,1. 非屏蔽中断(NMI中断) 中断类型码 2 上升沿触发申请中断 不受中断允许标志IF的控制与影响(即不可屏蔽),一旦NMI引脚出现中断请求,CPU在当前指令执行完后,必须立即响应。 由计算机内部硬件出错而引发,一般用于处理紧急事件。如:PC机中内存奇偶校验出错和系统主要故障(如电源断电等)。,8086 CPU,NMI,8086的中断源分类,17,2.可屏蔽中断(INTR中断) 外设申请的中断 电平触发 受中断允许标志IF控制,8086 CPU,INTR,INTA,8086的中断源分类,IF = 1 (STI),开中断,允许响应INTR中断 IF = 0 ( CLI ) ,关中断,禁止响应INTR中断,当外设对CPU有服务请求,会向INTR发来一个高电平信号,并且IF=1时,CPU在当前指令执行完后,响应可屏蔽中断。,18,8086CPU只有一个可屏蔽中断请求输入引脚,8086中断系统设计中断控制器(8259A)管理各种外设提出的中断请求。所有外设的中断请求信号都可送至8259A的中断请求输入端IRQ0 IRQ7任何一个,8259A选择其中优先级最高的中断请求,送至CPU的INTR引脚,向CPU申请可屏蔽中断。 可屏蔽中断源的中断类型码由8259A提供。,8259A可对多个可屏蔽中断源进行优先级控制,一片8259A可管理8级可屏蔽中断。,19,286以上系统使用两片8259A级联管理15级可屏蔽中断。比较常见的分配方式: IRQ0 系统定时器 IRQ1 键盘 IRQ2 可编程中断控制器8259A IRQ3 COM2(串口) IRQ4 COM1(串口) IRQ6 软盘控制器 IRQ7 并行口LPT1 IRQ8 系统CMOS/实时钟 IRQ12 PS/2鼠标 IRQ13 数学协处理器 IRQ14 第一IDE控制器(硬盘) IRQ15 第二IDE控制器 (CDROM) IRQ5 可用 (如声卡) IRQ9 可用 (如网卡) IRQ10 可用 (如USB) IRQ11 可用 (如SCSI主适配器),PC机 外部中断 分配,可以给用户的新添设备使用,系统 隐含,要想计算机正常工作,必须把中断合理分配给外设,让它们没有冲突。 Win98以上的操作系统已支持PNP “即插即用”技术,它可以将中断进行自动分配,简化用户操作。,20,二、内部中断 不需要外部硬件支持,不受中断标志IF的影响,中断类型码或包含在指令中,或预先规定。 8086/8088内部中断有以下5种: 除法出错中断 断点中断 单步中断 溢出中断 软件中断,8086的中断源分类,21,8086的中断源分类,1. 除法出错中断 类型码0,CPU执行除法指令时,除数为0或商溢出(超出规定范围,寄存器不能存放)时产生。,2.溢出中断 类型码4,执行INTO指令,且OF=1时产生。常放在带符号数加减指令后,可对溢出及时告警。,22,8086的中断源分类,3. 断点中断 类型码3,执行指令INT 3时产生。用于程序调试时设置断点。,利用断点中断的中断处理程序可进行某些特殊处理,如显示有关寄存器或存储单元内容。断点中断也是一种调试程序的方法。,23,8086的中断源分类,4.单步中断 类型码1,TF=1时产生(当前指令需执行完)。用于调试程序,跟踪程序执行过程。,单步中断的中断处理程序可显示CPU执行完当前指令后,各个寄存器及有关存储单元内容。利用单步中断可一条一条指令地跟踪程序的流程,观察CPU执行指令后,各个寄存器及有关存储单元内容的变化,从而指出和确定程序出错的地方和产生错误的原因。单步中断是一种调试程序的方法,用T命令也可实现。,24,8086的中断源分类,说明: 1. 处理中断时,CPU把标志寄存器压栈,清除TF和IF。当CPU进入单步处理程序时,不再处于单步工作方式,单步工作方式结束时,恢复原标志,CPU返回单步方式。 2. 80X86中没有设置或清除TF的指令。 PUSHF POP AX OR AX,0100H PUSH AX POPF,25,8086的中断源分类,5. 软中断 由设置在程序中的INT n指令产生( n 类型码) PC机中,用不同类型码编成标准中断服务子程序,用户可使用INT n调用。因此软件中断相当于调用子程序。 主要用于实现ROM BIOS中断、DOS中断调用、用户自定义中断。,26,内部中断 (除法错中断、溢出中断、断点中断、软件中断) NMI中断 INTR中断 单步中断,8086中断源优先级顺序,优先级由高 至低,对同时产生的中断: 首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理; 对非同时产生的中断: 允许低优先级别的中断处理程序被高优先级别的中断源所中断中断嵌套。,27,3.3.2 中断向量表,中断向量 中断服务程序的入口地址。,段地址和偏移地址,每个中断处理程序都有一个唯一的中断向量。,INT_PROC PROC PUSH DX PUSH AX IRET INT_PROC ENDP,INC_PROC,PUSH DX,PUSH AX,IRET,中断服务程序,入口地址,28,在内存的00000H003FFH地址范围内,大小为1KB。,3.3.2 中断向量表IVT,按中断类型码从小到大顺序依次存放各类中断(256种)的中断向量(中断服务程序入口地址)。,每个中断向量占用4 Bytes,低字为段内偏移地址(IP),高字为段基址(CS)。,中断类型码与中断向量地址的关系: 设某类中断的中断类型码为n 中断向量在IVT中的存放地址(向量地址)4n,29,IP,中断类型码与中断向量所在位置(中断向量地址指针)之间的对应关系为: 中断向量地址指针=4*中断类型码,30,4 n 向量地址,CPU获得中断类型码后,如何转去执行相应 的中断服务程序?,入口地址的偏移地址,入口地址的段基址, IP, CS,假设CPU响应中断类型码为 n 的中断,由于所有中断服务程序的入口地址都放在中断向量表中,首先需将类型码转换为向量地址,即可转入相应中断服务程序执行。, 查表取得中断向量 字单元(4 n,4 n + 1) 字单元(4 n + 2,4 n + 3),3.3.2 中断向量表,例、 某系统中键盘中断的类型码为 09H ,试问其对应中断服务程序的入口地址?,1)中断向量的存放地址 由 4 n = 4 9 = 36 = 24 H 知 中断向量存放在 存储器中 从0000:0024H开始的4个单元中, 即0024H 0027H单元。, IP, CS,2)由右图知 键盘中断的中断处理程序的 入口地址为,4030 :2010 H,即可转入键盘中断服务程序执行。,32,CPU获取中断类型码的方法,外部INTR中断 8259A提供 内部中断(除法出错、单步中断、溢出中断、断点中断)、外部NMI中断 其中断类型码是固定值,由系统直接通过内部硬件电路自动提供。 软中断 INT n 中断类型码n在指令INT n的机器码中提供,33,3.3.3 中断向量表的建立,INT_TBL SEGMENT AT 0 ORG N*4 DD INT_ICE INT_TBL ENDS MCMODE SEGMENT ; 主程序 INT_ICE PROC FAR ;中断服务程序 IRET,AT 表达式本逻辑段根据表达式求值的结果定位段基址。 AT 8A00H:表示本段的段基址为8A00H,ORG指定偏移地址,1. 绝对地址装入,34,2. 使用串指令装入 CLI ;禁止中断 MOV AX,0 MOV ES,AX MOV DI,4*N ;置矢量表段地址 MOV AX,OFFSET INT_ICE ;置矢量表偏移地址 CLD STOSW MOV AX,SEG INT_ICE ;中断服务程序段地址 STOSW STI,3.3.3 中断向量表的建立,35,3. 使用DOS调用 利用DOS中21H中断的25H号功能设置中断向量 要求: 入口参数
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号