• 【微机接口】中断系统:中断响应和处理的过程


    CPU获得中断类型码方式:

    (1)非屏蔽硬件中断请求,CPU内部会自动产生中断类型码2

    (2)可屏蔽硬件中断请求,当CPU处于开中断状态时,由外部中断控制器将相应的中断类型码送给CPU(如8259A)

    (3)INT n指令,中断类型码为n

    记:非2可外int n

    CPU获得中断类型码n后,中断处理过程:

    (1)F寄存器压入堆栈,保护各个标志位

    (2)清除I标志和T标志(P52),屏蔽新的可屏蔽硬件中断和单步中断

    (3)保护主程序的断点,即将主程序断点处的CS、IP的当前值压入堆栈,压入的顺序为先压入断点的CS值,再压入断点的IP值。

    (4)CPU从4n~4n+3单元中取出n型中断向量写入IP,CS,将4n~4n+1单元写入IP,4n+2~4n+3单元内容写入CS

    (5)CPU根据新的CS:IP的值转向n型中断服务子程序

    (6)服务程序执行完毕,执行中断返回指令。

    中断返回指令的功能是按顺序恢复断点处的IP值、CS值和之前保护的相应中断前的标志寄存器内容。

    (7)CPU根据恢复后的CS:IP返回断点,继续执行主程序

    记:F寄存器,CS,IP入栈,从4n~4n+3找到中断向量放入CS:IP,执行中断服务子程序,执行中断返回指令IRET,返回断点,恢复现场。

    XXX PROC

    保护现场:如果中断服务子程序中使用到的寄存器,如果主程序中也要使用该寄存器,就会发生冲突,所以进入中断服务子程序的第一步就是要保护现场,将主程序中用到的资源加以保护

    保护主程序的断点是中断隐指令完成,保存通用寄存器和状态寄存器的内容由中断服务子程序完成。

    中断处理

    恢复现场:将各个寄存器的内容出栈,遵循先进后出的原则,即保护现场时,各个寄存器进栈顺序的逆序是出栈的顺序。

    中断返回中断返回指令IRET,使中断服务子程序能安全返回之前的主程序断点。

    IRET

    XXX ENDP

  • 相关阅读:
    Harbor镜像层膨胀,占用存储过大
    Java Spring后处理器
    异质信息网络分析与应用综述
    java-net-php-python-ssm二手商品交易平台的设计与实现(2)计算机毕业设计程序
    【趣学算法】Day2 贪心算法——最优装载问题
    MyBatisPlus(七)——通用枚举、代码生成器、多数据源、MyBatisX
    ZEMAX | HUD 设计实例
    【Hadoop】YARN容量调度器详解
    7.nginx动静分离(添加Tomcat-3,部署p2p项目)
    iPad 使用技巧:虚拟键盘与实体键盘
  • 原文地址:https://blog.csdn.net/m0_52043808/article/details/127806684