资源预览内容
第1页 / 共96页
第2页 / 共96页
第3页 / 共96页
第4页 / 共96页
第5页 / 共96页
第6页 / 共96页
第7页 / 共96页
第8页 / 共96页
第9页 / 共96页
第10页 / 共96页
亲,该文档总共96页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
6.4 中断技术 中断基本概念 中断的一般过程 8086/8088中断系统 8259介绍一、中断基本概念 1.实现CPU 与外设的并行工作,提高了 CPU 的效率。NYREADY?输入状态信息输入数据查询方式的数据输入 中断方式的数据输入外设请求 中断 INTR有效主程序中断服务程序输入 数据外设准备数据所谓中断,是指这样一个过程:当CPU正在执行程序过程中,由于某一突然事件的发生,暂时中止正在执行的程序,转去处理突然发生的事件(执行中断服务程序),处理完毕,再返回原来被中止的程序继续运行。中断申请主程序中断服 务程序返 回中断示意图2 中断定义 引起CPU中断的事件中断源。例如: w 数据传送请求输入输出数据,报告故障等 w 事故处理掉电、硬件故障、软件错误、非法操作 、定时时间到等 中断源分为:外部中断、内部中断 w 内部中断:CPU内部执行程序时自身产生的中断 w 外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMI w INTR可屏蔽中断请求,高电平有效,受IF标志的 控制。IF=1时,执行完当前指令后CPU对它作出响应 。 w NMI非屏蔽中断请求,上升沿有效,任何时候 CPU都要响应此中断请求信号。中断类型(回顾)二、中断过程 五个步骤: w 中断请求 w 中断判优(有时还要进行中断源识别)w 中断响应 w 中断服务 w 中断返回以下以外部中断为主介绍这五个步骤。1)中断请求外设接口(中断源)发出中断请求信号,送到CPU 的INTR或NMI引脚;中断请求信号:边沿请求,电平请求 例如,NMI为边沿请求,INTR为电平请求 中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。2.1)中断源识别计算机中的中断源有很多,CPU必须识别是 哪一个设备产生中断。识别中断源有两个方 法:1、软件查询(查询中断)。IN ALIPORT;从输入接口取中断信息 TEST AL,80H;是0号设备请求吗? JNZ SEVO;是,转0号设备服务程序 TEST AL40H;否,是1号设备请求吗? JNZ SEVl;是,转1号设备服务程序 TEST AL20H;否,是2号设备请求吗? JNZ SEV2;是,转2号设备服务程序 TEST AL10H;否,是3号设备请求吗? JNZ SEV3;是,转3号设备服务程序条件传送查询中断?查询中断没有浪费CPU资源缺点:低级别的中断反映慢!(二)、矢量中断 中断申请信号 INTR和中断响应信 号INTA是一对握手 信号。要求外设提 供中断类型号。中断矢量8086/8088使用INTA的第二个总线 周期读入中断矢量 。教材图6-22矢量中断 CSTINTA信号2.2)中断判优多个中断源产生中断,CPU首先为谁服务? 中断优先级排队问题。 中断优先级的控制方法 硬件判优链式判优、并行判优(中断向量法 ) 软件判优顺序查询中断请求,先查询的先服 务(即先查询的优先级别高) 通常将中断判优与中断源识别合并在一起进行处理 。 x86系统中,这项任务由PIC8259和CPU共同完 成。链式判优电路原理图(教材图6.18) INTAinCPUINTAINTR外设1外设2外设接口1菊花链 逻辑电路外设接口2外设3外设接口31菊花链 逻辑电路菊花链 逻辑电路IREQIREQIREQ中断确认INTAinINTAin中断确认中断确认菊花链逻辑电路INTAinIREQINTR&=11 INTAoutDB三态门中 断 向 量 码E外设接口中断确认菊花链 逻辑电路3)中断响应在每条指令的最后一个时钟周期,CPU检测 INTR或NMI信号。若以下条件成立,则CPU 响应中断: 对INTR,CPU被允许中断,即IF=1; 当前指令执行完。对INTR,还应满足以下条件 当前指令是STI和IRET,则下条指令也要执行完。 无总线请求。 (HOLD)信号和复位(RESET) 。-若NMI和 INTR 同时发生,则首先响应NMI。响应中断的条件3)中断响应(续)CPU中断响应时,要做下述五项工作: 向中断源发出INTA中断响应信号;获得向量。 硬件现场保护PSW(FLAGS) 关中断IF=0; 断点保护和CS、IP。这主要是保证中断结束后 能返回被中断的程序。 获得中断服务程序首地址(入口)。 如何得到中断处理程序的首地址? 固定入口法-单片机 中断向量法常用4)中断处理(中断服务)中断服务子程序特点 为”远”过程或“过程”(类型为FAR或NEAR) 要用IRET指令返回 中断服务子程序要做的工作 保护现场(PUSH regs) 开中断(STI) 进行中断处理 关中断(CLI) 恢复现场(POP regs) 中断返回(IRET) push ax;1、保护现场 push bx sti;2、开中断 ;3、中断处理 cli;4、关中断 pop bx;5、恢复现场 pop ax sti;6、开中断和中断返回 iretInt_48H PROC FAR5)中断返回执行中断返回指令IRET IRET指令将使CPU把堆栈内保存的断点信息弹 出到IP、CS和FLAG中,保证被中断的程序从断 点处能够继续往下执行。IPL IPH CSL CSH FLAGL FLAGHSPIPL IPH CSL CSH FLAGL FLAGH SPIPCSFLAG进入中 断服务 程序时中断返回后三、8086中断系统INT n 指令 中断逻辑非屏蔽中断请求中断 控制系统 (8259A)断点INTO 指令单步 中断除数为 0中断 可屏蔽 中断请求NMI INTR硬件中断软件中断1、中断类型8086能 处理256种中断,分为两大 类:外部中断 和内部中断。 其中断分类如 右图8086的中断分类0124与中断有关的控制线为:NMI、INTR、INTA# 8088系统的中断源 内部中断 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生 。 单步中断:类型号1,TF=1时产生(当前指令需执行完) 断点中断:类型号3,这是一个软件中断,即INT 3指令。 溢出中断:类型号4,这是一个软件中断,即INTO指令。 软件中断:即INT n指令,类型号n(0-32)。 外部中断 非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它 。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。n8088系统采用中断类型码来识别不同的 中断源,每个中断源都有一个与它相对应 的中断类型码 。n溢出、断点、除法溢出、单步、非屏蔽中 断的类型码为固定值n软件中断的类型码由指令给出n可屏蔽中断的类型码由8259给出中断矢量的获取?w 外部中断和 INT n 之间的关系结合中断指令INT n,我们可以这样理 解外部中断:当外部中断源发中断给CPU时 ,如果CPU满足一定的条件,处于开中断状 态,CPU就可以响应中断,这时外设在CPU 正在执行指令与其下一个指令之间,等效 “插入”了一个INT n指令,这里的n就是 外设提供的中断类型号。中断服务程序调试非常简单!1、内部中断可以预测(除法中断除外)、内部中断不受IF的影响、内部中断不需要执行从外部获得矢量2、中断向量表:中断服务子程序的入口地址从00000H到003FFH区 域,大小为1K空间,共 256个中断向量。每个入口地址占用4个 字节,低字为段内偏移 ,高字为段基址根据中断类型号获得 中断服务程序入口 4n 。中断向量统一管理中断类型号和中断服务子程序的入口地 址之间的关系:例 INT 12H在中断矢量表中的物理地址?INT 8中断服务程序首地址在中断矢量表中的物理地址 ?48H 20H中断向量表的初始化初始化将中断服务程序的入口地址放入 向量表例:中断类型码为48H的中断处理子程序的 名字为int48h,编写程序段将该中断处理子程 序的入口地址放入向量表。若外设的中断类型号为6BH,设中断服务程序段 地址是1000H,偏移地址为2000H。设置中断向 量表CLIMOV AX,,0MOV DS,AX;置数据段段基地址为0MOV AX,2000HMOV 6BH*4, AX;对偏移地址为01AC的单元 MOV AX1000H;送双字 MOV 6BH*4+2l, AX STI例1 若外设的中断类型号为6BH,则此中断类 型号对应的中断矢量表地址为从00lACH开始的 四个存储单元设中断服务程序段地址是 1000H,偏移地址为2000H。 中断向量表的初始化CLIMOV AX,0MOV DS,AXMOV SI,48H*4MOV AX,OFFSET int48hMOV SI,AXMOV AX,SEG int48hMOV SI+2,AXSTI、8086/8088 CPU的中断响应过程 内部中断响应过程 无INTA#周期 中断类型码固定或由指令给出 响应过程主要步骤: PUSH FLAG IF=0 PUSH CS、PUSH IP 取中断向量送入IP和CS中断响应过程(续)外部中断响应过程 非屏蔽中断,与内部中断响应过程类似 可屏蔽中断(时序见教材图6.24) INTA#(1),PIC进行优先级排队判优处理INTA#(2),PIC把中断类型码放到DB上,CPU读入 PUSH FLAG IF=0 PUSH CS、 PUSH IP 取中断向量送入IP和CS与内部中断一样8088系统中各中断的优先级优先级从高到低顺序如下: 内部中断 NMI INTR单步中断8086/8088的中断响应过程完成当前指令内部中断NMIINTRTF=1执行下一条指令IF=1响应中断 读类型码标志入栈调服务程序CS、IP入栈IF、TF=0令TEMP=TF又有NMITEMP=1执行服务程序CS、IP出栈标志出栈返回被中断程序YNNNNYYYYNNYYN 单步O1 I1O2 I2O3 I3O4 I4 #E1 K0GG2AG2B C B A+74LS244D0 Q0| Q1 D7 Q2Q3Q4 CP Q5 Q6Q7a b c d e f g DP74068个 反相器74LS273Rx8+74LS138D0D7IOW#IOR#Y0Y1&+A7A4A15A8A3 A2 A1 A0D0D1D2D3译码电路+5V7 4 L S 2 4 5D QCLK RDA7 A6 A5 A4 A3 A2 A1 A0+5V中断申请接CPU的D7D0INTAINTR当开关的状态为闭合时,在数码管显示“0”;当开关 为打开时,数码管显示“1”。查询方式相应程序段如下:NEST:MOV DX, 0F1H;状态接口的地址为F1H INAL, DX;读入开关状态 TEST AL, 01 ;测试位 MOV AL, 06HJz DISP;断开显示1 MOV AL, 3FH ;闭合显示0 DISP:MOV DX, 0F0H;数据接口的地址为F0H OUTDX, AL JMPNEST当开关的状态为闭合时,在数码管显示“0”;当开关 为打开时,数码管显示“1”。查询方式相应程序段如下:读取输入口D0状态打开输出 “1” 闭合输出 “0”当开关的状态为闭合时,在数码管显示“0”;当开关 为打开时,数码管显示“1”。中断方式相应程序段如下:读取输入口D0状态打开输出 “1”闭合输出 “0”IRET当开关的状态为闭合时,在数码管显示“0”;当开关 为打开时,数码管显示“1”。中断方式相应服务程序段如下: INT1 PRO NEARMOV AL,3FHMOV DX,0F0HOUT DX,AL LOP: MOV DX, 0F1H;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号