3、中断系统编程要求
主程序:
设置中断向量表
初始化堆栈指针
初始化8259A
置中断允许STI
中断服务程序
将中断服务程序要用到的工作寄存器内容压入堆栈(PUSH AX等)
中断服务程序主体
弹出压入堆栈的工作寄存器内容(POP AX 等)
给8259A送EOI命令(必要时可提前)
设置中断允许STI(必要时可提前)
中断返回IRET
4、CPU中断应答过程(对用户透明)
满足中断响应条件以后,CPU进入中断应答周期,发出2个连续的INTA#信号(8086)。
在第一个INTA#周期
8259A置ISRi=1,IRRi=0
在第二个INTA#周期
PUSH Flag
LET TEMP = TF ;CLR IF,TF
PUSH CS,IP
读类型码
(IP)=(TYPE*4+1):(TYPE*4+0)
(CS)=(TYPE*4+3):(TYPE*4+2)
5、优先级及中断嵌套
- 多个中断同时发生时优先级高的中断首先被响应
- INTR中断、单步中断是否能中断其他正在服务的中断处理程序,得到响应,取决于IF和TF状态
- 8259A中断嵌套的方式由编程决定
- 中断响应过程(INTA#周期)不会发生中断嵌套
|