微机原理学习笔记——中断系统

中断系统

目录

中断系统

一、中断的基本概念

中断源

开中断和关中断

中断优先权

中断向量表

中断过程

二、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 FAR

PUSH AX

PUSH BX        ;保护现场

......

PUSH BX

PUSH AX        ;恢复现场

IRET

INTER1 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,AL

   MOV AL,08H ;ICW2,中断类型码

   OUT 21H,AL ;写端口地址不同,A0

   MOV AL,04H ;ICW3,IR2接从片

   OUT 21H,AL

   MOV AL,11H ;ICW4,非缓冲,特殊全嵌套,非自动结束

   OUT 21H,AL

 ; 从8259A

   MOV AL,11H ;ICW1,边沿触发,多片,需ICW4

   OUT A0H,AL

   MOV AL,70H;ICW2,中断类型码

   OUT A1H,AL

   MOV AL,02H ;ICW3,INT接主片的IR2

   OUT A1H,AL

   MOV AL,01H ;ICW4,非缓冲,全嵌套,非自动结束

   OUT A1H,AL

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

        INTER1  PROC  FAR

               PUSH   AX

               PUSH   BX   ;保护现场(寄存器)

               …….

               POP  BX

               POP  AX     ;恢复现场(寄存器)

               IRET

       INTER1  ENDP

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

    方法1:XOR  AX, AX

           MOV  DS, AX

           MOV  DI, 0028H         ;0AH*4=0028H

           MOV  AX, OFFSET INTER1 ;P91

           MOV  [DI], AX          ;(0028H)=AX,偏移地址

           MOV  AX, SEG INTER1   

           MOV  [DI+2], AX        ;(002AH)=AX,段地址

           STI                    ;IF=1

     LAST: HLT

           JMP   LAST

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

       ;入口参数(AL中断类型号、DS:DX中断服务程序入口

       ;地址)

               MOV  AX, SEG INTER1

               MOV  DS, AX

               MOV  DX, OFFSET INTER1

               MOV  AL,0AH

               MOV  AH, 25H

               INT  21H

               STI                

         LAST: HLT

               JMP   LAST

  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿飛学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值