发布网友 发布时间:2022-04-23 08:52
共3个回答
热心网友 时间:2022-05-02 16:51
中断类型码:,其实就是中断号,对不同的中断服务程序不同的名称记号,以调用该中断程序.
中断向量:指向中断服务程序的入口地址.一个向量代表的入口地址为4个字节.
中断向量表:由于存在多个中断请求,相应有多个中断服务程序,即有多个存放这些程序的入口地址(即中断向量).为此系统在内存的特定区域安排一张中断向量表,专门存放所有的中断向量.此表即中断向量表.
以上三者关系:中断向量=[中断号X4], 其中方括号的含义是内存单元的内容.(即中断向量表刚好存放在内存绝对地址0开始的位置)
热心网友 时间:2022-05-02 18:09
中断向量=[中断X4],包括括号的含义是内存单元的内容。(也就是说,只存储在内存地址0中,绝对开始位置)代码:中断类型,实际上被中断,标记为不同的中断服务程序的名称,以调用中断程序。
1、中断向量:中断服务程序的入口地址。一个向量表示4个字节的输入地址。
2、对规模的破坏:因为有多个中断请求,有多个中断服务例程,对应的存储有多个程序入口地址(即中断向量)。这个系统在一个特定区域的内存中安排一个中断到规模,专门存储所有的中断向量。这种形式的规模的中断。
3、在8086系统中,一个矢量中断用于描述8086系统中中断类型代码、中断向量和中断规模之间的关系。
热心网友 时间:2022-05-02 19:44
5. 2 8086/8088 中断系统
一、中断分类及中断类型码
中断源 :引起中断的原因或发出中断请求的设备称为中断源。
• 中断的分类
共分为两类:硬件中断和软件中断
①硬件中断 :即通过外部的硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断 :由 NMI 引脚引入,它不受中断允许标志的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。这种中断一旦发生,系统会立即响应;
可屏蔽中断 :由 INTR 引脚引入,它受中断允许标志的影响,也就是说,只有当 IF = 1 时,可屏蔽中断才能进入,反之则不允许进入,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一个进行处理。
②软件中断 (内部中断):即根据某条指令或者对标志寄存器中某个标志的设置而产生,它与硬件电路无关,常见的如除数为 0 ,或用 INT n 指令产生。
溢出中断由 INT0 指令引起
断点中断由 INT3 指令引起
单步由标志 TF 引起 ↘不对应指令
除 0 由计算结果引起 ↙不对应指令
• 中断类型码:
8086/8088 为每个中断源分配了一个中断类型码,其取值范围为 0 ~ 255 ,即可处理 56 种中断。其中包括软件中断,系统占用的中断以及开放给用户使用的中断。
二、中断向量和中断向量表
系统处理中断的方法很多,处理中断的步骤中最主要的一步就是如何根据不同的中断源进入相应的中断服务子程序,目前用的最多的就是向量式中断。
中断向量 :把各个中断服务子程序的入口都称为一个中断向量;
中断向量表 :将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。
8086/8088 中断系统中的中断向量表是位于 0 段的 0 ~ 3FFFH 的存贮区内,每个中断向量占四个单元,其中前两个单元存放中断处理子程序的入口地址的偏移量( IP ),低位在前,高位在后;后两个单元存放中断处理子程序入口地址的段地址( CS ),也是低位在前,高位在后,整个中断向量的排列是按中断类型号进行的。见 P 图 5-14 。
图示给出了中断类型码与中断向量所在位置之间的对应关系。其中 00H ~ 04H 为专用中断, 05H ~ 3FH 为系统保留中断,用户一般是不能对它们定义的(这里面有一些为固定的用途,如 INT 21H 即为 MS - DOS 图 5-14
的系统调用), 40 ~ FF 为用户定义的中断。
00H ~ 04H ――系统专用
10H ~ 1FH ―― BIOS 用
40H ~ FFH ――用户用
08H ~ 0FH ――硬件中断
20H ~ 3FH ―― DOS 用
中断类型号* 4 即可计算某个中断类型的中断向量在整个中断向量表中的位置。如类型号为 20H ,则中断向量的存放位置为 20H * 4 = 80H ,(设中断服务子程序的入口地址为 4030 : 2010 ,则在 0000 : 0080H ~ 0000 : 0083H 中就应顺序放入 10H 、 20H 、 30H 、 40H 。当系统响应 20H 号中断时,会自动查找中断向量,找出对应的中断向量装入 CS 、 IP ,即转入该中断服务子程序。
三、中断响应过程与时序
8086/8088 对软件中断和硬件中断响应的过程是不同的,这是由于软件中断和硬件中断所产生的原因不同,下面主要讨论硬件中断的情况。
• 硬件中断的响应过程
硬件中断指的是由 NMI 引脚进入的非屏蔽中断或由 INTR 引脚进入的可屏蔽中断。下面以可屏蔽中断为例。
CPU 在 INTR 引脚上接到一个中断请求信号,如果此时 IF = 1 , CPU 就会在当前指令执行完以后开始响应外部的中断请求,这时, CPU 在 引脚连续发两个负脉冲,外设在接到第二个负脉冲以后,在数据线上发送中断类型码,接到这个中断类型码后, CPU 做如下动作:
①将中断类型码放入暂存器保存;
②将标志寄存器内容压入堆栈,以保护中断时的状态;
③将 IF 和 TF 标志清 0 ,目的是防止在中断响应的同时又来别的中断,而将 TF 清 0 是为了防止 CPU 以单步方式执行中断处理子程序。这时要特别提醒,因为 CPU 在中断响应时自动关闭了 IF 标志,因此用户如要进行中断嵌套时,必须在自己的中断处理子程序中用开中断指令来重新设置 IF ;
④保护断点,断点指的是在响应中断时,主程序当前指令下面的一条指令的地址。因此保护断点的动作就是将当前的 IP 和 CS 的内容入栈,保护断点是为了以后正确地返回主程序;
⑤根据取到的中断类型码,在中断向量表中找出相应的中断向量,将其装入 IP 和 CS ,即呆自动转向中断服务子程序。
对 NMI 进入的中断请求,由于其类型码固定为 2 ,因此 CPU 不用从外设读取类型码,也不需计算中断向量表的地址,只要将中断向量表中 0000 : 0008H ~ 0000 : 000BH 单元内容分别装入 IP 和 CS 即可。
图 5-15 给出了 8086/8088 中断响应过程的流程图,对这个图我们做几点说明:
① 8086/8088 除软件中断外,内部“非屏蔽中断”、“可屏蔽中断”均设立有优先级,其中内中(除单步外)――即 0 、 1 、 3 、 4 号中断的优先级高于非屏蔽中断,非屏蔽中断高于可屏蔽中断,单步中断优先级最低;
②只有在可屏蔽中断的情况下才判 IF = 1 ?,才取中断类型码,其余的没有这个动作。
③关于单步中断,它是每执行一条指令中断一次,显示出当时各寄存器的内容,供用户参考,当进入单步中断响应时, CPU 自动清除了 TF ,在中断返回后,由于恢复了响应时的标志寄存器的值,因此 TF = 1 ,执行完一条指令后又进入单步中断,直到程序将 TF 改为 0 为止。
④关于中断的嵌套, NMI 总是可以响应的,若在中断处理子程序中设立了开中断指令, INTR 的请求也能响应。
⑤弹出 IP 、 CS 、标志,返回断点的动作由 IRET 指令完成。
⑥有些情况下,即使条件满足, CPU 也不能马上响应中断,必须执行完下一条指令(而不是当前指令)才行。
• 正好执行 LOCK 指令;
• 执行往 SS 寄存器赋值的传送指令,因为一般要求连续用两条指令对 SS 和 SP 寄存器赋值,以保证堆栈指针的正确性。
⑦当遇到等待指令或串操作指令时,允许在指令执行的过程中进入中断。这时需注意在中断处理子程序中保护现场,以保证中断返回后能继续正确地执行这些指令。