(1)
关键点:
- 中断向量表是从第0个单元开始
- 每个表项由2个word构成,即4个byte
- 高地址word存储段地址,低地址word存储偏移地址
回到问题本身,求3号中断源入口(即地址):
-
将内存4个字节一组,第1组记为0,第2组记为1,以此类推,第4组记为3,即3号中断源的表项,debug中显示 8B 01 70 00。
-
因为debug从左至右是低地址到高地址,所以实际书写习惯是 00 70 07 8B
-
因为高地址存储段地址,低地址存储偏移地址,所以入口为:0070:078B
(2)
关键点:
- 找出中断源的编号与内存地址的数学关系,即N与index的关系
- 每4个单元为一组,表示1个表项
- 中断向量表从第0个单元开始
分析如下:
- 先观察数学关系
内存单元(表项占用内存区间) | 表项序号 |
---|---|
[0,3] | 0 |
[4,7] | 1 |
[8,11] | 2 |
[12,15] | 3 |
- 表项在内存中的起始地址,分别为0,4,8,12,对应的表项序号为0,1,2,3,是4倍的关系,即当表项序号为N时,内存单元为[N*4]
内存单元(表项占用内存区间) | 表项序号 |
---|---|
[4N,4N+3] 或 罗列为 4N,4N+1,4N+2,4N+3 | N |
- 高地址为[4N+2,4N+3]存储了段地址,低地址为[4N,4N+1]存储了偏移地址
- 所以段地址入口为4N+2,偏移地址为4N