8086CPU 可以表示256种中断信息的来源
内中断
- CPU 用中断类型码在中断向量表中找到相应的中断处理程序的入口地址
- 入口地址由 段地址:偏移地址 组成,占用 2个字单元(即4个字节、4个内存单元)
-
中断向量表 放在 内存 之中:8086CPU 规定将内存地址
0000:0000~0000:03FF
的1024(256 x 4 = 1024)个内存单元用来存放中断向量表
检测点 12.1
存储N号中断源对应的中断程序入口
|
高位地址 |
低位地址 |
偏移地址 |
4N+1 |
4N |
段地址 |
4N+3 |
4N+2 |
8086CPU 中断过程
(1)(从中断信息中)取得中断类型码 N;
(2)标志寄存器的值入栈 pushf
(3)设置 TF = 0 ,IF = 0
(4)CS的内容入栈 push CS
(5)IP的内容入栈 push IP
(6)从内存地址为 4N+2 以及 4N 取读取中断处理程序 (IP) = (4N) , (CS) = (4N+2)
iret 指令
iret
等价于
pop IP
pop CS
popf
单步中断
CPU执行完一条指令后,此刻检测到 TF = 1 ,进入单步中断
单步中断的类型码为 1
所引发的中断过程如下:
(1)(从中断信息中)取得中断类型码 N = 1
(2)标志寄存器的值入栈 pushf
(3)设置 TF = 0 ,IF = 0
(4)CS的内容入栈 push CS
(5)IP的内容入栈 push IP
(6)从内存地址为 4N+2 以及 4N 取读取中断处理程序 (IP) = (4x1) , (CS) = (4x1+2)
响应中断
- 执行完 SS寄存器 相关的指令后, 即便发生中断,CPU也不会响应
- 连续设置 SS 和 SP 才可以指向正确的栈顶地址
mov ax,1000H
------------------
| mov ss,ax |
| mov sp,16 |
------------------
一定要挨着写!