第3章-1中断及中断处理过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3-1中断及中断处理过程所谓中断是指某事件的发生引起CPU暂停当前程序的运行,转入对所发生事件的处理,处理结束又回到原程序被打断处接着执行这样一个过程。3-1中断及中断处理过程中断源分类1、外中断源2、内部中断源I/O设备数据通道实时钟故障源CPU执行指令产生的异常执行INT软件中断指令1、外部中断2、内部中断软件中断没有随机性,类似于普通子程序的调用硬件中断具有随机性分为可屏蔽中断与不可屏蔽中断两种中断分类3.1.2中断处理过程中断请求—→中断优先级判定—→中断响应—→中断处理—→中断返回1、中断请求2、中断优先级判定多中断请求的优先级判定实现多层中断嵌套①信号形式应满足CPU要求。②中断请求信号应被有效地记录,以便CPU能够检测到它。③一旦CPU对某中断源的请求提供了服务,则该中断源的请求信号应及时撤消。3.1.2中断处理过程3、中断响应获得中断类型号保护状态标志屏蔽新的INTR中断和单步中断保存断点信息根据中断类型,获得中断服务程序的入口地址进入中断服务程序CPU状态字中IF=1,开中断;IF=0,关中断CPU复位,IF=0,TF=0;用STI开中断,CLI关中断CPU响应中断后,自动实现关中断,若要实现中断嵌套,在中断服务程序中要用STI开中断图1微机系统中实现中断的基本模型中断事件(中断源)中断源1请求中断源1响应……中断源n响应中断源n请求中断优先级控制逻辑中断控制逻辑中断请求中断响应CPU图2有中断产生的情况下CPU运行程序的轨迹CPU正在执行的程序CPU响应中断中断结束中断断点中断事件发生中断事件处理程序3.1.2中断处理过程4、中断处理保护现场开中断中断服务关中断恢复现场中断处理程序中,最后应有IRET指令恢复断点信息恢复标志寄存器FR4、中断返回3.2中断优先权主程序中断源5处理程序中断源3请求中断源3处理程序中断源1请求中断源1处理程序返回返回返回中断源5请求(假设中断源1~n的优先级为从高到低)①软件查询。②硬件链式优先级排队电路。③硬件优先级编码比较电路。④利用可编程中断控制器。D0~D7D0~D7中断请求输入接口≥1INTRCPU……中断源1中断源2中断源n(a)(b)中断服务程序断点保护中断源1请求?中断源2请求?…中断源n请求?断点恢复中断返回对中断源1服务对中断源2服务对中断源n服务查询中断源YYNYNN3.2.1软件查询3.2.2硬件排优2可编程中断控制器中断优先权管理电路中断请求锁存器中断类型寄存器中断屏蔽寄存器当前中断服务寄存器3.380X86中断系统3.3.1中断结构8086(88)中断系统可以容纳最多256个中断源,所有中断源统一编码,每个中断源用一个字节型编码标识,它是CPU识别中断源的标记。256个中断源分为两大类:(1)内部中断由CPU内部事件及执行软中断指令产生。已定义的内部中断有:①除法错中断,0型中断。②单步中断,1型中断③断点中断,3型中断,用于调试插入断点。④溢出中断,4型中断,INTO指令。⑤指令中断,INTn指令①中断在处理过程中,CPU自动将标志FR入栈,然后清TF和IF②IF的值可以通过指令STI和指令CLI改变③没有直接改变TF值的指令,需要编程PUSHFPOPAXORAX,0100HPUSHAXPOPFOFDFIFTFSFZFAFPFCFFR:注意:(2)外部中断3.3.1中断结构由外部中断源产生对CPU的请求而引发的。8086(88)中断系统将外部中断源又分为两种。①非屏蔽中断。②可屏蔽中断2型中断。当NMI引脚出现上升沿触发,表示有非屏蔽中断请求信号的有效高电平应持续2个时钟周期以上用来处理系统突发事件当INTR引脚出现高电平,表示有可屏蔽中断请求只有在IF=1时,CPU才响应此中断CPU响应后,会执行两个响应周期,分别送两个INTA负脉冲信号,以获得该中断源的中断类型码3.3.2中断向量表中断向量:中断服务程序的入口地址。8086(88)在内存的最低1K字节建了一个中断向量表,用以存放256个中断类型的中断向量(中断服务程序的地址)存放方法:每个中断向量占4个字节,前2个字节是IP,后两个字节是CS。按中断向量码的序号排列.图7中断向量表CSIP…CSIP…CSIPCSIPCSIPCSIPCS段地址IP偏移地址CS段地址IP偏移地址3FFH3FCH084H080H018H014H010H00CH008H004H000Hn=255n=5溢出中断n=4断点中断n=3NMIn=2单步中断n=1除法错中断n=0用户使用系统使用中断向量地址指针中断向量地址指针=4×中断类型码如:中断类型码为20H的中断向量,存放在0000:0080H开始的四个单元中。1、绝对地址置入2、使用串指令置入3.3.3中断向量表的建立中断服务程序的入口地址该怎么置入中断向量表中?INT-TBLSEGMENTAT0ORGn×4DDINT-VCEINT-TBLENDSINT-VCEPROCFARIRET……CLIMOVAX,0MOVES,0;置向量表段地址MOVDI,n*4;置向量表偏移地址MOVAX,OFFSETINT-VCE;置中断服务程序偏移地址CLD;清除方向标志STOSWMOVAX,SEGINT-VCE;置中断服务程序段地址STOSWSTI3.3.3中断向量表的建立3、使用DOS系统功能调用INT21H1)使用25H功能系统功能调用:a)把调用号放入AH中,设置入口参数b)执行INT21H25H功能:根据中断号更新中断服务程序的入口地址a)AL=中断号b)DS:DX=中断服务程序新的入口地址的段、偏移地址PUSHDSMOVDX,SEGINT60H;置中断服务程序段地址MOVDS,DXMOVDX,OFFSETINT60H;置中断服务程序偏移地址MOVAL,60HMOVAH,25HINT21HPOPDS35H功能:查询指定中断号的中断服务程序入口地址a)AL=中断号b)执行INT21H后入口地址的段地址放在ES中,偏移地址放在BX中c)可利用35H功能,在更新中断服务程序入口之前,保存原有的中断服务程序入口地址2)使用35H功能3.3.3中断向量表的建立3、使用DOS系统功能调用INT21HMOVAH,35H;功能号置AHMOVAL,0;中断类型号置ALINT21HMOVINTOSEG,ES;保存原中断服务程序段基址MOVINTOFF,BX;保存原中断服务程序偏移基址4、直接装入法1、各类中断的优先权3.3.4中断响应过程除法出错中断溢出中断INTn中断NMIINTR中断单步中断取指令执行当前指令执行完否有内部中断?有NMI?有INTR?有单步中断?NIF=1TF=1中断响应过程YYYYYNNYNNNNY图6中断响应时CPU查询中断源的顺序2、内部中断响应过程3.3.4中断响应过程获得中断类型号保护状态标志屏蔽新的INTR中断和单步中断保存断点信息根据中断类型,获得中断服务程序的入口地址进入中断服务程序CPU无需执行响应周期去获取中断类型码除单步中断外,内部中断无法用软件禁止内部中断没有随机性3、外部中断响应过程3.3.4中断响应过程响应过程同内部中断1)非屏蔽中断响应过程2)可屏蔽中断响应过程不同点在于:需要两个响应周期,获取中断类型码3、外部中断响应过程3.3.4中断响应过程执行两个中断响应周期,获取中断类型号执行一个写总线周期,FR入栈,同时清IF、TF执行两个写总线周期,断点地址入栈执行两个读总线周期,将中断服务程序地址送到IP、CS外部中断响应一共需要7个总线周期图5中断响应过程第2个INTA周期(从D0~D7读中断向量码n)第1个INTA周期中断请求可屏蔽中断(INTR)非屏蔽中断(NMI)内部中断(INT)FLAGS→((SP)-1)((SP)-2)(CS)→((SP)-3)((SP)-4)(IP)→((SP)-5)((SP)-6)(SP)-6→SP0→IF0→TF(4n)(4n+1)→IP(4n+2)(4n+3)→CS中断处理

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功