📅  最后修改于: 2020-12-13 15:30:18             🧑  作者: Mango
中断是一种在程序执行期间创建临时停止并允许外围设备访问微处理器的方法。微处理器通过一个ISR (中断服务程序)来响应该中断,该程序是一个简短的程序,用于指示微处理器如何处理该中断。
下图显示了8086微处理器中的中断类型-
任何外围设备都会通过指定的引脚向微处理器发送信号来引起硬件中断。
8086有两个硬件中断引脚,即NMI和INTR。 NMI是不可屏蔽的中断,而INTR是具有较低优先级的可屏蔽中断。与INTA相关的另一个中断引脚称为中断应答。
它是单个不可屏蔽中断引脚(NMI),具有比可屏蔽中断请求引脚(INTR)更高的优先级,并且是2类中断。
激活此中断后,将执行以下操作-
完成正在进行的当前指令。
将标志寄存器值压入堆栈。
将返回地址的CS(代码段)值和IP(指令指针)值压入堆栈。
从字位置00008H的内容加载IP。
CS从下一个字位置0000AH的内容加载。
中断标志和陷阱标志重置为0。
INTR是可屏蔽的中断,因为只有在使用设置中断标志指令使能了中断的情况下,微处理器才会被中断。不应使用清除中断标志指令将其启用。
INTR中断由一个I / O端口激活。如果允许了中断且禁止了NMI,则微处理器首先完成当前执行并在INTA引脚上发送两次“ 0”。第一个“ 0”表示INTA通知外部设备准备就绪,在第二个“ 0”期间,微处理器从可编程中断控制器接收8位,即X。
这些动作由微处理器采取-
首先完成当前指令。
激活INTA输出并接收中断类型,例如X。
标志寄存器值,返回地址的CS值和返回地址的IP值被压入堆栈。
从字位置X×4的内容加载IP值
CS从下一个单词位置的内容加载。
中断标志和陷阱标志重置为0
将某些指令插入到程序中所需的位置以创建中断。这些中断指令可用于测试各种中断处理程序的工作。它包括-
它是2字节指令。第一个字节提供操作码,第二个字节提供中断类型编号。该组下有256种中断类型。
它的执行包括以下步骤-
标志寄存器的值被压入堆栈。
返回地址的CS值和返回地址的IP值被压入堆栈。
从单词位置“类型编号”的内容中加载IP×4
CS从下一个单词位置的内容加载。
中断标志和陷阱标志重置为0
类型0中断的起始地址为000000H,类型1中断的起始地址为00004H,类似地,类型2的起始地址为00008H,……等等。前五个指针是专用的中断指针。即-
TYPE 0中断表示被零除的情况。
TYPE 1中断表示程序调试期间的单步执行。
TYPE 2中断代表不可屏蔽的NMI中断。
TYPE 3中断代表断点中断。
TYPE 4中断代表溢出中断。
类型5至类型31的中断保留给其他高级微处理器,而类型32至255的中断则可用于硬件和软件中断。
它是一个1字节指令,操作码为CCH。这些指令被插入到程序中,以便当处理器到达那里时,它将停止程序的正常执行并遵循断点过程。
它的执行包括以下步骤-
标志寄存器的值被压入堆栈。
返回地址的CS值和返回地址的IP值被压入堆栈。
从字位置的内容中加载IP 3×4 = 0000CH
CS从下一个单词位置的内容加载。
中断标志和陷阱标志重置为0
这是一个1字节的指令及其助记符INTO 。该指令的操作码为CEH。顾名思义,它是一条条件中断指令,即仅当溢出标志设置为1并分支到其中断类型号为4的中断处理程序时才有效。如果溢出标志被复位,则执行将继续执行下一条指令。
它的执行包括以下步骤-
标志寄存器的值被压入堆栈。
返回地址的CS值和返回地址的IP值被压入堆栈。
从字位置4×4 = 00010H的内容加载IP
CS从下一个单词位置的内容加载。
中断标志和陷阱标志重置为0