微处理器 - 8086 中断


中断是在程序执行期间创建暂时停止的方法,并允许外围设备访问微处理器。微处理器通过ISR (中断服务例程)响应该中断,ISR 是一个简短的程序,用于指示微处理器如何处理中断。

下图显示了 8086 微处理器中的中断类型 -

中断

硬件中断

硬件中断是由任何外围设备通过指定引脚向微处理器发送信号而引起的。

8086有两个硬件中断引脚,即NMI和INTR。NMI是不可屏蔽中断,INTR是具有较低优先级的可屏蔽中断。另外一个相关的中断引脚是 INTA,称为中断应答。

国家管理研究所

它是一个单一的不可屏蔽中断引脚 (NMI),其优先级高于可屏蔽中断请求引脚 (INTR),并且属于 2 类中断。

当该中断被激活时,将发生以下操作 -

  • 完成当前正在进行的指令。

  • 将标志寄存器值推入堆栈。

  • 将返回地址的 CS(代码段)值和 IP(指令指针)值压入堆栈。

  • IP从字位置00008H的内容加载。

  • CS 从下一个字位置 0000AH 的内容加载。

  • 中断标志和陷阱标志复位为 0。

INTR

INTR 是可屏蔽中断,因为只有使用设置中断标志指令启用中断时,微处理器才会被中断。不应使用清除中断标志指令来启用它。

INTR 中断由 I/O 端口激活。如果中断被使能并且NMI被禁止,则微处理器首先完成当前执行并在INTA引脚上发送“0”两次。第一个“0”表示 INTA 通知外部设备做好准备,在第二个“0”期间,微处理器从可编程中断控制器接收 8 位(例如 X)。

这些动作由微处理器执行 -

  • 首先完成当前指令。

  • 激活 INTA 输出并接收中断类型,例如 X。

  • 标志寄存器值、返回地址的CS值和返回地址的IP值被压入堆栈。

  • IP 值从字位置 X × 4 的内容中加载

  • CS 从下一个字位置的内容加载。

  • 中断标志和陷阱标志重置为0

软件中断

一些指令被插入到程序中的所需位置以创建中断。这些中断指令可用于测试各种中断处理程序的工作情况。它包括 -

INT-带类型号的中断指令

它是2字节指令。第一个字节提供操作码,第二个字节提供中断类型号。该组下有256种中断类型。

其执行包括以下步骤 -

  • 标志寄存器值被压入堆栈。

  • 返回地址的CS值和返回地址的IP值被压入堆栈。

  • IP从字位置'类型号'×4的内容中加载

  • CS 从下一个字位置的内容加载。

  • 中断标志和陷阱标志重置为 0

type0 中断的起始地址是 000000H,type1 中断的起始地址是 00004H,类似地,type2 是 00008H ……以此类推。前五个指针是专用中断指针。即 -

  • TYPE 0中断代表被零除的情况。

  • TYPE 1中断代表程序调试期间的单步执行。

  • TYPE 2中断代表不可屏蔽的 NMI 中断。

  • TYPE 3中断代表断点中断。

  • TYPE 4中断代表溢出中断。

从类型 5 到类型 31 的中断为其他高级微处理器保留,从 32 到类型 255 的中断可供硬件和软件中断使用。

INT 3断点中断指令

它是一条 1 字节指令,操作码为 CCH。这些指令被插入到程序中,以便当处理器到达那里时,它会停止程序的正常执行并遵循断点程序。

其执行包括以下步骤 -

  • 标志寄存器值被压入堆栈。

  • 返回地址的CS值和返回地址的IP值被压入堆栈。

  • IP从字位置3×4 = 0000CH的内容加载

  • CS 从下一个字位置的内容加载。

  • 中断标志和陷阱标志重置为 0

INTO - 溢出指令中断

它是一个 1 字节指令及其助记符INTO。该指令的操作码是CEH。顾名思义,它是一条条件中断指令,即只有当溢出标志设置为1时才有效,并跳转到中断类型号为4的中断处理程序。如果此时溢出标志被重置,则继续执行到下一条指令。

其执行包括以下步骤 -

  • 标志寄存器值被压入堆栈。

  • 返回地址的CS值和返回地址的IP值被压入堆栈。

  • IP从字位置4×4 = 00010H的内容加载

  • CS 从下一个字位置的内容加载。

  • 中断标志和陷阱标志重置为0