• 内中断(一)


    目录

    一、内中断的产生

    二、中断处理程序

    三、中断向量表

    四、中断过程

    五、中断处理程序和iret指令


    中断:CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。

    “中断信息”,是要求CPU马上进行某种处理,并向所要进行的该种处理提供了必备的参数的通知信息。

    一、内中断的产生

    1.对于8086CPU,当CPU内部有下面的情况发生的时候,将产生相应的中断信息。

    (1)除法错误,比如:执行div指令产生的除法溢出。

    (2)单步执行。

    (3)执行into指令。

    (4)执行int指令。

    2.上面的4种中断源,在8086CPU中的中断类型码如下:
    (1)除法错误:0

    (2)单步执行:1

    (3)执行into指令:4

    (4)执行int指令:该指令的格式为int n,指令中的n位字节型立即数,是提供给CPU的中断类型码。

    二、中断处理程序

    CPU在收到中断信息后,应该转去执行该中断信息的处理程序。我们知道,若要8086CPU执行某处的程序,就要将CS:IP指向他的入口(即程序第一条指令的地址)

    三、中断向量表

    1.中断向量表,就是处理中断程序入口地址的列表。

    0号中断源对应的中断处理程序的入口地址
    1号中断源对应的中断处理程序的入口地址
    2号中断源对应的中断处理程序的入口地址
    3号中断源对应的中断处理程序的入口地址

    .

    .

    .

    2.       中断向量表在内存中保存,其中存着256个中断源所要对应的中断处理程序的入口。

             可以看到,CPU只要知道了中断类型码,就可以将中断类型码作为中断向量表的表项号,定位相应的表项,从而得到中断处理程序的入口地址。

            可见,CPU用中断类型码,通过查找中断向量表,就可以得到中断处理程序的入口地址。

            一个表项存放一个中断向量,也就是一个中断处理程序的入口地址,对于8086CPU,这个入口地址包括地址和偏移地址,所以表项占两个字,高地址存放段地址,低地址字存放偏移地址。

    四、中断过程

    1.中断过程:用中断类型码,在中断向量表中找到中断处理程序的入口。找到这个入口地址的最终目的是用它来设置CS和IP,使CPU执行中断处理程序。用中断类型码找到中断向量,并用它设置CS和IP,这个工作是由CPU的硬件来完成的。

    2.CPU收到中断信息后,要对中断信息进行处理,首先将引发中断过程。硬件在完成中断过程后,CS:IP将指向中断处理程序的入口,CPU开始执行中断程序。

    3.8086CPU在收到中断信息后,所引发的中断过程:
    (1)(从中断信息中)取得中断类型码。

    (2)标志寄存器的值入栈(因为在中断过程中要改变标志寄存器的值,所以先将其保存在栈中)。

    (3)设置标志寄存器的第8位TF和第9位IF的值为0。

    (4)CS的内容入栈。

    (5)IP的内容入栈。

    (6)从内存地址为中断类型码*4和中断类型码*4+2的两个字单元中读取中断处理程序的入口地址设置IP和CS。

    五、中断处理程序和iret指令

    1.由于CPU随时都可能检测到中断信息,也就是说,CPU随时都可能执行中断处理程序,所以中断处理程序必须一直存储在内存的某段空间中。而中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表中。

    2.中断处理程序的常规步骤:
    (1)保存用到的寄存器。

    (2)处理中断。

    (3)恢复用到的寄存器。

    (4)iret指令返回。

    3.iret指令的功能用汇编语言表示为:
    pop IP

    pop CS

    popf

  • 相关阅读:
    【UNIX网络编程第三版】阅读笔记(一):代码环境搭建
    keep-alive的使用场景跟原理分析(超详细讲解)
    k8s集群授权prometheus(集群外部署)
    基于SpringBoot+jpa+Erupt的出入登记签到打卡系统
    D. Vus the Cossack and Numbers
    洛谷B3640 T3 句子反转 题解
    谷粒商城 高级篇 (十八) --------- 购物车
    【python海洋专题十一】colormap调色
    第21章 Spring事务管理之扩展篇(三)
    pytorch中正向传播和反向传播的钩子Hook
  • 原文地址:https://blog.csdn.net/qq_53338931/article/details/127429621