微机原理与接口技术第7章微机中断系统2中断系统概述中断处理过程中断优先级和中断嵌套3概述中断的提出中断的概念中断的分类4中断的提出中断最初是作为处理器与外部设备交换信息的一种控制方式提出的;最初的中断全部是对外部设备而言的,称为外部中断或硬件中断;随着计算机技术的发展,为解决机器内部运行时出现的异常以及为编程方便提出了内部软件中断的概念。5中断的概念中断:处理器暂停执行当前程序,转而处理随机发生的事件,处理完毕后再返回到断点处继续执行原来程序的过程。中断源中断请求当前程序中断服务程序程序断点中断返回中断响应中断源中断响应中断返回中断向量表中断屏蔽中断优先级中断嵌套6中断的分类外部中断(硬件中断)内部中断(软件中断)由中断指令引起的中断:INTn由CPU的某些运算错误引起的中断:INTO(4#)或除法错(0#)中断源由调试程序debug设置的中断:TF=1单步中断(1#)或断点中断(3#)可屏蔽中断INTR--实时处理同步操作电源故障中断动态RAM有奇偶校验错误I/O通道出现奇偶校验错误协处理器8087有中断请求不可屏蔽中断NMI(2#)7中断处理过程CPU响应中断过程中断向量表中断服务程序返回中断服务子程序8CPU响应中断过程中断请求中断响应保护现场状态寄存器(PSW)断点(CS和IP)中断服务程序要用到的寄存器的内容进入中断服务程序恢复现场中断返回与中断相关的指令及其执行过程INTn当前PSW入栈IF←0;TF←0断点地址入栈(先CS,后IP)取出中断服务子程序的入口地址(也称中断向量)段地址→CS偏移地址→IP从而转入中断处理程序注意与子程序调用指令的区别9IRET断点地址出栈(先IP,后CS)标志寄存器psw出栈INTO相当于INT4溢出中断,(OF)=1,触发STI-----开中断,IF=1用于控制可屏蔽中断请求是否被响应CLI------关中断,IF=01011CPU响应中断过程CPU响应外部中断的条件外设提出中断申请(有中断请求信号)本中断未被屏蔽本中断优先级最高CPU允许中断(IF=1)CPU响应中断要在完成当前正在执行的指令之后在等待指令或串操作指令时,允许在指令执行过程中进入中断,但要在当前一个基本操作完成之后下述情况要执行完下一条指令才能响应外部中断CPU正在执行封锁指令正在执行向段寄存器输送数据的指令12中断请求的查询是否有不可屏蔽中断是否有可屏蔽中断是否有内部中断是否有单步执行中断是否允许外部中断13保护现场PSW入栈保护程序断点地址允许CPU继续响应其他中断检查是否有不可屏蔽中断检查是否有单步执行中断恢复现场TF14中断向量表中断服务程序进入问题:确定是哪个中断源发出的中断请求信号得到对应的中断服务程序入口地址---中断向量解决:中断类型号:每一个中断源分配唯一的中断类型号与其对应中断向量表:用来存放与中断类型号对应的中断源的中断服务程序的入口地址15中断向量表中断类型号:8086/8088系统有256种类型的中断,对应类型号0~FFH(P501)。0——除法出错1——单步中断2——不可屏蔽中断3——断点中断4——溢出中断5——打印屏幕8~0FH——8259A中断10H~1FH——BIOS中断20H~3FH——DOS中断调用中断向量表:8086、8088中断系统按中断类型号由小到大的顺序把与它们对应的中断处理程序的入口地址放在一张表中,并将它安置在内存中00000H~003FFH的1K空间内,这张表就称为中断向量表(也称中断矢量表)每个中断向量占4个字节,高2个字节放中断入口地址的段地址(CS),低2字节放偏移地址(IP)中断向量地址=中断类型号×416中断向量表17中断向量表供用户使用的中断类型号可由用户定义为软中断,由INTn指令引用可通过INTR端直接接入可屏蔽中断可通过中断控制器8259A引入可屏蔽中断用户使用中断类型号进行某种中断处理时,要处理的问题1、编好所需要的中断服务子程序2、用户需要自己将中断服务程序入口地址写入中断向量表,中断向量的装填方法有两种指令DOS功能调用(本次不要求掌握)1819中断向量表的装填—指令装填MOVAX,0;主程序中设置MOVES,AXMOVBX,N*4;中断类型号NMOVAX,OFFSETINTRAD;置偏移地址MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置断地址MOVES:WORDPTR[BX+2],AXSTI...INTRAD:PUSHAX;中断服务子程序STI...POPAXIRET22中断向量表-中断类型号的获取对于除法出错、单步中断、不可屏蔽中断、断点中断、溢出中断,CPU自动提供中断类型号0~4用户自己确定的软件中断INTn,类型号由n决定对外部可屏蔽中断INTR,可用硬件电路设计产生中断类型号对外部可屏蔽中断INTR,可以用8259A获得中断类型号可屏蔽中断的响应过程INTR=1若IF=1,且无内部中断,无NMI,无总线请求,执行完当前指令,发/INTA=0(通知外设准备中断类型号)发/INTA=0,读取外设DATA低8位的中断类型码,转入中断处理23内部中断处理过程及其特点:1)程序状态字压入堆栈(SP)←(SP)-2((SP)+1,(SP))←PSW2)IF=0,TF=0,以便禁止可屏蔽中断和单步中断3)断点地址压入堆栈(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)254)取中断向量(IP)=(4*n)(CS)=(4*n+2)5)执行中断服务程序6)执行中断返回指令IRET,(IP)←((SP)+1,(SP))(SP)←(SP)+2(CS)←((SP)+1,(SP))(SP)←(SP)+2(PSW)←((SP)+1,(SP))(SP)←(SP)+22627中断服务程序返回通过中断返回指令IRET返回主程序断点IRET自动弹出断点处指令地址和程序状态字使CPU返回原程序断点处继续执行28中断服务子程序保护现场,涉及的寄存器入栈;若允许中断嵌套,用STI开中断,使IF=1;执行中断处理程序;用CLI关中断,使IF=0;给中断命令寄存器送中断结束命令EOI,使当前处理的中断请求标志位清零;恢复现场,保护的寄存器值出栈;用IRET返回主程序。29中断优先级和中断嵌套多个中断源同时向CPU请求中断时,按中断源的轻重缓急程度确定的优先级别称为中断优先级;CPU先响应优先级高的中断,挂起优先级低的中断;在CPU正处理一个中断时,又有更高优先级的中断请求时,CPU要挂起原中断,进入更高级别的中断服务程序中,称为中断嵌套。30中断优先级通常一个系统有多个中断源,而CPU同一时刻只能响应一个中断源的请求,那么当多个中断源同时请求中断服务时,按中断源的优先级决定响应的先后内部中断和异常(除法错)软件中断(INTO,INTn)外部非屏蔽中断(NMI)外部可屏蔽中断(INTR)优先级递增单步中断IBMPC机中规定的优先级次序31中断嵌套中断优先级3#2#1#1#中断请求响应返回1#中断服务程序2#中断请求响应返回2#中断服务程序3#中断请求响应返回3#中断服务程序原主程序中断嵌套可以有多级,具体级数原则上不限,只取决于堆栈深度。考试题型一、1填空(10分)二、2改错:(20分)三、分析读程30分四、编程设计40分1、设计程序2、存储器与cpu接连3、8255端口地址,命令字、编程