8086系统中、中断类型码、中断向量、中断向量表的关系
5.28086/8088中断系统1.中断的分类和中断类型代码。中断源:产生中断的原因或发出中断请求的设备称为中断源。
•中断分为两类:硬件中断和软件中断。
①硬件中断:由打印机、键盘等外部硬件产生的中断,有时也称为外部中断。
硬件中断可以分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断:通过NMI引脚注入,不受中断使能标志的影响。
每个系统只允许一个中断,用于处理断电等紧急情况。
一旦发生这种中断,系统会立即响应;可屏蔽中断:由INTR引脚输入,受中断使能标志位影响,即屏蔽中断只有当IF=1时才能进入,反之亦然。
可能有几个可屏蔽中断,通常通过优先级队列,选择几个中断源之一进行处理。
②软件中断(内部中断):根据某条指令或在标志寄存器中设置某标志而产生。
与硬件电路无关。
常见的中断包括除0或INTn指令。
INT0指令引起的溢出中断INT3指令引起的断点中断TF标志引起的单步↘不对应指令计算结果除0↙不对应指令•中断类型代码:8086/8088为每个中断分配一个中断中断源类型代码,其值范围为0~255,允许处理56种类型的中断。
其中包括软件中断、系统占用中断和用户暴露中断。
2.中断向量和中断向量表。
系统中有多种处理中断的方法。
中断处理中最重要的一步是输入适当的根据各种中断源的中断服务程序。
目前最常用的是向量中断。
打断。
中断向量:每个中断服务程序的输入称为中断向量表。
这些中断向量按照一定的规则组合成一张表,称为中断向量表。
当中断源发出中断时。
请求时,可以查表,找出中断向量,然后跳转到相应的中断服务程序。
8086/8088中断系统中的中断向量表位于0段0~3FFFH存储区。
每个中断向量占用4个单元,其中前2个单元存储中断输入地址的偏移量。
处理例程(IP),LSB优先,然后MSB;最后两个块存储中断服务程序输入地址的段(CS)的地址,也是最低有效位在前,然后是最高有效位。
整个中断向量。
根据中断类型号排列。
参见图5-14。
下图给出了中断类型代码和中断向量位置的对应关系。
其中00H~04H为专用中断,05H~3FH为系统保留中断。
用户通常无法定义它们(其中一些有固定用途,例如INT21H-一个MS-DOS系统调用,图5-14)。
~FF-用户定义的中断。
00H~04H-系统专用10H~1FH-BIOS使用40H~FFH-用户使用08H~0FH-硬件中断20H~3FH-DOS使用中断类型号*4来计算某个中断类型的位置的中断向量整个中断向量表。
例如类型号为20H,则中断向量存储位置为20H*4=80H(假设中断服务子程序的输入地址为4030:2010,则为10H、20H、30H、40.H)。
系统响应20H号中断会自动搜索中断向量,找到对应的中断向量加载到CS和IP中,然后那里将会去中断服务程序3.中断响应。
过程和时间软件中断8086/8088。
响应硬件中断的过程各不相同。
这是与软件相关的。
软件中断和硬件中断的原因不同。
下面我们主要讨论有硬件中断的情况。
•响应硬件中断的过程是指通过NMI引脚引入的不可屏蔽中断或通过INTR引脚引入的可屏蔽中断。
下面以可屏蔽中断为例。
CPU启动INTR。
输出接收中断请求信号。
如果此时IF=1,则CPU执行完当前指令后开始响应外部中断请求。
在此期间,CPU连续向该引脚发送两个负脉冲。
并且外围设备已连接。
第二个负脉冲后,在数据线上发送中断类型代码并接收中断类型代码。
输入类型代码后,CPU执行以下操作:1)将中断类型代码放入临时寄存器中进行存储;2)将标志寄存器的压入堆栈以在中断期间保护状态;3)清除IF和;TF标志设置为0。
为了防止在响应中断时发生其他中断,将TF清除为0意味着CPU将无法以单步模式执行中断例程。
此时特别提醒的是,由于CPU在响应中断时会自动关闭IF标志,所以如果用户想要嵌套中断,必须在自己的中断程序中使用中断使能命令来重置IF④;断点保护。
断点是指响应中断时主程序当前指令下方的指令地址。
所以断点保护的作用就是将当前的IP和CS压入堆栈。
保护断点的目的是为了以后能正确返回主程序。
⑤根据接收到的中断类型代码;将中断向量表中对应的中断向量加载到IP和CS中,然后自动转入中断服务程序。
对于NMI注入的中断请求,由于其类型代码固定为级别2,因此CPU不需要从外设读取类型代码,也不需要计算中断向量表地址。
可以下载。
分别在IP和CS中。
图5-15给出了8086/8088中断响应过程的流程图。
我们对这个图做一些澄清:①除了软件中断之外,8086/8088内部还有“不可屏蔽中断”和“可屏蔽中断”。
与优先事项。
Level,其中(单步中断除外)——即中断0、1、3、4的优先级高于不可屏蔽中断,不可屏蔽中断高于可屏蔽中断,单步中断有最低优先级;②只有定义IF=1才可以屏蔽中断?,只取中断类型代码,其余无此动作。
③对于单步中断,每执行一条指令就中断一次,并显示此时各寄存器的,供用户参考。
当进入对单步中断的响应时,CPU自动清除TF。
由于响应恢复,中断返回。
此时标志寄存器的值,所以TF=1,指令执行后引入单步中断,直到程序将TF变为0。
④关于中断嵌套,NMI总是可以响应的。
如果在中断服务程序中设置了中断使能指令,INTR请求也可以得到应答。
⑤显示IP、CS、标志位以及返回断点的动作是通过IRET指令完成的。
⑥某些情况下,即使满足条件,CPU也不能立即响应中断,必须执行下一条指令(而不是当前指令)。
•准确执行LOCK指令•执行给SS寄存器赋值的传输指令,因为通常需要使用两条连续的指令给SS和SP寄存器赋值,以保证堆栈有效性;指针。
⑦检测到时等待指令或字符串操作指令在执行时允许被中断。
这时要注意中断程序中的场景保护,保证中断返回后这些指令能够继续正确执行。
中断类型号怎么计算
中断类型号的计算方式取决于硬件配置和操作系统。根据相关公开资料,在现代计算机中,中断类型号通常由主板上的固件(例如BIOS或UEFI)分配。
固件为每个设备分配一个中断类型号,并通过中断类型控制器通知操作系统。
操作系统可以配置每个中断类型号并将其分配给不同的硬件设备。
中断类型码中断向量地址
要拦截的载波地址是:008CH,下一个优先级是IR3。
问题解决过程:
因为中断类型为23H,所以interreg载波的地址是指内存中保存的中断服务的地址,即三十二脚。
。
该地址包括一个十六位段和一个十六位地址,根据该十六位地址计算实际物理地址。
23H*4=8CH,载波地址在008CH处中断。
最高优先级为IR3,优先级顺序为IR3、IR4、IR5、IR6、IR7、IR0、IR1、IR2。
因此IR3具有最高优先级。
扩展信息:
中断函数:
1.计算机系统中处理器的运行速度远高于外围设备的运行速度。
他们之间的工作可以通过中断来安排。
当外围设备需要与处理器交换信息时,外围设备向处理器请求中断,处理器及时响应并进行相应处理。
由于不交换信息,处理器和外围设备独立并行工作。
2.在现代计算机中,程序员无法直接干预和改变机器。
请求必须通过操作系统通过系统中断和操作工具进行人为干预来发送。
主存中通常有多个程序和它们自己的存储空间。
程序运行过程中,如果发生越界访问,可能会造成程序混乱或相互信息破坏。
为了避免此类事件,创建了一个大型存储设施。
3.在实时系统中,各种监视和控制机制随机向进程发送中断请求,进程随时响应进程。
4.该过程设有多种故障检测和错误诊断。
一旦检测到故障或错误,立即发出中断请求,并记录和隔离故障位置,为进一步处理提供必要的依据。
中断识别码由硬件(通常是中断控制器)产生,用于识别不同的中断源。
中断向量地址问题1.向量地址为20H,求中断类型码2.中断类型码是60H,求向量地址
1、向量地址为20H查找中断类型代码:08H。2、中断类型代码为60H查找向量地址:180H。
即:乘以4和除以4的关系。