zoukankan      html  css  js  c++  java
  • 汇编语言之中断学习

    计算机经常会遇到异常,会产生中断,发出中断请求。中断分为内中断和外中断。下面主要介绍的是内中断。

      内中断,cpu什么时候会发出中断信号呢?一般有一下四种情况:

      ·除法指令

      ·单步执行

      ·int 0指令

      ·int n指令

      产生中断信号的情况又被称为中断源。cpu接收到中断信号以后,要根据中断信号来确定中断情况。所以,中断信息里面应该包括中断的来源以及中断的情况。因此,CPU将定义一个变量来存储辨别中断信息,称为中断字节码(8位变量)可以用中断字节码表示256种情况。

      每种中断情况都对应一种中断处理程序,但是CPU又如何确定相应中断处理程序在内存中的地址呢?如何确定相应中断处理程序的入口地址?so,中断向量应运而生。中断向量就是中断处理程序的入口地址。不同的中断情况对应不同的中断处理程序,又对应不同的中断向量,为了高效的处理中断,我们又定义了中断向量表,顾名思义,中断向量表用来存储中断向量,就是中断处理程序的入口地址。一条中断向量有占用多少内存地址呢?中断向量用来存储中断处理程序的入口地址,包括段地址和偏移地址,所以占用两个字的存储单元,高地址字段用来存储段地址,低地址字段用来存储偏移地址。

      CPU知道了相应中断处理程序的入口地址后,计算机处理中断,中断过程。用中断字节码找到中断向量,来设置CS和IP,这个过程由计算机硬件来完成,这个过程叫做中断过程。 以8086CPU为例,在接收到中断信息后,要执行的操作:

      1.(从中断信息中)找到中断字节码

      2.标志寄存器的值入堆栈

      3.设置标志寄存器的第8位TF和第9位IF值为0
      4.CS 值入栈
      5.IP值入栈
      6.从内存地址为 终端类型码*4 和 中断类型码*4+2的两个字单元读取中断处理程序的入口地址,设置CS IP
      中断处理程序
      由于cpu随时都有可能检测到中断信息,也就是说cpu随时都要执行中断处理程序,所以,中断处理程序必须一致存储在内存某段空间中。
      中断处理程序的步骤:
      1.保存用到的寄存器
      2.处理中断
      3.恢复用到的寄存器
      4.用iret指令返回

      cpu执行完中断处理程序以后,必须返回到原来的地址继续执行后面的内容,所以,在执行中断处理程序之前必须记录下原来执行指令的地址,便于中断处理完以后返回。

  • 相关阅读:
    生产环境经常用到的命令
    JDK 安装部署
    oracle备份脚本
    HTTP与HTTPS的区别
    TCP和UDP的优缺点及区别
    Web服务器优化
    DDOS攻击的三种常见方式
    Xss Csrf DDOS sql注入及防范
    session共享
    Cookie防伪造防修改
  • 原文地址:https://www.cnblogs.com/ysugyl/p/4886188.html
Copyright © 2011-2022 走看看