中断服务程序流程图Word格式.docx

上传人:b****3 文档编号:17106572 上传时间:2022-11-28 格式:DOCX 页数:19 大小:113.78KB
下载 相关 举报
中断服务程序流程图Word格式.docx_第1页
第1页 / 共19页
中断服务程序流程图Word格式.docx_第2页
第2页 / 共19页
中断服务程序流程图Word格式.docx_第3页
第3页 / 共19页
中断服务程序流程图Word格式.docx_第4页
第4页 / 共19页
中断服务程序流程图Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

中断服务程序流程图Word格式.docx

《中断服务程序流程图Word格式.docx》由会员分享,可在线阅读,更多相关《中断服务程序流程图Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

中断服务程序流程图Word格式.docx

输入/输出信息的速率也相差很大。

因此,CPU与外部设备之间的信息交换技术比较复杂.

CPU与外设之间的信息交换,是通过它们之间接口电路中的I/O端口来进行的,由于同一个外部设备与CPU之间所要传送的信息类型不同,方向不同,作用也不一样(例如数据信息、状态信息、控制信息、输入/输出等),所以接口电路中可以设置多个端口来分别处理这些不同的信息.

2.输入/输出端口的寻址方式

微机系统采用总线结构形式,即通过一组总线来连接组成系统的各个功能部件(包括CPU、内存、I/O端口),CPU、内存、I/O端口之间的信息交换都是通过总线来进行的,如何区分不同的内存单元和I/O端口,是输入/输出寻址方式所要讨论解决的问题。

根据微机系统的不同,输入/输出的寻址方式通常有两种形式:

(1).存储器对应的输入、输出寻址方式

这种方式又称为存储器统一编址寻址方式或存储器映象寻址方式。

方法:

把外设的一个端口与存储器的一个单元作同等对待,每一个I/O端口都有一个确定的端口地址,CPU与I/O端口之间的信息交换,与存储单元的读写过程一样,内存单元与I/O端口的不同,只在于它们具有不同的的地址。

优点:

①CPU对I/O端口的读/写操作可以使用全部存储器的读/写操作指令,也可以用对存储器的不同寻址方式来对I/O端口中的信息,直接进行算术、逻辑运算及循环、移位等操作。

②内存与外设地址的分配,可以用统一的分布图。

③不需要专门的输入、输出操作指令。

缺点:

1内存与I/O端口统一编址时,在地址总线根数一定的情况下,使系统中实际可以直

接寻址的内存单元数减少。

②一般情况下,系统中I/O端口数远小于内存单元数,所以在用直接寻址方式来寻址这些端口时,要表示一个端口地址,必须用与表示内存单元地址相同的字节数,使得指令代码较长,相应地读/写执行时间也较长,这对提高系统的运行速度是不利的。

Mortorola公司的M6800CPU等均采用这种寻址I/O端口的方式.

3.CPU与外设之间所传送的信息类型

CPU与I/O端口之间所交换的信息,可以有下列几种类型:

①数据信息:

包括数字量、模拟量、开关量等,可以输入、也可以输出

2状态信息:

这是I/O端口送给CPU的有关本端口所对应的外设当前状态的信息.供CPU进行分析、判断、决策。

③控制信息:

这是CPU送给I/O端口的控制命令,使相应的外部设备完成特定的操作.

数据信息、状态信息和控制信息是不同类型的信息,它们所起的作用也不一样。

但在8086/8088微机系统中,这三种不同类型的信息的输入、输出过程是相同的。

为了加以区分,可以使它们具有不同的端口地址,在端口地址相同的情况下,可以规定操作的顺序,或者在输入/输出的数据中设置特征位。

二、CPU与外设之间输入/输出数据的传输控制方式

CPU与外设之间传输数据的控制方式通常有三种:

程序方式、中断方式和DMA方式.

1。

程序方式

指用输入/输出指令,来控制信息传输的方式,是一种软件控制方式,根

据程序控制的方法不同,又可以分为无条件传送方式和条件传送方式。

1无条件传送方式

条件:

利用程控方式与外设交换信息时,如果输入/输出的时刻,都可以保证外设总是处于“准备好”状态,则可以直接利用输入/输出指令进行信息的输入/输出操作。

图5-1

如图5-1,从硬件电路上来看:

输入:

加三态缓冲器(控制端由地址译码信号和

信号选中,CPU用IN指令)

输出:

加锁存器(控制端由地址译码信号和

信号选中,CPU用OUT指令)

这种方式下的硬、软件设计都比较简单,但应用的局限性较大,因为很难保证外设在每次信息传送时都处于“准备好”状态,一般只用在诸如开关控制、七段数码管的显示控制等场合。

2条件传送方式

又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;

只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。

一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY”=1表示输入数据已准备好。

输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据.

过程:

✧输入操作的程序流程如图5—2所示:

对READY的状态查询,是通过读状态端口的相应位来实现的,输出的情况亦大致相同,这种传送控制方式的最大优点是,能够保证输入/输出数据的正确性。

✧输入接口

以输入设备将数据送入锁存,发选通信号开始,→READY=1→CPU查询(读READY)→读数据→清除READY。

见图5-3图5-2

✧输出接口

CPU送数据至锁存器,发选通信号,→a。

通知外设取数据;

→b。

BUSY→输出设备取完数据→ACK→清BUSY→CPU查询。

见图5-4

图5-3

图5—4

例1假设从某输入设备上输入一组数据送缓冲区,接口电路如图5-3,若缓冲区已满则输出一组信息“BOFFEROVERFLOW”,然后结束。

设该设备的启动地址为0FCH,数据端口为0F8H,状态端口为FAH.

程序如下:

DATASEGMENT

MESS1DB“BUFFEROVERFLOW"

,“$"

BUFFDB60DUP(?

)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETBUFF   ;

送缓冲区指针

MOVCX,60        ;

送计数初值

OUT0FCH,AL       ;

启动设备

WAIT:

INAL,OFAH        ;

查询状态,若为0,则等待

TESTAL,01H

JZWAIT

INAL,0F8H        ;

输入数据

MOV[BX],AL

INCBX

LOOPWAIT        ;

检测缓冲区是否满,不满再输入

MOVDX,OFFSETMESS1   ;

缓冲区满,输出标志字符串

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

✧优先级问题

当CPU需对多个设备进行查询时,就出现了所谓的优先级问题,即究竟先为哪个设备服务,一般来讲,在这种情况下都是采用轮流查询的方式来解决,如图5-5所示

这时的优先级是很明显的,即先查图5-5

询的设备具有较高的优先级。

但这种优先级管理方式,也存在着一个问题,即某设备的优先级是变化的,如当为设备B服务以后,这时即使A已准备好,它也不理睬,而是继续查询C,也就是说A的优先地位并不巩固(即不能保证随时处于优先)。

为了保证A随时具有较高的优先级,可采用加标志的方法,当CPU为B服务完以后,先查询A是否准备好,若此时发现A已准备好,立即转向对A的查询服务,而不是为C设备服务。

第二讲:

 I/O接口原理-中断方式、DMA方式

回顾:

微机系统主机与外部设备之间的数据传送,包括I/O端口的寻址方式,输入/输出的传送控制方式。

I/O接口原理(中断方式、DMA方式)。

40"

3"

2”×

中断传送方式

(1)为什么要采用中断传送方式

从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单.但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。

为了解决这个矛盾,我们提出了中断传送方式:

即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;

或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。

这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。

能够向CPU发出中断请求的设备或事件称为中断源。

微机系统引入中断机制后,使CPU与外设(甚至多个外设)处于并行工作状态,便于实现信息的实时处理和系统的故障处理。

中断方式的原理示意图如图5-6所示。

(2)中断方式下的接口电路图5—6

中断方式提高了CPU的工作效率,但是它同时也提高了系统的硬件开销.因为系统需增加含有中断功能接口电路,用来产生中断请求信号。

以输入方式为例,接口电路如图5-7所示。

图5—7

数据输入的过程:

当外设发STB→数据入锁存器,中断请求触发器置1→若没有屏蔽则产生INTR→CPU满足条件(允许中断;

指令执行完)发

→(进入中断服务子程序)读数据,发

,和地址→清中断请求触发器,数据送D0~D7。

(输出过程请自己思考)

(3)中断优先级

问题的提出:

当系统中有多个设备提出中断请求时,就有一个该响应谁的问题,也就是一个优先级的问题,解决优先级的问题一般可有三种方法:

软件查询法、简单硬件方法及专用硬件方法。

下面分别介绍:

①软件查询法

只需有简单的硬件电路,如将A、B、C三台设备的中断请求信号“或”后作为系统INTR,这时,A、B、C三台设备中只要至少有一台设备提出中断请求,都可以向CPU发中断请求.进入中断服务子程序后,再用软件查询的方式分别对不同的设备的服务,查询程序的设计思想同查询式,查询的前后顺序就给出了设备的优先级,框图如图所示。

②简单硬件方法

以链式中断优先权排队电路为例,

基本设计思想:

将所有的设备连成一条链,靠近CPU的设备优先级最高,越远的设备优先级别越低,则发出中断响应信号,若级别高的设备发出了中断请求,在它接到中断响应信号的同时,封锁其后的较低级设备使得它们的中断请求不能响应,只有等它的中断服务结束以后才开放,允许为低级的设备服务.

如图所示。

③专用硬件方式

采用可编程的中断控制器芯片,如Intel8259A。

图5—11 中断控制器的系统连接

有了中断控制器以后,CPU的INTR和

引脚不再与接口直接相连,而是与中断控制器相连,外设的中断请求信号通过IR0~IR7进入中断控制器,经优先级管理逻辑确认为级别最高的那个请求的类型号会经过中断类型寄存器在当前中断服务寄存器的某位上置1,并向CPU发INTR请求,CPU发出

信号后,中断控制器将中断类型码送出.在整个过程中,优先级较低的中断请求都受到阻塞,直到较高级的中断服务完毕之后,当前服务寄存器的对应位清0,较低级的中断请求才有可能被响应。

电路如图图5-11所示。

利用中断控制器可以通过编程来设置或改变其工作方式,使用起来方便灵活.

(4).中断响应

中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息.然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。

注意:

CPU响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。

(5)中断服务子程序

CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。

中断服务子程序的一般结构如图5—12所示。

①保护现场(由一系列的PUSH指令完成)。

目的是为了保护那些与主程序中有冲突的寄存器,(如AX,BX,CX等),如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话,这一步骤可以省略。

3开中断(由STI指令实现)。

目的是为了能实现中断的嵌套。

4中断服务图5—12中断服务子程序的流程

5恢复现场(由一系列的POP指令完成)。

是与保护现场对应的,但要注意数据恢复的次序,以免混乱。

6返回(使用中断返回指令IRET)。

不能使用一般的子程序返回指令RET,因为IRET指令除了能恢复断点地址外,还能恢复中断响应时的标志寄存器的值,而这后一个动作是RET指令不能完成的。

中断的工作过程可分为五大步骤:

即中断请求、中断判优、中断响应、中断服务和中断返回。

2。

DMA传送方式

利用中断进行信息传送,可以大大提高CPU的利用率,但是其传送过程必须由CPU进行监控。

每次中断,CPU都必须进行断点及现场信息的保护和恢复操作,这些都是一些额外的操作,会占用一定的CPU时间。

如果需要在内存的不同区域之间,或者在内存与外设端口之间进行大量信息快速传送的话,用查询或中断方式均不能满足速度上的要求,这时应采用直接数据通道传送,即DMA数据传送方式.

DMA(DirectMemoryAccess)意为直接数据传送,它是在内存的不同区域之间,或者在内存与外设端口之间直接进行数据传送,而不经过CPU中转的一种数据传送方式,可以大大提高信息的传送速度。

DMA方式传送的主要步骤(见图5-13的流程图)

①外设准备就绪时,向DMA控制器发DMA请求,DMA控制器接到此信号后,向CPU发DMA请求;

②CPU接到HOLD请求后,如果条件允许(一个总线操作结束),则发出HLDA信号作为响应,同时,放弃对总线的控制;

③DMA控制器取得总线控制权后,往地址总线发送地址信号,每传送1个字节,就会自动修改地址寄存器的内容,以指向下一个要传送的字节;

④每传送一个字节,字节计数器的值减1,当减到0时,DMA过程结束;

图5-13DMA的工作流程图

⑤DMA控制器向CPU发结束信号,将总线控制权交回CPU。

DMA传送控制方式,解决了在内存的不同区域之间,或者内存与外设之间大量数据的快速传送问题,代价是需要增加专门的硬件控制电路,称为DMA控制器,其复杂程度与CPU相当。

习题与思考:

1.CPU与外设之间的数据传输控制方式有哪几种?

何谓程序控制方式?

它有哪两种

基本方式?

请分别用流程图的形式描述出来.

2.试从程序转移的角度比较中断控制与子程序调用这两种处理过程,它们有哪些根本

区别?

又有哪些相似之处?

3.用查询式将DATA开始的存贮区的100个字节数据在FCH端口输出,完成程序,

状态端口地址为:

FFH。

4.什么是接口?

什么是端口?

在8086/8088微机系统中,CPU是如何实现端口寻址的?

5.简述链式中断优先级排队电路的工作过程?

6.中断处理的主要步骤有哪些?

试说明每一步的主要动作。

第三讲:

6。

38086/8088中断系统

微机系统主机与外部设备之间的数据传送控制方式,中断的概念及处理过程。

8086/8088中断系统.

5”×

35”×

讨论

5”×

讲授内容:

一、中断分类及中断类型码

中断源:

引起中断的原因或发出中断请求的设备称为中断源.

1.中断的分类

共分为两类:

硬件中断和软件中断

①硬件中断:

即通过外部的硬件产生的中断,如打印机、键盘等,有时也称为外部中断。

硬件中断又可分为两类:

可屏蔽中断和不可屏蔽中断。

不可屏蔽中断:

由NMI引脚引入,它不受中断允许标志的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。

这种中断一旦发生,系统会立即响应;

可屏蔽中断:

由INTR引脚引入,它受中断允许标志的影响,也就是说,只有当IF=1时,可屏蔽中断才能进入,反之则不允许进入,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一个进行处理.

②软件中断(内部中断):

即根据某条指令或者对标志寄存器中某个标志的设置而产生,它与硬件电路无关,常见的如除数为0,或用INTn指令产生.

溢出中断由INT0指令引起

断点中断由INT3指令引起

单步由标志TF引起↘不对应指令

除0由计算结果引起↙不对应指令

2.中断类型码:

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对软件中断和硬件中断响应的过程是不同的,这是由于软件中断和硬件中断所产生的原因不同,下面主要讨论硬件中断的情况.

1.硬件中断的响应过程

硬件中断指的是由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寄存器赋值,以保证堆栈指针的正确性。

⑦当遇到等待指令或串操作指令时,允许在指令执行的过程中进入中断.这时需注意在中断处理子程序中保护现场,以保证中断返回后能继续正确地执行这些指令。

图5—15 中断响应流程图

2.硬件中断的时序

图5-16 8086/8088中断响应总线周期

①要求INTR信号是一个高电平信号,并且维持2个T,因为CPU是在一条指令的最后一个T采样INTR,进入中断响应后,它在第一个总线周期的T1仍需采样INTR.

②当8086工作在最小模式时,从

发出中断响应信号,而在最大模式进,则是通过

的组合完成。

③第一个总线周期用来通知外设,CPU准备响应中断,第二个总线周期,接收外设发回的中断类型码,该类型码必须通过16位数据总线的低8位传送。

④在中断响应总线周期,

为低,数据/地址线浮空,

和地址/状态线均浮空,中间的三个空闲周期也可为两个或没有(8088)。

3.软件中断

即通过中断指令来使CPU执行中断处理子程序的方法,特点如下:

①中断类型码由指令提供,不需执行中断响应总线周期,也不受IF标志的影响。

②正在执行软件中断时,若来NMI,则立即响应,若来可屏蔽中断,只要条件允许(如IF=1,当前指令执行完)也可响应

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1