在8086系统中,中断技术是通过CPU的中断管理机制、中断控制器8259A以及中断处理程序的协同作用来实现的,这三者共同构成了中断系统。
当中断发生时,CPU会暂停当前程序的执行,转而处理该中断事件。这种中断是由外部或内部事件触发的,如外部设备请求与CPU进行数据交换,或CPU执行程序时出现异常情况。
采用中断技术后,CPU可以更高效地处理各种事件。平时,CPU可以专注于执行主程序,而当需要的数据准备好或输出缓冲器为空时,才会向CPU发出中断请求。
8086系统支持两种主要的中断源:一种是外部或硬件中断,通过CPU的不可中断引脚NMI和可中断引脚INTR引入;另一种是内部或软件中断,主要用于解决CPU运行过程中的意外事件或便于程序调试。
中断响应和返回:CPU会根据中断源的重要性和实时性等因素,确定响应的次序,即中断优先级。
中断向量表:CPU会将所有中断服务子程序的首地址存放在一个称为中断向量表的表格中。
当中断请求到达时,CPU会按照预定的优先级顺序处理这些请求。如果CPU正在处理一个低优先级的中断服务程序,而此时出现了一个高优先级的中断请求,CPU会暂时挂起当前的中断服务程序,先处理高优先级的请求。这种机制被称为中断嵌套。
外设需要CPU服务时,会发出一个有效的中断请求信号到CPU的中断输入端。这些请求信号分为边沿触发和电平触发两种类型。
在安排各中断源的优先级别时,可以采用软件判优和硬件判优两种方式。其中,硬件判优是利用专用的硬件电路或中断控制器来实现。
在响应中断时,CPU需要执行一系列操作,包括保护硬件现场、保护断点、获取中断服务程序等。
中断处理由中断服务子程序完成,该程序需要执行一系列操作,如保护软件现场、开中断、执行处理程序、关中断和恢复现场等。
保护软件现场是指将中断服务子程序中要用到的寄存器的原内容保存起来。
开中断和关中断是为了确保有效地处理和恢复被中断的程序。
每个中断源都有一个与之相对应的中断类型码。内部中断是CPU执行了特定指令或软件设置了标志寄存器中的某个标志位而产生的。
例如,除法出错、单步执行、断点、溢出等都是内部中断的情况。
8259A可编程中断控制器负责管理多个输入到CPU的中断请求,它具有多种功能,如实现中断优先权判别、提供中断矢量和中断等。
8259A对中断优先级的设置方式包括完全嵌套方式、优先级自动循环等不同方式。
在管理多个中断请求时,还需要考虑普通和特殊等策略。
8259A与系统总线的连接方式分为缓冲方式和非缓冲方式。