如何在中断向量表中找到中断的物理地址?

时间:2017-09-18 05:56:31

标签: x86-16 microprocessors

如何在8086微处理器的中断向量表中计算任何给定中断(例如INT22H或INT15H)的物理地址?

1 个答案:

答案 0 :(得分:1)

  

...计算中断向量表中任何给定中断(例如INT22H或INT15H)的物理地址......

  • int 15h指令找到远{I}}指针的物理地址。
    这是中断向量表中的偏移量,因此从列表{0,4,8,12,...,1016,1020}中提供物理地址(即线性地址)。
    由于每个向量长度为​​4个字节,所需要的只是将中断数乘以4.

    call

    (*)我喜欢所有表示为DX:AX的线性地址。这就是我使用看似不必要的mov ax,0415h ;AL=Interrupt number, AH=4 mul ah ; -> Product in AX cwd ;(*) -> Result in DX:AX=[0,1023] 指令的原因。

  • 最终处理cwd的实际地址 这可以是1MB内存中的任何位置。 (在上,没有超过1MB的记忆) 每个4字节向量由一个偏移字后跟一个段字组成。订单很重要。
    线性地址的计算方法是将段值乘以16并加上偏移值。

    int 15h