中断调用程序指针 (中断调用过程)

中断调用过程

简介

中断调用程序指针 (Interrupt Call Procedure, ICP) 是一种在发生中断时将程序控制权转移到适当的中断处理程序的机制。当一个中断发生时,CPU 会将当前的程序计数器 (PC) 和其他寄存器值推入堆栈,然后从一个称为中断调用程序指针 (ICP) 的特定内存地址读取一个值。ICP 的值是一个指向中断处理程序的地址。CPU 然后将程序控制权转移到该地址,以便中断处理程序可以处理中断。

ICP 的内容

ICP 通常包含以下信息:中断向量表地址:这是中断处理程序的起始地址。中断处理程序大小:这是中断处理程序以字节为单位的大小。中断优先级:这是中断的优先级,它决定了相对于其他中断处理中断时的顺序。

ICP 的使用

当发生中断时,CPU 会执行以下步骤:1. 将当前的 PC 和其他寄存器值推入堆栈。2. 从 ICP 读入中断向量表地址。3. 将程序控制权转移到中断向量表地址。4. 中断处理程序执行必要的中断处理操作。5. 中断处理程序返回,CPU 从堆栈恢复保存的寄存器值。

优点

使用 ICP 有几个优点:快速响应:ICP 允许 CPU 快速响应中断,因为它不需要在内存中搜索中断处理程序。高效率:ICP 是高效的,因为它只需要从一个内存地址读取一次值。灵活:ICP 可以轻松定制以支持各种类型的中断处理。

局限性

ICP 也有几个局限性:有限的中断数量:ICP 的大小有限制,这限制了可以支持的中断数量。对中断优先级的影响:ICP 的内容会影响中断优先级,这可能导致优先级较低的中断得不到处理。安全性问题:如果 ICP 的内容被修改,可能会导致 CPU 将程序控制权转移到恶意代码。

结论

中断调用程序指针 (ICP) 是一种在发生中断时将程序控制权转移到适当的中断处理程序的机制。它提供了快速、高效和灵活的中断处理,但也有有限的中断数量、对中断优先级的影响和安全性问题等局限性。

一般中断处理的主要步骤分别是中断请求、中断判优、中断响应、中断处理和中断返回。 在微机系统中,对于外部中断,中断请求信号是由外部设备产生,并施加到CPU的NMI或INTR引脚上,CPU通过不断地检测NMI和INTR引脚信号来识别是否有中断请求发生。 对于内部中断,中断请求方式不需要外部施加信号激发,而是通过内部中断控制逻辑去调用。 无论是外部中断还是内部中断,中断处理过程都要经历以下步骤:请求中断→响应中断→关闭中断→保留断点→中断源识别→保护现场→中断服务子程序→恢复现场→中断返回。 请求中断当某一中断源需要CPU为其进行中断服务时,就输出中断请求信号,使中断控制系统的中断请求触发器置位,向CPU请求中断。 系统要求中断请求信号一直保持到CPU对其进行中断响应为止。 中断响应CPU对系统内部中断源提出的中断请求必须响应,而且自动取得中断服务子程序的入口地址,执行中断服务子程序。 对于外部中断,CPU在执行当前指令的最后一个时钟周期去查询INTR引脚,若查询到中断请求信号有效,同时在系统开中断(即IF=1)的情况下,CPU向发出中断请求的外设回送一个低电平有效的中断应答信号,作为对中断请求INTR的应答,系统自动进入中断响应周期。 关闭中断CPU响应中断后,输出中断响应信号,自动将状态标志寄存器FR或EFR的内容压入堆栈保护起来,然后将FR或EFR中的中断标志位IF与陷阱标志位TF清零,从而自动关闭外部硬件中断。 因为CPU刚进入中断时要保护现场,主要涉及堆栈操作,此时不能再响应中断,否则将造成系统混乱。 保护断点保护断点就是将CS和IP/EIP的当前内容压入堆栈保存,以便中断处理完毕后能返回被中断的原程序继续执行,这一过程也是由CPU自动完成。 中断源识别当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入CS与IP/EIP两个寄存器。 CPU转入相应的中断服务子程序开始执行。 保护现场主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。 现场保护是由用户使用PUSH指令来实现的。 中断服务中断服务是执行中断的主体部分,不同的中断请求,有各自不同的中断服务内容,需要根据中断源所要完成的功能,事先编写相应的中断服务子程序存入内存,等待中断请求响应后调用执行。 恢复现场当中断处理完毕后,用户通过POP指令将保存在堆栈中的各个寄存器的内容弹出,即恢复主程序断点处寄存器的原值。 中断返回在中断服务子程序的最后要安排一条中断返回指令IRET,执行该指令,系统自动将堆栈内保存的IP/EIP和CS值弹出,从而恢复主程序断点处的地址值,同时还自动恢复标志寄存器FR或EFR的内容,使CPU转到被中断的程序中继续执行。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论