8259A EOI命令:中断服务与向量设置详解

需积分: 48 1 下载量 168 浏览量 更新于2024-07-12 收藏 650KB PPT 举报
本文档主要探讨了在PC机中的8259A中断控制器如何在实模式下实现硬件中断程序设计。首先,8259A被初始化为普通中断结束方式,这意味着中断服务子程序结束后,用户必须手动发送中断结束命令(EOI)来清除中断服务寄存器(ISR)中的最高优先级标志,以确保中断处理的正确性。 中断服务过程包括中断源的触发、中断处理以及返回到原程序的继续执行。在86系列CPU中,有多种类型的中断,如不可屏蔽中断NMI、可屏蔽中断INTR、外部中断和内部中断,包括微处理器产生的中断和由中断指令引起的软件中断。这些中断源通过特定的输入/输出端口来申请中断,其中中断允许标志IF控制对INTR中断的响应。 中断向量表是内存中的关键部分,用于存储不同中断类型的服务子程序地址,每个中断占用4个字节。当CPU接收到中断请求时,会根据中断类型号在向量表中定位相应的服务程序地址,并执行中断服务子程序。 中断程序设计的核心是编写中断服务函数和设置中断向量。中断服务函数通常以关键字`interrupt`声明,如`void interrupt myint(void)`,这种函数需预先声明,以便编译器识别。设置中断向量的函数`setvect()`则用于将中断服务函数的地址映射到中断向量表的指定位置,例如: ```c void setvect(0x08, void interrupt (*myint)()); ``` 这里,`0x08`是中断类型号,`myint`是一个指向中断服务函数的函数指针。 本文档详细介绍了中断系统的工作原理、中断源分类、中断向量表的作用,以及如何编写中断服务函数和设置中断向量,这些都是进行硬件中断程序设计的关键步骤。通过理解和应用这些概念,程序员可以有效地管理计算机系统的中断处理流程,提升程序的可靠性和效率。