NASM语言更改中断向量表

中断向量是中断服务程序的入口地址,每条中断信息包含四个字节,低两个字节存放中断程序的偏移地址 I P IP IP ,高两个字节存放中断程序的段地址 C S CS CS , C P U CPU CPU 在执行完一条指令都会检查中断,如果有中断发生,则通过 中断号*4 找到中断向量表中的中断信息,按照高高低低的原则载入 C S , I P CS,IP CS,IP 寄存器,从而执行中断程序。
示例:修改时钟中断
使用中断是 08 h 08h 08h,对应程序的 I P IP IP C S CS CS分别存储在中断向量表的 E S : 08 h ∗ 4 ES:08h*4 ES:08h4 E S : 08 h ∗ 4 + 2 ES:08h*4+2 ES:08h4+2的位置,所以我们只需要把我们的程序的 C S CS CS I P IP IP放到对应的位置,但程序运行的时候,时钟中断会自己发生,就会运行我们的程序。
具体代码如下:

 cli              ;关中断
    push ES  ;保存ES的值
    push AX
    xor AX,AX
    mov ES,AX   ;将ES的值置为0
    mov AX,CS    ;将我们代码的CS移动到AX中
    mov word[ES:08h*4],_Timer ;设置时钟中断向量的偏移地址。_Timer就是我们自己写的程序。
    mov word[ES:08h*4+2],AX ;设置时钟中断的段地址=CS

注意:nasm中一个word表示两个字节。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值