目录
中断向量表
存放中断地址的一段内存空间称为中断向量表
存放各类中断的中断服务程序的入口地址
表的地址位于内存的0000:0000到0000:03FFH(即0段的0000到03FFH) 大小1KB,共256个入口
每个入口占用4个单元,一次为CS:IP ,低字节为段内偏移地址,高字节为段基址
中断类型码 乘 4=中断向量表对应地址
如何解题
这种题其实很简单。不是×4就是除4,分清楚就行了
题目要求一般为给你中断类型码,一段向量表中的存储情况,问你中断服务程序的真正入口地址
假设中断类型码16H,求中断程序入口地址?
16H 是 0001 0110 给他左移2位就是乘4
0101 1000 (58H)
然后去 58H,59H,5AH,5BH中取数据
假设它们中的数据分别是
58H 里面的内容是 11H
59 H里面的内容是 22H
5AH 里面的内容是 33H
5BH 里面的内容是 44H
中断类型码*4+0 是 ip低8
中断类型码*4+1 是 ip高8
中断类型码*4+2 是 cs低8
中断类型码*4+ 3是 cs高8
然后进行拼接
CS:IP
4433:2211H 就是中断入口地址
IP 低8 IP 高8 CS 低8 CS 高8 一样遵循高高低低原则,低地址放低位高地址放低位
例题(完整的题直接练练吧)
1:
80x86系统采用8259A的中断类型码为88H,试问:
这个中断源的中断请求信号应连向8259A的那个中断输入端?
中断服务程序的段地址和偏移地址应该分别装入哪两个字单元
第一问:
把88H展开 1000 1000 由ICW2,可以知道高五位是咱们自己设置的,低三位是根据连接在IR线,系统设置的。那么就可以知道这个中断段的中断请求连向8259A的IR0
第二问:
中断向量码*4=中断服务程序入口地址
1000 1000 左移两位就是×4,末尾补两个0
10 0010 0000
220H 首地址就是220H
中断服务程序的偏移地址和段地址分别填入4n和4n+2两个字单元
220H 221H 222H 223H
因为是0段,所以偏移地址就等于物理地址(可以这么记, 0000H*16那不还是0吗)
段地址填入 00222H,和00223两个字节单元
偏移地址填入00220H ,和00221H两个单元
2:
8086微机系统的RAM存储单元中,从0000H:002CH开始一次存放23H,0FFH,00H,0F0H四个字节,该向量对应的中断号是(0BH),中断程序的物理地址是(0FFF23H)
解:
中断类型号=中断服务程序入口地址除4
2CH 展开
0010 1100 除以4,右移2位
0000 1011 (0BH)
如果在问你中断服务程序的物理地址是多少?
0F000H:0FF23H
物理地址=段*16+偏移
左移1位
0F0000H
+ 0FF23H
0FFF23H(物理地址)
3:
在微机系统中,CPU 对中断源的管理可采用中断向量方式。设某中断向量在中断向量表中 0000H:0018H 单元开始按地址递增方向依次存放 95H、96H、97H 和 98H,99H,9AH,9BH和9CH 八个字节,请回答: 该向量对应的中断类型码和中断服务程序的入口地址的 CS 和IP 分别是多少? 并简述所得结论的理由。
解题:
0018H
0000 0000 0001 1000 除4右移2位
0000 0000 0000 0110 (06H)
中断向量码06H
CS 的值为 9897H
IP 的值为 9696H
理由:中断向量表共1024个字节,每一级中断占用4个字节。前两个字节是中断子程序的偏移地址,后两个字节是中断子程序的段地址。按顺序存放在0段的0偏移-----0段的03FF偏移。
4:
在 PC 机中5 号中断,它的中断向量地址是()
A. 0000H: 0005H B:0000H: 0010H
C.0000H:0014H D.0000H: 0020H解题:
0000 0101 (5)乘4左移两位
0001 0100(14H)
5:混合一点
(1)CS=? IP=? SP=? PSW=? (注意本题没有中断返回指令IRET,只是中断响应的过程)
INT 7 双字指令 那么 IP的值需要+2 ip=0282H (IP始终指向下一条指令的偏移地址)
进入中断程序的响应,首先把 PSW(Flags )压栈, 保护现场。
SP指针= 1800H-2 =17FEH
关中断,关单步 IF=TF=0
PSW每位的状态你需要知道。1,3,5位没有有,从第11位开始,依次位oditszapc
可以知道IF和TF依次在 第九位,和第八位
原来的字为 0000 0010 0100 0001(0241H)TF已经是0了把IF置0即可
PSW= 0000 0000 0100 0001 (0041H) 别的位不用管
然后保护断点,把CS:IP 依次压入堆栈保护
SP指针=17FE-4=17FAH
中断类型码 7, 通过7*4算出中断服务 程序的入口地址
0000 0111 (7) 左移2位
0001 1100 (1CH)。 此处为偏移地址,
知道中断向量表的地址为0000:0000H- 0000:03FFH
物理地址 =段*16+ip= 00000H+1CH=0001CH.
所以IP= 2010H CS=4030H (高高低低原则)
(2) 此时堆栈中的情况
1:17FAH
2:17FFH 其余的内容对应填上即可