预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共154页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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

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

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

《微机原理与接口技术》主讲易凡wdyifan@163.com武汉大学物理学院电子科学与技术系第五章中断系统5.1中断的基本概念中断源 能够引发处理器中断的信息源称为中断源。 常见的中断源: 一般输入/输出设备,如图像管终端,打印机等。 数据通道,如磁盘、磁带等。 实时时钟,如定时器芯片8253产生的定时中断请求信号。 故障信号,如电源掉电等。 软件中断,如为调试程序而设置的中断。中断系统 系统为实现中断而采用的硬件和软件措施。 计算机采用中断系统的目的 维持系统的正常工作,提高系统效率。 实时处理。 为故障处理作准备。中断系统应具备的基本功能 对于硬设备的中断请求,要具备屏蔽和开放功能,使得程序员能灵活控制。 系统响应中断后,能保护“现场”,并自动转入中断处理。中断处理结束,能自动正确返回断点处。 能实现“中断判优”,即中断源优先权排队,当多个中断源同时提出中断请求时,高级别的请求被优先响应。 能实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。保护现场 是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。 断点 是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址 中断嵌套: 当CPU正在进行某一级别中断源的中断处理时,若有更高级别的新中断源发出请求,且新中断源满足响应条件,则CPU应中止当前的中断服务程序,保护此程序的断点和现场,转而响应高级中断。这种多级(重)中断的处理方式称为“嵌套”1000:150H中断嵌套过程示意图5.2 8086中断系统软件中断软件中断例如 MOV AX,2000H ADD AX,7000H INTO ;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设置中断向量,其中断服务程序名为INTHAND MOV AX,0 MOV ES,AX ;settobaseofinterruptvector MOV BX,N﹡4 ;offsetoftypeNinterrupt MOV AX,OFFSETINTHAND MOV ES:WORDPTR[BX],AX ;setaddrofINTHAND MOV AX,SEGINTHAND MOV ES:WORDPTR[BX+2],AX INTHAND: ;interruptprocessingroutine  IRET用DOS系统功能调用(INT21H)设置中断向量例5.4使用DOS功能调用存取中断向量。 MOV AL,N ;typeNinterrupt MOV AH,35H ;getinterruptvector INT 21H PUSH ES ;savetheoldbaseand PUSH BX ;offsetofinterruptN MOV AX,SEGINTHAND MOV DS,AX ;baseofINTHANDinDS MOV DX,OFFSETINTHAND MOV AL,N ;typeN MOV AH,25H ;setinterruptvector INT 21HPOPDX ;restoretheoldoffset POPDS ;andbaseofinterrupt MOVAL,N ;typeN MOVAH,25H ;setinterruptvector INT21H RET ;return