86系列CPU硬件中断程序设计与中断向量表解析

需积分: 48 1 下载量 119 浏览量 更新于2024-07-12 收藏 650KB PPT 举报
"这篇资料主要讲述了硬件中断程序设计,特别是外部中断在86系列CPU中的应用。外部中断通过NMI和INTR引脚触发,中断允许标志IF用来控制是否响应INTR中断。内部中断包括微处理器产生的中断和软件中断指令。中断向量表存储了中断服务子程序的地址,CPU根据中断类型号查找并执行相应服务程序。硬件中断程序设计涉及编写中断服务函数和设置中断向量。中断服务函数需用`interrupt`关键词声明,而`setvect()`函数用于设置中断向量。" 在计算机硬件中,中断是处理突发事件的关键机制。外部中断,又称为硬件中断,是通过CPU的非屏蔽中断(NMI)和可屏蔽中断(INTR)引脚来实现的。NMI中断无法被屏蔽,而INTR中断可以通过改变中断允许标志(IF)来启用或禁用。当IF为1时,CPU允许响应INTR中断请求;反之,IF为0则阻止CPU响应。 86系列CPU能够处理256种中断,类型号范围从0x00到0xff。中断源可以分为两类:不可屏蔽中断NMI和可屏蔽中断INTR,还包括微处理器内部产生的中断和软件中断指令。微处理器内部中断如单步中断、除法错误中断和溢出中断,而软件中断通常由DOS和BIOS提供的中断指令触发,方便用户进行各种系统调用。 中断向量表位于内存的低地址区域,占用1024个字节,每个中断类型对应4个字节的中断向量,包含中断服务子程序的入口地址。当CPU接收到中断请求后,会查找中断向量表,并跳转到指定的地址执行中断服务程序。 硬件中断程序设计主要包括两步:一是编写中断服务子程序,使用`interrupt`关键词声明,如`void interrupt myint(void)`;二是设置中断向量,利用`setvect()`函数将中断服务子程序的地址与中断类型号关联起来。例如,要设置类型号为0x08的中断,对应的中断服务函数为`myint`,可以写入`#include <dos.h>`并调用`setvect(0x08, myint)`。 中断服务子程序应设计得简洁高效,因为它打断了当前程序的执行,需要尽快完成任务并恢复现场。而设置中断向量是连接中断源和中断服务程序的关键步骤,确保CPU在接收到中断请求时能找到正确的处理代码。 中断程序设计是嵌入式系统和实时操作系统中不可或缺的一部分,它使得系统能够及时响应外部事件,提高系统的响应能力和效率。理解并熟练掌握中断机制和中断处理程序的编写,对于开发高效、可靠的硬件驱动和系统级软件至关重要。