A-A+

在编写程序时 为什么通常总要用开放中断指令来设置中断允许标志?8259A的中断屏蔽寄存器IM

2022-08-12 15:04:19 问答库 阅读 196 次

问题详情

在编写程序时,为什么通常总要用开放中断指令来设置中断允许标志?8259A的中断屏蔽寄存器IMR和8088/8086的中断允许标志IP有什么差别?在中断响应过程中,它们怎样配合起来工作?


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:在PC系列微型计算机中非屏蔽中断被系统占用了在系统总线引出的IRQi是可屏蔽中断请求输入线(实际为8259A的引脚)。Pc上电时系统复位状态寄存器清零使IF=0禁止中断。因为可屏蔽中断得以响应的必要条件之一是IF=1所以编程时通常要用STI指令使IF=1(即开中断)允许可屏蔽中断发生。8088/8086的IF标志是中断允许标志当IF=1时CPU可以响应可屏蔽中断的请求;当IF=0时CPU不予响应。当中断控制器8259A内的中断屏蔽寄存器IMR中的某位为1时与之对应的外设的中断请求被禁止。这时若外设有请求送至8259A的IRi端(即系统总线的IRQi端)8259 A不向CPU的INTR引脚送中断请求信号。而当IMR中的某位为0时与之对应的外设的中断请求才可能经8259A的INT引脚向cPU的INTR端发送中断请求信号;如果此时IF=1则CPU才有可能响应该中断请求。适当地写入IMR内容可以有选择地允许或禁止某级中断。特别是当8259A工作于特殊屏蔽方式时使用IMR可以动态地改变系统的优先级结构可以允许同级的(同一从片的)或较低优先级的中断请求产生中断。
在PC系列微型计算机中非屏蔽中断被系统占用了,在系统总线引出的IRQi是可屏蔽中断请求输入线(实际为8259A的引脚)。Pc上电时,系统复位,状态寄存器清零,使IF=0,禁止中断。因为可屏蔽中断得以响应的必要条件之一是IF=1,所以编程时通常要用STI指令使IF=1(即开中断),允许可屏蔽中断发生。8088/8086的IF标志是中断允许标志,当IF=1时,CPU可以响应可屏蔽中断的请求;当IF=0时,CPU不予响应。当中断控制器8259A内的中断屏蔽寄存器IMR中的某位为1时,与之对应的外设的中断请求被禁止。这时若外设有请求送至8259A的IRi端(即系统总线的IRQi端),8259A不向CPU的,INTR引脚送中断请求信号。而当IMR中的某位为0时,与之对应的外设的中断请求才可能经8259A的,INT引脚向cPU的,INTR端发送中断请求信号;如果此时IF=1,则CPU才有可能响应该中断请求。适当地写入IMR内容可以有选择地允许或禁止某级中断。特别是当8259A工作于特殊屏蔽方式时,使用IMR可以动态地改变系统的优先级结构,可以允许同级的(同一从片的)或较低优先级的中断请求产生中断。

考点:寄存器,屏蔽