zoukankan      html  css  js  c++  java
  • Intel微处理器学习笔记(五) 中断

      ▼ 中断是一个由硬件激发的过程,它中断当前正在执行的任何程序。

      ▼ 在Intel系列微处理器中,包括INTR和NMI(Non Maskable Interrupt)两个申请中断的引脚和一个响应INTR中断的引脚INTA。

      ▼ 软中断有INT、INTO、INT3和BOUND。其中,INTO和BOUND为条件中断。

      ▼ IF(interrupt flag,中断标志)和TF(trap flag)两个标志位。

      ▼ 中断返回指令是:IRET(IRETD)。

      ▼ 中断向量表(interrupt vector table)存于:000000H~0003FFH,共256个每个4字节共占1024字节

      ▼ 中断向量(interrput vector)包含中断服务程序的入口地址(段地址+偏移地址)。

      ▼ 当微处理器执行完当前指令后,会按照下边给出的顺序检查下列条件以确定中断是否有效。

      

       图1  确定中断前的条件检查

      ▼ 中断发生时的处理顺序如下:

      

                  图2 中断处理顺序

     

    ▼ 保护模式下,使用一组存储在中断描述表IDT(interrupt descriptor table)中的共256个中断描述符来取代中断向量。每个中断描述符长8字节,共256 × 8 = 2K字节。

          

                      图3 保护模式下的中断描述符

    ▼ 中断描述符表由中断描述表地址寄存器IDTR定位于系统中任何存储单元。

     

    ▼ 中断标志IF和陷阱标志TF在中断期间的标志寄存器内容压入堆栈后被清除。当IF被置位它允许INTR引脚产生一个中断;当IF被清除,它阻止INTR引脚产生中断。当TF = 1时,它在每条指令执行后产生一个陷阱中断(类型1,即单步);当TF = 0,程序正常执行。

            

                      图4 标志位寄存器

    ▼ 中断标志通过STICLI指令来置位和清除。没有特殊的指令来置位和清除陷进标志。

      

  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4855112.html
Copyright © 2011-2022 走看看