+ -
当前位置:首页 → 问答吧 → 汇编替换中断

汇编替换中断

时间:2011-05-20

来源:互联网

MY_INTNO DW 1CH
OLD_INTOFF DW ?
OLD_INTSEG DW ?
  MOV AX,MY_INTNO
  SHL AX, 2
  MOV DI, AX
  MOV AX, 0
  MOV ES, AX ;此时,ES:DI是中断向量的地址

  CLI ;禁止中断
  MOV AX, ES:[DI]
  MOV OLD_INTOFF,AX
  MOV AX,OFFSET MY_INT1C ;自己的中断服务程序入口
  MOV ES:[DI]

  MOV AX,ES:[DI+2]
  MOV OLD_INTSEG, AX
  MOV AX, CS
  MOV ES:[DI+2], AX
  STI ;允许中断

  ...

  MOV AX,MY_INTNO
  SHL AX, 2
  MOV DI, AX
  MOV AX, 0
  MOV ES, AX ;此时,ES:DI是中断向量的地址

  CLI ;禁止中断
  MOV AX, OLD_INTOFF
  MOV ES:[DI], AX
  ADD DI,2
  MOV AX, OLD_INTSEG
  MOV ES:[DI], AX
  STI ;允许中断

为什么要把ax逻辑左移2位?

作者: HS0264   发布时间: 2011-05-20

一项占4字节
左移2位等于乘4

作者: WJN92   发布时间: 2011-05-20