《微机原理与应用》第5章中断系统.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:154 大小:8.9MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

《微机原理与应用》第5章中断系统.ppt

《微机原理与应用》第5章中断系统.ppt

预览

免费试读已结束,剩余 144 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《微机原理与接口技术》主讲易凡wdyifan@163.com武汉大学物理学院电子科学与技术系第五章中断系统5.1中断的基本概念中断源能够引发处理器中断的信息源称为中断源。常见的中断源:一般输入/输出设备,如图像管终端,打印机等。数据通道,如磁盘、磁带等。实时时钟,如定时器芯片8253产生的定时中断请求信号。故障信号,如电源掉电等。软件中断,如为调试程序而设置的中断。中断系统系统为实现中断而采用的硬件和软件措施。计算机采用中断系统的目的维持系统的正常工作,提高系统效率。实时处理。为故障处理作准备。中断系统应具备的基本功能对于硬设备的中断请求,要具备屏蔽和开放功能,使得程序员能灵活控制。系统响应中断后,能保护“现场”,并自动转入中断处理。中断处理结束,能自动正确返回断点处。能实现“中断判优”,即中断源优先权排队,当多个中断源同时提出中断请求时,高级别的请求被优先响应。能实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。保护现场是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。断点是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址中断嵌套:当CPU正在进行某一级别中断源的中断处理时,若有更高级别的新中断源发出请求,且新中断源满足响应条件,则CPU应中止当前的中断服务程序,保护此程序的断点和现场,转而响应高级中断。这种多级(重)中断的处理方式称为“嵌套”1000:150H中断嵌套过程示意图5.28086中断系统软件中断软件中断例如MOVAX,2000HADDAX,7000HINTO;2000H+7000H=9000H,溢出:OF=1;因为OF=1,所以产生溢出中断硬件中断可屏蔽中断中断类型码IBM-PC/XT中断类型号的功能分配5.2.2中断处理过程处理过程该过程是在中断子程序中完成,它位于中断子程序之首,主要包括3个部分:保护现场将相关工作寄存器的内容压栈保护;开中断(使IF=1)为了响应高级别的外部中断,则需要打开中断;执行中断服务程序中断子程序的主要部分,完成中断源的任务。返回过程该过程也是在中断子程序中完成,位于子程序的尾部,它主要包括3个部分:关中断(IF=0)使得中断被禁止,可顺利恢复现场。恢复现场将压栈保护的内容顺序出栈给相关寄存器中断返回中断服务子程序的最后是一条中断返回指令IRET,它执行后处理器自动从堆栈中弹出IP、CS和FLAGS的内容,返回主程序继续执行。Y中断响应周期时序中断源优先权NMI中断向量与向量表中断向量表中断向量和中断向量表中断向量表举例处理器执行INT21H之后:FAGS、CS、IP的当前值被压栈保护;CPU从向量表的4×21H~4×21H+3的单元中取得中断向量,并写入IP,CS之中;CPU根据CS:IP值转向21H型中断服务程序。中断程序执行完毕,执行IRET指令,退出中断:CPU从栈顶顺序弹出保护的断点给IP、CS、FLAGS;根据CS:IP返回断点(NEXT:),继续执行主程序。中断向量表的初始化例5.3设置中断向量,其中断服务程序名为INTHANDMOVAX,0MOVES,AX;settobaseofinterruptvectorMOVBX,N﹡4;offsetoftypeNinterruptMOVAX,OFFSETINTHANDMOVES:WORDPTR[BX],AX;setaddrofINTHANDMOVAX,SEGINTHANDMOVES:WORDPTR[BX+2],AXINTHAND:;interruptprocessingroutineIRET用DOS系统功能调用(INT21H)设置中断向量例5.4使用DOS功能调用存取中断向量。MOVAL,N;typeNinterruptMOVAH,35H;getinterruptvectorINT21HPUSHES;savetheoldbaseandPUSHBX;offsetofinterruptNMOVAX,SEGINTHANDMOVDS,AX;baseofINTHANDinDSMOVDX,OFFSETINTHANDMOVAL,N;typeNMOVAH,25H;setinterruptvectorINT21HPOPDX;restoretheoldoffsetPOPDS;andbaseofinterruptMOVAL,N;typeNMOVAH,25H;setinterruptvectorINT21HRET;return