中断系统

目录

中断系统

一、中断的基本概念

中断源

开中断和关中断

中断优先权

中断向量表

中断过程

二、8086中断系统

中断源

可屏蔽中断周期

中断向量表

中断过程

三、可编程中断控制器8259A及其应用(原理、过程)

8259A中断控制器的基本功能

8259A的基本结构

8259A的引脚

8259A工作方式

8259A的编程★


一、中断的基本概念

当CPU正常运行程序时,用户通过某种方式向CPU请求为自己服务,CPU接收请求暂时中断正在运行的程序,转去执行用户服务程序,执行完毕后再返回被中断的程序。这一过程被称为中断。

中断可以提高CPU与外设交换数据的效率。

  • 中断源

能够导致CPU产生中断的来源就是中断源。

中断源分类:

①硬中断源——硬中断:外部电路在CPU引脚上产生的中断。

②软中断源——软中断:CPU执行程序的过程中产生的中断请求。

硬中断源可以不止一个这取决于CPU有多少个可以接收硬中断请求的引脚。

软中断可以只是一条软中断指令,在8086CPU系统当中,经常使用“INT 21H”指令,他将中止执行当前程序,转而去执行相应的DOS功能调用程序。

  • 开中断和关中断

中断分为条件中断和无条件中断,中断源也可以分为条件中断源和无条件中断源。

通过对中断标志IF的置位来切换开中断和关中断的状态,IF=1为开中状态,IF=0为关中状态。

  • 中断优先权

中断优先级:当多个中断源同时向CPU申请中断时,为了能够有序的处理多个中断申请,给每个中断源确定一个中断级别。

中断嵌套:如果CPU在执行中断服务程序时,又接受了新的中断申请,就会打断正在执行的中断服务程序,为新的中断源服务。

中断嵌套也是要有规则的:只有高优先级的中断可以打断低优先级中断服务,低优先级中断或者同优先级中断一般不允许实现中断嵌套。

  1. 软件查询实现中断优先级排队

CPU响应中断之后,从数据总线读入锁存器的内容,并按照中断源的优先级从高到低进行查询,这样就可以实现高优先级的申请首先得到响应。

方法:移位法(循环移位类指令)、屏蔽法(逻辑类指令)。

优缺点

优点是简单、应用面广;缺点是不够灵活,需要变动时需对整个服务程序进行修改。

2.硬件电路实现中断优先级排队

从图中可以看出,中断源从左向右,等级由高到低,离CPU越近,优先级越高。

工作过程

①外部向CPU请求中断。

②CPU给出中断应答信号,高电平有效。

③排队电路选择最高级别的中断,三态锁存器选通,将其锁存的中断源标识传送到CPU的数据总线上。

④CPU读入中断源标识,调用相应的中断服务子程序。

优缺点

硬件电路实现中断优先权排队的优点是中断响应快,使用灵活。每个中断源都有自己的中断服务子程序,不会相互影响,增加或者减少中断源都很方便。
缺点是接口电路比较复杂。特别是每个中断源需要有自己的标识,在8086CPU系统中这个标识称为中断类型号,还必须建立这个中断类型号和中断服务子程序的一一对应关系。

  • 中断向量表

中断向量表的IP地址为中断标识号n*4,该地址存储的为中断标识号为n的中断服务程序入口地址。

  • 中断过程

二、8086中断系统

(一)中断源

8086CPU系共有256个中断类型,对应中断类型号为00H~FFH。

可屏蔽中断只有在CPU为开中断状态下才可以响应。

当标志IF=1时,是开中断状态。执行指令“STI”,使得IF=1

当标志IF=0时,是关中断状态。执行指令“CLI”,使得IF=0

8086CPU中断优先级:

除法溢出中断——INT n——INTO——NMI——INTR——单步中断(最低)

  • 可屏蔽中断周期

中断响应周期需要个总线周期。

可屏蔽中断的接口电路,在收到第一个应答信号后,立即向CPU传送相应外设的中断类型号。

数据总线的低八位读中断类型号。

  • 中断向量表

8086的中断向量表位于存储器的0~3FFH地址,共1024字节。

8086的中断向量表中存放的是中断服务程序的入口地址。1024个字节用来存放256个中断服务程序的入口地址。每个中断号分配4个字节。低地址的2个字节是中断入口的IP(偏移地址),高地址的2个字节是中断入口的CS(段地址)。

例:如果在DEBUG环境中观察到8086CPU中断向量表(部分)的内容:

-D 0000:0000 002F↙

0000:0000 9E 0F C9 00 FF 13 F4 0C-16 00 44 09 F5 13 F4 0C

0000:0010 65 04 70 00 56 3F 00 12-40 E1 00 F0 6F EF 00 F0

0000:0020 00 00 00 CC 28 00 44 09-3A 00 44 09 52 00 44 09

试问中断类型号n=5的中断服务程序入口地址是多少?

解:偏移地址=(5*4)=(0014H)= 3F56H

段地址=(5*4+2)=(0016H)= 1200H

中断服务程序的入口地址= 1200H*10H+3F56H=15F56H

  • 中断过程

中断申请:NMI、INTR都是高电平有效。

中断响应:无论是哪一种中断申请,8086都要在执行完当前指令后,开始响应中断。

SP-2→SP,FR→(SP);标志寄存器入栈

IF=0、TF=0;关中状态,TF=0

SP-2→SP,CS→(SP);CS入栈保护

SP-2→SP,IP→(SP);IP入栈保护

(n*4)→IP,(n*4+2)→CS;CPU指针转移到中断服务子程序的入口。

TF——单步标志(Trace Flag)。又称跟踪标志。该标志位在调试程序时可直接控制CPU的工作状态。当TF=1时为单步操作,CPU每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;若TF=0,则CPU继续执行程序。

中断处理 :执行中断服务程序。如果希望允许中断嵌套,在中断服务程序的开始时,写一条开中断指令(STI)。

中断返回 :用IRET指令

IRET指令的功能:

IP←(SP),  SP←SP+2

CS←(SP),  SP←SP+2

F←(SP),   SP←SP+2

IRET指令从堆栈取出断点地址,赋值给CS和IP寄存器,同时恢复中断服务前标志寄存器的内容。

中断服务程序:

INTER1 PROC FARPUSH AXPUSH BX        ;保护现场......PUSH BXPUSH AX        ;恢复现场IRETINTER1 ENDP
  • 三、可编程中断控制器8259A及其应用(原理、过程)

8259A是可编程(记忆功能)中断控制器,实际上就是一种中断接口电路

(一)8259A中断控制器的基本功能

①单片8259可以接8个中断源,多片8259级联后,最多可以连接64个中断源。

②可以设置中断源的中断类型号(ICW2),在CPU响应中断后,能自动地向CPU发送中断类型号。

③能管理中断源的优先级,并有固定优先级(全嵌套方式)和循环优先级(相等优先级)两种。

④可以对8个中断源进行屏蔽或不屏蔽(OCW1)。

说明:

①多片级联之后,最多可以由9片8259构成,1个主片,8个从片,8*8=64个中断源。

5片级联时,4个从片可以管理32个中断源,主片还剩余4个接口,共可管理36个中断源。

②8259对中断源进行屏蔽与条件屏蔽不同。条件屏蔽为在8086CPU内判断是否响应;而8259屏蔽直接在该芯片内开放或者禁止。

(二)8259A的基本结构

主要模块

中断请求寄存器IRR:保存还没有得到处理的外部中断源的申请。

中断服务寄存器ISR:登记哪些中断源的申请正在被CPU响应。

优先级分析器PR:有多个中断源申请中断时,优先级分析器判定谁是最高优先级,可以优先服务;或者决定是不是可以中断嵌套。

中断屏蔽寄存器IMR:IMR共有8位,每一位控制一个外部中断源申请。

读写逻辑:其接收CPU发来的读写控制信息,以完成控制信息的写入和状态信息的读出。地址线A0对内部端口进行寻址。

基本工作过程

①外部设备将中断申请信号加入IR0~IR7;
②如果中断屏蔽寄存器IMR对于加入的中断申请没有屏蔽,中断申请存入IRR寄存器;
③优先级分析器对中断申请进行优先级分析,对于最高优先级的申请,清除它在IRR寄存器中的登记,并将ISR寄存器的相应位置1,向CPU发出中断申请;
④CPU响应中断,发回应答信号,收到应答信号后,8259A向CPU发送中断类型号;
⑤CPU调用中断服务子程序,进入中断服务,在中断服务子程序的最后,向8259A发送结束中断命令,收到命令后,8259A清除ISR寄存器中相应位的1,一次中断过程结束。

(三)8259A的引脚

:输入,低电平有效,片选信号。片选信号有效时,8259A和CPU的数据线连通,可以和CPU交换信息。片选信号无效时,8259A的数据线处于高阻状态。CS应该连接到译码器的输出,决定对8259A寻址时的高位地址。

A0:输入,接CPU的地址线,用来对8259A内部端口寻址。A0=0选择一个端口,A0=1选择另一个端口。

8259A内部可访问的寄存器不止两个,不能只通过A。地址的不同来进行区分,还要配合其他的方法。这是8259A内部端口寻址的一个特点。

(四)8259A工作方式

①中断结束方式

复位ISR寄存器中的登记,表明一次中断服务的结束。

自动结束中断:8259A在CPU发送第二个INTA应答信号的后延,自动清除被响应的中断在ISR寄存器中的登记,把登记的“1”复位为“0”.

非自动结束中断:在中断服务子程序结束之前,向8259A发送一个结束中断命令。

优先权管理方式★★★

全嵌套方式:对于8个中断源,从IR0接入的中断源优先级最高,从IR7接入的中断源优先级最低,优先级固定。

循环优先级方式:非固定优先级方式。一旦某个中断请求被响应了,这个中断输入对应的优先级就降到最低,原来比这个输入低一级的输入的优先级升位最高,其余各个输入对应的优先级仍然依次排列。

例如:IR5的输入请求被响应了,IR5的输入优先级变为最低,原来低一级的输入IR6的优先级上升为最高,其余依次排列。如:

IR6——IR7——IR0——IR1——IR2——IR3——IR4——IR5

特殊全嵌套方式:

在级联方式下,它允许同级中断的嵌套。

例:对于下边的级联芯片,从8259A的IR7中断服务期间,又收到从IR4的申请,对主8259A的IR6是同级 ,IR4可以中断响应。

特殊全嵌套方式只适用于主8259A的优先级管理,从8259A还是要用全嵌套方式。

(五)8259A的编程★

  1. 初始化命令字(ICW1~4):每个初始化命令字要写到8259A的不同的端口。

ICW1初始化命令字

写入端口:A0

功能:设置中断触发方式,规定初始化过程是否需要ICW3/ICW4。

表明初始化命令字是ICW1的特征有两个:

任何时候向8259A写入具有以上两个特征的命令字,8259A都认为是ICW1,开始一次新的初始化过程.

ICW2初始化命令字
写入端口:AO=1

功能:写入8个中断源的中断类型号的高5位。

对于中断类型号的低三位,IR0~IR7输入的中断源中断类型号的低三位分别是000—111.(存在对应关系)

ICW2是紧接着ICW1写入到8259A中的命令字,是8259A初始化过程中必须写入的命令字。

③ ICW3初始化命令字

写入端口:A0=1

功能:在多片8259A的系统中,说明主、从8259A之间的连接关系。

从ICW3的低三位通过编码的方式主8259A的接入端,如D2D1D0=011,则连接的主8259A的IR3端。

ICW4初始化命令字:

写入端:A0=1

功能:设置8259A的中断结束方式等。

自动结束中断与非自动结束中断

初始化过程:

(2)操作命令字(OCW1~3)

初始化过程结束后所写入的命令字都是操作命令字。每个操作命令字写入的次数和时间顺序都是没有限定的。

8259A有3个操作命令字:OCW1、OCW2和OCW3。

①OCW1命令字

功能:设置中断屏蔽寄存器。

②OCW2命令字

功能:设置中断优先级管理方式,向8259发送中断结束字(EOI)

③OCW3命令字

主要功能:确定下一次读出是IRR还是ISR

OCW3也有两个特征位,D4=0和D3=1,以便和ICW1和0CW2区分。

8259A初始化编程

例:2片8259A级联,从片的INT接主片的IR2。端口地址:主片20H、21H,从片A0H、A1H。主片和从片均采用边沿触发。主片采用特殊全嵌套方式,从片是全嵌套方式。采用非缓冲方式,主片接+5V,从片接地。主片的中断类型号为08H~0FH,从片的中断类型号为70H~77H。写出主8259A和从8259A的初始化程序段。

主8259A

   MOV AL,11H ;ICW1,边沿触发,多片,需ICW4(P197)OUT 20H,ALMOV AL,08H ;ICW2,中断类型码OUT 21H,AL ;写端口地址不同,A0MOV AL,04H ;ICW3,IR2接从片OUT 21H,ALMOV AL,11H ;ICW4,非缓冲,特殊全嵌套,非自动结束OUT 21H,AL

; 从8259A

   MOV AL,11H ;ICW1,边沿触发,多片,需ICW4OUT A0H,ALMOV AL,70H;ICW2,中断类型码OUT A1H,ALMOV AL,02H ;ICW3,INT接主片的IR2OUT A1H,ALMOV AL,01H ;ICW4,非缓冲,全嵌套,非自动结束OUT A1H,AL

一、中断服务程序(单级中断)

        INTER1  PROC  FARPUSH   AXPUSH   BX   ;保护现场(寄存器)…….POP  BXPOP  AX     ;恢复现场(寄存器)IRETINTER1  ENDP

二、写中断矢量表(设中断类型号为0AH)

    方法1:XOR  AX, AXMOV  DS, AXMOV  DI, 0028H         ;0AH*4=0028HMOV  AX, OFFSET INTER1 ;P91MOV  [DI], AX          ;(0028H)=AX,偏移地址MOV  AX, SEG INTER1   MOV  [DI+2], AX        ;(002AH)=AX,段地址STI                    ;IF=1LAST: HLTJMP   LAST

方法2:;利用DOS功能调用写中断矢量表,功能号为25H(P188)。

       ;入口参数(AL中断类型号、DS:DX中断服务程序入口;地址)MOV  AX, SEG INTER1MOV  DS, AXMOV  DX, OFFSET INTER1MOV  AL,0AHMOV  AH, 25HINT  21HSTI                LAST: HLTJMP   LAST

微机原理学习笔记——中断系统相关推荐

  1. 微机原理换行代码_微机原理学习笔记

    基础概论 硬件设备 主机系统: CPU 存储器 输入输出接口 总线 CPU 微处理器简称CPU,是计算机的核心. 主要包括: 运算器 控制器 寄存器组 存储器 定义: 计算机中的记忆装置.用于存放计算 ...

  2. stm32学习笔记-中断系统

    文章目录 问题引入 1.中断系统概述. 1.1 为什么要中断(中断意义) 中断和轮询比较: 1.2 中断处理过程 1.3 中断笔试题 1.4 中断服务函数 2.STM32中断的体系结构. 2.1 结构 ...

  3. 微机原理学习笔记——位操作指令

    位操作类指令是以二进制数据进行的操作,结果对状态标志位有影响,位操作指令有三大类指令分别是:逻辑运算指令.移位指令.循环移位指令. 逻辑运算指令:与AND.或OR.非NOT.异或XOR.测试TEST ...

  4. 微机原理学习笔记-常见寻址方式

    常见寻址方式 文章目录 常见寻址方式 1. 立即数寻址 2.寄存器寻址(寄存器直接寻址) 3. 直接寻址(存储器直接寻址) 4. 寄存器间接寻址 5. 基址寻址 6. 变址寻址 7.比例变址寻址 8. ...

  5. 微机原理学习笔记-二进制转化为十进制

    除10取余法 设计程序时候的二进制转化为十进制的算法 二进制转化为十进制(除10取余法) 除10取余法中,对于二进制转化为10进制来讲要除于1010,就是把10转化为二进制数,再用二进制数除于1010 ...

  6. 微机原理学习笔记——寻址方式和传送指令(MOV)

    目录 操作数的寻址方式 立即数寻址方式 寄存器寻址方式 存储器寻址方式 段超越前缀指令 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 存储器寻址方式中的 ...

  7. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

  8. MOOC人工智能原理学习笔记1

    人工智能原理学习笔记1 The Foundations of AI: Philosophy Mathematics Economics Neuroscience Psychology Computer ...

  9. DSP28335笔记 ———— 中断系统 之 外部中断

    DSP28335笔记 ---- 中断系统 之 外部中断 我用的开发板是"硬汉DSP28335开发板",文中对于硬件的描述可以说是没有,而且我还没有附上电路图希望在看的朋友不要喷我. ...

最新文章

  1. python按条件拆分列表元素_如何通过在python中拆分列表元素来创建列表?
  2. uci数据集_干货收藏!三大领域常用十大开源数据集
  3. pipeline python,Python-什么是sklearn.pipeline.Pipeline?
  4. @Select注解的使用
  5. 通常也是32位的HTML5
  6. react文字滚动插件_【赠书】Preact(React)核心原理详解
  7. 字体文件夹_下载了各种五花八门的CAD字体,为什么打开图纸还是找不到字体?...
  8. Qt-textEdit 滚顶条设置只读模式
  9. php导出合同模板到excel
  10. 新浪微博分享出现libc++abi.dylib: terminating with uncaught exception of type NSException微博微信SDK运行编译报错
  11. 【“笨办法”学Python】27.记住逻辑关系——布尔逻辑表达式
  12. FX5U Socket通信
  13. 麒麟990银河麒麟SP1升级补丁(0709、1020)升级到(1228)
  14. SpringBoot 文件上传 基于MD5 文件内容校验工具类
  15. TIME_WAIT和CLOSE_WAIT区别
  16. Eclipse一直building workspace: invoking maven project builder卡主
  17. 外刊01 How is COVID-19 affecting our mental health?
  18. systemctl 实现开机自启服务
  19. ubuntu20.04系统出现 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu xenial Release“ 没有Release文件
  20. SCSS 的使用语法

热门文章

  1. anaconda在envs中创建虚拟环境
  2. 近视手术?医学界的一个阴谋
  3. BUGKU-开始也是结束
  4. C语言内存及堆栈操作
  5. 基于IOU的损失函数合集, IoU, GIoU, DIoU,CIoU, EIoU
  6. OFDM通信系统的仿真
  7. stm32f103上位机程序编写笔记
  8. python猫咪藏在哪个房间_Python OS 文件/目录方法
  9. 解决Maven中No valid Maven installation found. Either set the home directory in the configuration dialog
  10. UVa1586 Molar Mass