1. 几个概念:
-
中断
-
中断源(能引发CPU中断的事件,内部和外部)
-
中断类型号:(8位二进制码给中断源编号,故可管理256个不同中断)
-
中断断点(由于中断而没有被执行的那一条指令的地址)
-
中断服务程序(处理中断事件的程序段)
-
中断向量(中断服务子程序的入口地址,4字节【低两个是IP,高两个是CS】)
-
中断向量表(外部MEM的最低1KB个字节用来存放中断向量,共256个)
2. 中断源的识别:
-
软件识别:CPU相应中断请求进入中断服务子程序之后在子程序里查询各个中断源状态;
-
硬件识别:利用外部8259A芯片,中断源发送它的中断类型号。
3. 中断嵌套:
-
中断优先权(多个中断源同时提出中断请求时CPU响应的先后次序)
-
除法错误中断、INT
N和INTO指令的优先级最高,其次为外部不可屏蔽中断NMI,其次为外部可屏蔽中断INTR,最后为单步中断。 -
中断嵌套:处理低级别的中断的过程中,响应更高级别的中断请求的过程。
-
必要条件:由于CPU在响应中断时已经将IF清零,所以必须在终端服务子程序中打开IF,才有可能进行中断嵌套。
4. 8086中断结构与内部中断:
-
除法错:除数为0或者商溢出,进入N=0的内部中断;
-
单步中断:若TF为1,则每执行一条指令引发一次N=1的内部中断;
-
断点中断:即INT 3,程序中插入INT 3称为设置断点;
-
溢出中断:即INTO,执行时若OF=1则进入N=4的内部中断;
-
INT N:产生一个N=N的中断。
4. 中断处理流程:
5. 8259A的相关内容:
(1)结构和功能:
-
一片8059A有8个中断请求输入端,总共可以管理8个外部中断;
-
8259A有1根片内寻址线A0,故只占用两个端口地址;
-
INT为中断请求发送信号,接CPU的INTR端;CPU的INTA响应信号接8255A的INTA端;
-
数据线D0-D7一定要和CPU低八位数据线相连(因为CPU会自动从低八位数据线读中断类型号);
(2)8259A的级联:
- 主片和从片:
8259A级联工作时,一定只有一片的INT是接CPU的INTR端,向CPU提出中断请求;这一片8259A称为主片,其余称为从片
-
8259A工作在非缓冲方式时,通过SP/EN端电压高低来区分是主片还是从片,主片SP/EN端接高电平,从片SP/EN端接低电平。
-
级联中断请求的提出:
-
级联中断类型号的获取:
(3)8259A的内部结构:
(4)8259A的工作方式控制:
需要知道:在IBM-PC/XT机中,主片8259A中断类型号基值初始化为08H,从片中断类型号基值初始化为70H。