kxy7777777777 发表于 2016-12-24 21:42:09

中断向量表问题

中断向量表中的地址(1024个字节)是如果排列的,是下面的方式1还是方式2,谢谢。

方式1:
中断向量0(1字节)         偏移地址(1字节)      段地址(2字节)
                               
...........................................      ...........................................    ...........................................
                       
中断向量255(1字节)   偏移地址(1字节)      段地址(2字节)



方式2:
    中断0:         偏移地址(2字节)               段地址(2字节)
                               
    中断n:            ...........................................            ...........................................
                       
    中断255          偏移地址(2字节)               段地址(2字节)


即中断向量0~255是否占用一个字节?

兰陵月 发表于 2016-12-24 21:56:46

应该是第二

kxy7777777777 发表于 2016-12-24 22:39:14

兰陵月 发表于 2016-12-24 21:56
应该是第二

谢谢您的回答。但课件中提到“8位的中断类型码”,是通过“8位的中断类型码”找到对应的物理地址与偏移地址,那这个“8位的中断类型码”不在这1024个字节里吗?还是“8位的中断类型码”是虚构出来的?

兰陵月 发表于 2016-12-24 23:10:09

本帖最后由 兰陵月 于 2016-12-24 23:28 编辑

8位的中断类型码只是一个代码数值,它并没有存在中断向量表中。中断向量表这1024个字节储存的是中断处理程序的入口地址。中断类型吗只是用来通过一个公示计算用来寻找中断处理程序入口地址用的。

N号中断的段地址数据在中断向量表中的偏移位置:N*4+2
N号中断的偏移地址数据在中断向量表中的偏移位置:N*4

有了段地址和偏移地址之后,才能知道N号中断的处理程序所在的具体位置,这样CS:IP才能指向这个位置,计算机才能去执行。

看书中的解释~~


因为它是一个字节型数据,因此它的值就是0-255,可以表示256种中断信息的来源,其实就是某个中断信息的代号一样。

你如果说它是虚构出来的,也可以这么理解。比如你在班上的学号是1号,也可以是2号,这只是一个代码,至于1号处理什么事务,2号处理什么事务,这个就要查找中断向量表中罗列的地址,查到了这个地址,进入这个地址,这个地址开始的程序处理什么事情那代表这个几号处理什么事情。因此我们可以在中断向量表里改变入口地址的值,让它去处理不同的事情。在A程序里,1号中断处理溢出,但是在B程序里,1号中断可能处理别的事情了。

你问的这个意思,其实检测点12.1,第二个题目已经表达比较清楚了。



所以“8位的中断类型码”不在这1024个字节里吗?
答:是的,不在里面。它只是上图中的那个N而已。

再举个例子。



书中例子是0号,你想把它叫做11号中断,就只要把相应部位的0变成11就可以了。其他需要改变的部分也要同步改变一下。【可能实际上操作相对复杂,但是意思理解上就是这样的】

这样,书中例子中的0号中断,和你改编的11号,实际上作用就是一样的。

kxy7777777777 发表于 2016-12-25 00:36:56

兰陵月 发表于 2016-12-24 23:10
8位的中断类型码只是一个代码数值,它并没有存在中断向量表中。中断向量表这1024个字节储存的是中断处理程 ...

非常感谢您的回答,谢谢
页: [1]
查看完整版本: 中断向量表问题