要求:掌握CPU在执行中断指令后,会执行哪些操作
前言:在掌握这些操作之前,我们必须先了解几个名词
为了区别各种不同的中断,微机系统给每一个中断分配了一个中断号n,即中断类型码,其取值范围是0~255。
微机系统可以处理256种中断,在这256个中断中,imtel在它各种微处理器中都保留了前32个(031)为系统所专用,后224个可由用户设定。
定义:实模式下,进入中断子程序的入口地址,再准确一点就是,指向中断服务子程序的第一条指令
它由2部分组成:
解释:中断向量的地址怎么找?4*n,n为字段类型码,(就是在类型码后面加两个零)。
1、利用4*n,即利用中断类型码找到中断向量的第一个单元地址,一个中断向量占有四个字节。
2、找到的中断向量,即为中断服务子程序的入口地址,取出,注意先取出取出的IP,是偏移地址,后取出两个单元是DS,是段基址。(这里要尤其注意)
3、取出中断向量的入口地址,即可找到中断服务子程序,执行。
功能:使F寄存器中I标志置1,CPU处于开中断状态。
功能:使得F寄存器中I标志置0,CPU处于关中断状态。
n为中断类型码,n为0~255之间有定义的无符号整数。
功能:无条件转向n型中断服务子程序。
功能:依次从栈顶弹出6个元素给IP,CS,F。如果栈顶是INT n的断口地址,则执行IRET,返回断点,否则不能。
那么如何区分?
区别点:
上面两种响应条件,大家有没有发现第一条都是先看看其他的是否有中断请求,这是为什么?
原因:中断请求优先级 DMA>NMI>INTR
1片8259A中断控制器可以管理8级中断;
级联:
这里注意:
屏蔽:用OR运算符,该位置1,其他置0
开放:用AND运算符,该位置0,其它为0
两者区别:
若日时钟中断定义位1CH型,服务程序结束前不需要向主8259A发送结束命令。
若用户定时中断位08H型,服务程序前需要先向主8059A发送中断结束命令。
MOV AL,20H
OUT 20H,AL
若用户中断定义位0A型,服务程序结束后只向主8259A送结束命令。
若用户中断定义位71型,服务程序结束后分别向主、从8259A各送结束命令。
MOV AL,20H
OUT 20H,AL
OUT 0A0H,AL
用户中断请求从ISA总线B4端子(IRQ 9)引入,经过主8259,从8259二级中断管理,最后由主8259向cpu提中断。
注意:只有从8259 IMR1置0,主8259IMR2置0,其中断请求方能送到CPU。