对于8086cpu而言,由于它是正儿八经的16位处理器(内部总线和外部总线都是16位的),所以为了使其能寻址到1M字节的空间,需要采用逻辑地址的方式,也就是“段值:偏移”的方式,根据这种逻辑地址的方式,计算物理地址的公式为--段值左移4位+偏移值。
那我们进一步来观察8086的中断向量表,其实中断向量表中放着什么呢?
其实它放着每一个中断向量的ISR的入口地址,换一句话说就是中断处理的入口地址,说白了,就是一个地址。
但是它为什么在中断向量表一个中断号占用4个字节呢?8086cpu不是16位的么?用2个字节来寻址不就行了么?那么请看本文的第一段,没错它为了支持1M的寻址,使用了逻辑地址。所以它的前两个字节用来存储16位“偏移”,后两个字节用来存放16位的“段值”。
当今有些32的cpu的中断向量表只用一个32位的地址来寻址ISR,虽然都是32位/中断地址,但是其中的含义不同。