【沧海拾昧】微机原理:8086/8088中断系统

您所在的位置:网站首页 终端服务程序入口地址 【沧海拾昧】微机原理:8086/8088中断系统

【沧海拾昧】微机原理:8086/8088中断系统

2024-07-08 01:06| 来源: 网络整理| 查看: 265

 #C0305

沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix

【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题定为本集记录有谬,切勿深究

目录

一、中断分类

1、外部中断(硬件终端)

2、内部中断 (软件中断)

3、中断优先级

二、中断向量

1、中断向量与中断向量表

2、中断类型码

3、中断向量的设置

三、中断响应过程

1、软件中断的响应

2、NMI中断的响应

3、INTR中断的响应

4、得到中断类型号后

5、断点返回(恢复现场)

一、中断分类 1、外部中断(硬件终端)

        硬件中断是由来自外部的事件产生的,即由外部设备提出中断申请而产生的。硬件中断的产生具有随机性,何时产生中断,CPU预先并不知道。

不可屏蔽中断 NMI:常用于紧急的故障处理,由系统使用;可屏蔽中断 INTR:CPU在指令周期的最后一个T状态采样INTR线;

2、内部中断 (软件中断) 指令中断:是由用户在程序中发出中断指令 INT  nH 产生的,其中 n 称为软中断号。何时产生软中断是由程序安排的,是可预知的。指令中断包括ROM-BIOS中断和DOS中断两部分。专用中断(特殊中断):由内部的突发事件所引起的中断,CPU指定的中断。 在指令的执行过程中,CPU发现某种突发事件时就启动内部逻辑转去执行预先规定的中断号对应的中断服务子程序。这类中断也是不可屏蔽的中断,其处理过程类似于软件中断,有时也归为软件中断。 0号中断:除数为0的中断;1号中断:单步中断3号中断:断点中断4号中断:溢出中断

3、中断优先级 8086中断源(共有256个,00H~FFH)

软件中断(软中断内没有级别) > NMI > INTR > 单步中断

二、中断向量

        中断识别的目的是要形成该中断源的中断服务子程序的入口地址,以便CPU将此地址放入CS:IP寄存器,从而实现程序的转移。这一目的通过中断向量与中断向量表实现。

1、中断向量与中断向量表 中断向量:中断服务子程序的入口地址CS:IP;中断向量表:把系统中所有的中断向量按照一定的规律排列成一个表,即中断向量表。

        8086/8088中断系统的中断向量表位于内存 00000H~003FFH 的存储区内。每个中断向量占用4个字节(CS:IP)。

8086/8088中断向量表

 

2、中断类型码

        通过中断类型码可以获取中断服务子程序入口地址。CPU将中断类型码乘4,即获得存放该中断向量的中断向量表的首地址,从该地址处开始的4个单元存放的即是所需要的中断向量:

CS:IP = [4n+3][4n+2]:[4n+1][4n]

        示例:中断类型码70H,001C0H~001C3存储的内容依次为78H、56H、34H、12H。

                存放中断向量的存储空间为:70H × 4 = 0111 0000B × 4 = 0001 1100 0000B = 1C0H

                [1C3H][1C2H] --> CS,1234H ,[1C1H][1C0H] --> IP,5678H

3、中断向量的设置 直接写入法

        直接将中断类型码n×4,找到具体的内存单元后将中断服务子程序的段地址和偏移地址依次写入。

        示例:中断服务子程序的名称(标号)为INTV

MOV AX, 0 MOV ES, AX ; ES = 0 MOV DI, n*4 MOV DX, OFFSET INTV ; 取中断服务子程序偏移地址 MOV ES:[DI], DX ; 将偏移地址放入中断向量表 INC DI INC DI MOV DX, SEG INTV ; 取中断服务子程序段地址 MOV ES:[DI], DX ; 将段地址放入中断向量表 系统调用法设置中断向量(使用25H号功能调用,入口参数为AL、DS、DX) 中断类型码:AL中断服务子程序入口段地址: DS中断服务子程序入口偏移地址: DX

        示例:

PUSH DS MOV DX,SEG INTV ;中断服务程序段地址 MOV DS,DX MOV DX,OFFSET INTV ;中断服务程序偏移地址 MOV AL,72H ;中断类型码 MOV AH,25H ;系统功能调用号 INT 21H POP DS

 系统调用法读取中断向量(使用35H号功能调用,入口参数为AL,出口参数为ES、BX) 中断类型码:AL中断服务子程序入口段地址: ES中断服务子程序入口偏移地址: BX

        示例:

MOV AL,0CH MOV AH,35H INT 21H MOV INTCS,ES MOV INTIP,BX

三、中断响应过程 1、软件中断的响应

        不受IF标志的影响,中断类型码由INT n中的n决定。CPU在执行软件中断时,没有中断响应周期。CPU根据指令中的类型码n就能转入相应的处理程序入口。所以用INT n指令可以模拟任何中断源,用来调用256个入口的任何一个中断处理程序。由于它把中断的随机事件变成了执行INT n 指令的必然事件,可使中断处理程序和一般子程序一样容易调试。

2、NMI中断的响应

        不判断IF标志,也不用外设接口给出中断类型码,CPU响应时不发中断响应周期(不回应),自动生成其类型码2,然后转入相对应的处理程序入口。

3、INTR中断的响应

        CPU响应中断后,对外设接口发出两个中断响应周期INTA*。每个中断响应周期依然为4个时钟周期,INTA*在T2,T3时有效。

INTR中断响应周期时序 第一个响应周期:CPU输出总线锁定信号LOCK,防止其他处理器或DMA控制器占用总线。与此同时,外设收到此信号,知道CPU已响应中断,开始准备送中断类型码;第二个响应周期:总线锁定信号LOCK解除,ALE无效,允许数据线工作。此时,外设(中断控制器)将已准备好的中断类型码送上数据总线供CPU读取。CPU接收此中断类型码,由此查找中断向量表找到对应中断服务子程序的入口地址。

4、得到中断类型号后 中断类型码暂存,把标志寄存器FR的内容压入堆栈;将TF值保存到TEMP,然后使IF=0,TF=0,即屏蔽INTR中断和单步中断;保存断点,即将断点处的CS和IP内容压入堆栈;中断类型号×4,得到相应中断类型号在中断向量表的位置,装入CS:IP;转入中断处理程序。

5、断点返回(恢复现场)

        当中断处理结束后,执行IRET指令,该指令将从堆栈中弹出三个字,即FR的内容和断点地址,在中断服务程序中要用到的寄存器,用户在使用之前应予以保护,在中断返回IRET前应予以恢复,使CPU的现场与中断前完全一样 。

敬谢诸君。

金陵钟山之阳。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3