您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > chp7微型计算机中断系统
第7章微型计算机中断系统7.1概述一、中断概念中断就是CPU暂停执行现行的程序,转而处理随机事件,处理完毕后再回到被中断的程序继续执行,这一过程称为中断。中断系统具有以下基本功能:①为了加强中断系统的灵活性,对于各种中断请求,应该具有屏蔽和开放的功能,使得程序员可以灵活控制。②具有“中断级别”的判断和控制功能,即能实现中断源排队。当有多个中断源申请中断时,能根据事先的设定及时响应中断。③能实现中断嵌套,即高级别的中断能中断较低级别的中断。④系统响应中断后,能自动进行中断处理。当中断处理完后能自动返回。中断主要解决的问题1.实现分时操作,解决CPU与外部设备速度上的差异,提高计算机系统的工作效率,达到并行处理的目的。2.处理随机的异常事件,如运算结果溢出、机器故障等。3.实现实时操作,在控制系统中许多信号是随机产生的,只有通过中断系统才能实时的对它们进行处理,避免信息的丢失。8086中断系统8086的中断系统采用向量中断机制能够处理256个中断用中断类型号0~255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理中断源:引发CPU中断的来源称为中断源中断响应:接受中断请求中断向量表:存放中断服务子程序入口地址的内存区域(00000H~003FFH)中断优先权:有多个中断源请求中断时,系统响应中断申请的级别中断屏蔽:由软件设置,使之不能被响应,称为中断屏蔽。二、中断分类非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTn指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源INTA8086中断源内部中断外部中断1.外部中断外部中断是由于CPU外部提出中断请求引起的程序中断,也称为硬件中断。非屏蔽中断:类型号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障可屏蔽中断:类型号来自中断控制器外部通过可屏蔽中断INTR请求,由IF控制是否响应;响应时产生INTA信号可屏蔽中断主要用于与外设交换数据中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF=1执行指令IRET恢复原IF状态2、内部中断内部中断是由于CPU内部执行程序出现异常引起的程序中断,所以又称软件中断。内部中断的中断类型号已定(内部中断是不可屏蔽的)除法错中断:类型号为0指令中断:类型号为n断点中断:类型号为3溢出中断:类型号为4单步中断:类型号为1软件中断由中断指令INT引起的中断由CPU运算错误引起的中断由Debug设置的中断7.2中断处理过程可屏蔽中断处理流程中断过程申请响应处理中断申请当需要CPU中断以处理一些紧急事件,向CPU发出的请求。引发CPU中断的来源称为中断源。中断响应为了及时处理中断,中断系统(或中断装置)定时查询有无中断申请,若有且未屏蔽,则引出处理中断的程序称为该中断被响应。中断处理执行相应的中断处理程序(例行中断服务子程序)。一、CPU响应中断过程CPU响应I/O中断的三个条件:(1)外设提出中断申请(2)本中断位未被屏蔽(3)中断允许NMIN内部中断INTRTF=1中断响应周期读中断类型号下条指令现行指令IF=1NNNNYYYYY中断响应过程(P268)Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序NNY中断响应过程二、8086的中断向量表确定中断源:①查询中断②矢量中断要解决的问题确定中断源找到对应中断处理程序的入口地址1.8086的中断向量表中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8086微处理器从物理地址00000H开始,依次安排各个中断向量。256个中断占用1KB区域,就形成中断向量表类型号为N的中断向量的物理地址=N×419C类型67H中断向量1A050201A200A01A4类型69H中断向量STIPUSHDS::IRET中断处理程序A000:2050INT68HMOVAX,0向量地址=68H×4=1A0HIPCS2050A000中断操作过程例子2.中断向量(中断入口地址)的设置设置中断向量AL=中断类型号DS:DX=中断服务程序入口地址AH=25HINT21H取中断向量AL=中断类型号AH=35HINT21H返回:ES:BX=中断服务程序入口地址方法一:MOVAL,NMOVAH,35HINT21HPUSHES;保存中断向量PUSHBXPUSHDSMOVAX,SEGINTRAD;设置中断向量MOVDS,AXMOVDX,OFFSETINTRADMOVAL,NMOVAH,25HINT21HPOPDS:POPDX;恢复中断向量POPDSMOVAL,NMOVAH,25HINT21H:INTRADPROCFAR:IRETINTRADENDPMOVAX,0MOVES,AXMOVDI,N*4MOVAX,OFFSETINTRADCLDSTOSWMOVAX,SEGINTRADSTOSWSTI:INTRADPROCFAR:IRETINTRADENDP方法二:3.中断类型号(确定中断源)的获取对除法错、单步中断、NMI、断点中断、溢出中断,CPU自动提供中断类型号0~4。对INTn,中断类型号由n确定。对I/O中断(由INTR引脚引入),通过8259获得中断类型号。中断主程序的编写方法1.主程序中的初始化.(1)设置中断向量。(2)设置8259A的中断屏蔽寄存器的中断屏蔽位。(3)设置CPU中断允许位标志IF(开中断STl)。2.硬件(外设接口)和CPU自动完成(1)外设接口向CPU的INTR端发中断请求。(2)当前指令执行完后,CPU发两个中断响应信号INTA给外设接口。(3)CPU取中断类型号n。(4)CPU自动将当前PSW、CS、IP内容入栈保护。(5)清除IF、TF,禁止外部中断和单步中断。(6)从中断向量表中取(4×n)地址中内容→IP,取(4×n+2)地址中内容→CS。(7)转向中断服务子程序。注意:(1)对重复前缀的指令(如REPMOVSB)作为一条指令处理。执行一次重复前缀和串指令即可响应中断,而不是把串操作全部执行完。(2)遇到开中断指令STI和中断返回指令IRET,要在这两条指令执行完后,再执行一条指令才能响应中断。(3)CPU自动清除IF及TF位,使CPU进入中断服务程序后,不允许再产生新的中断,如果在中断服务程序中还允许外部中断进入,则在中断服务程序中必须再开中断。三、中断服务子程序中断服务子程序的结构形式:1.保护现场2.开中断,IF=1,允许中断嵌套3.执行中断处理程序4.关中断,IF=0,禁止其他中断请求进入5.发中断结束命令EOI6.恢复现场7.中断返回IRET内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP保护完现场后要用开中断指令STI置IF=1恢复现场前要用关中断指令CLI置IF=0最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INTn指令调用中断服务程序例:内部中断服务程序编写80H号中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能调用INT21H的2号模块字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数intoffdw?intsegdw?intmsgdb‘AInstructionInterrupt!’db0dh,0ah,0::moval,80h:movah,35h;保存中断向量int21hmovintoff,bx;保存偏移地址movintseg,es;保存段基地址pushdsmovdx,offsetnew80h;设置中断向量movax,segnew80hmovds,axmovax,2580hint21hpopdsmovdx,offsetintmsgint80h;调用中断服务程序movdx,intoffmovax,intsegmovds,axmovax,2580hint21hmovax,4c00hint21h::例:编写中断处理程序,要求主程序运行时,每10秒响铃一次,同时屏幕上显示信息“Thebellisring!”(P274)可以利用中断类型1CH进行处理,因为系统定时器(中断类型8)的中断处理程序中,时钟中断一次(约18.2次/秒)要调用一次INT1CH。在ROMBIOS中,1CH的处理程序只有一条IRET指令,仅为用户提供一个中断类型号。这样可以利用系统定时器的中断间隔,将用户设计的程序来代替原有的INT1CH程序。在编写程序时,有两个部分的工作:l.在主程序初始化部分,先保存当前中断向量表内容,再置新的中断向量。2.在主程序结束部分恢复保存的1CH向量。外部中断服务程序DATASEGMENTCOUNTDW1MESSDB‘Thebellisring!’,0AH,0DH,‘$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAL,1CHMOVAH,35H;得到原中断向量INT21HPUSHES;存储原中断向量PUSHBXPUSHDSMOVDX,OFFSETRING;中断子程序RING的偏移地址和段地址MOVAX,SEGRINGMOVDS,AXMOVAL,1CH;设置中断向量MOVAH,25HINT21HPOPDSINAL,21H;设置中断屏蔽位,21H为8259中断屏蔽寄存器端口地址ANDAL,0FEHOUT21H,ALSTI;开中断MOVDI,2000;延迟DELAY:MOVSI,3000;等待中断DELAY1:DECSIJNZDELAY1DECDIJNZDELAYPOPDX;取原中断向量POPDSMOVAL,1CHMOVAH,25HINT21HRETMAINENDPCODEENDSD0~D7第一个INTA周期T1T2T3T4ALECLK第二个INTA周期T1T2T3T4INTALOCKn中断响应总线周期时序图中断类型号四、中断响应时序执行一条指令中断?关中断保护现场屏蔽本级和低级中断开中断中断服务程序关中断恢复现场返回取下一条指令否是多个中断源中断流程图7.3中断优先级和中断嵌套一、中断优先级IBMPC机优先级内部中断除法错中断指令中断溢出中断不可屏蔽中断可屏蔽中断单步中断高低1.软件查询中断优先级A0~A15锁存器INTR三态缓冲器译码8001HD0~D7中断0中断1中断2……IOR中断查询接口:MOVDX,8001HINAL,DXTESTAL,80HJNZSEV0TESTAL,40HJNZSEV1TESTAL,20HJNZSEV2TESTAL,10HJNZSEV3TESTAL,08HJNZSEV4:菊花链优先查询法2.硬件查询优先方式-菊花链法中断请求寄存器中断屏蔽寄存器IR0IR7优先级管理逻辑中断服务寄存器中断类型寄存器由中断源提供3.矢量中断优先级8253定时器键盘未用异步通信卡(辅)异步通信卡(主)硬盘软盘并行打印机21H二、中断嵌套IR0IR1IR2IR3IR4IR5IR6IR7高低7.4可编程中断控制器8259A一、功能Intel8259A是可编程中断控制器PIC8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断类型号8259A设计有多种工作方式,可通过编程选择二、8259A的内部结构D7~D
本文标题:chp7微型计算机中断系统
链接地址:https://www.777doc.com/doc-3881448 .html