汇编语言之中断学习

2018-04-12 11:53:08 浏览数 (1)

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

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

0 人点赞