第08章 中断技术及8259A的使用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第8章中断技术及8259A的使用教学重点•(1)中断基本概念•(2)8086中断系统•(3)可编程中断控制器8259A教学要求理解:1)中断、中断源、中断向量、中断过程;2)8086中断系统结构、中断类型码、中断过程;3)8259A的功能、编程及使用方法;掌握:1)8086中断方式及中断入口地址形成方式;2)8086中断处理过程;3)8259A的初始化方法;第8章中断技术及8259A的使用8.1中断的概述8.2中断的一般过程8.38086中断系统8.4中断控制器8259A8.1中断的概述中断是微机原理中的一种非常重要的技术,也是CPU和外部设备进行数据交换的一种很有效的方法中断的概念•所谓中断(Interrupt),是指计算机在运行过程中,当有某些紧急事件或外设请求发生时,迫使CPU暂时中断现行程序的运行而去处理紧急情况或外设请求,即去执行其对应的中断服务程序;等到事件处理完毕,又返回原程序的中断点处,继续执行被中断的程序。这个过程和机制称为中断。中断的用途•CPU与I/O设备并行工作•实现实时处理•多道程序或多重任务的运行•故障处理中断源及其来源分类•引起中断的原因,或能发出中断申请的来源,称为中断源。•通常中断源有以下几种:①一般的输入、输出设备。如键盘、纸带读入机、行打印机等。②数据通道中断源。如磁盘、磁带等。③实时时钟④故障源⑤为调试程序而设置的中断源中断的分类•就其性质讲,可分为内部中断和外部中断•所谓外部中断,一般是指I/O设备或其它硬件电路所引起的中断。它的特点是通过硬件向CPU发出中断请求信号,经常称外部中断为硬件中断。外部中断又分为非屏蔽中断(NMI)和可屏蔽中断(INTR)。•所谓内部中断,主要指CPU内部的中断,是通过指令设置的中断。所以内部中断也称为软件中断。使用软件中断,其功能类似于子程序调用。只是这些子程序大部分是系统提供的,所以这类子程序的调用相当于高级语言中的库函数的调用。8.2中断的一般过程•中断请求•中断响应•中断服务•中断返回中断请求•中断请求信号是由中断源向CPU发出的。中断源可以是外部事件,也可以是CPU的内部事件。外部事件的中断请求是外部设备向CPU中断请求引脚发出的电平或边沿信号。内部事件的中断请求可以是CPU执行一条中断指令使CPU进入中断处理过程,也可以是CPU执行程序的结果使CPU进入中断处理过程。中断响应若为非屏蔽中断申请,则CPU执行完正在执行的那一条指令后,做好保护工作即可去响应;若为可屏蔽中断申请,CPU只有得到允许才能去响应。这就是说CPU能否在接到中断申请后立即响应要视情况而定。对可屏蔽的中断申请,CPU要响应,必须满足以下三个条件:无总线请求;CPU允许中断;CPU执行完现行指令。CPU响应中断要自动完成三项任务:关闭中断;CS,IP以及PSW的内容推入堆栈(保护断点);取得中断服务程序入口地址,进入中断服务。中断服务•中断服务包括以下六个过程:①保护现场②开中断③中断服务程序④关中断⑤恢复现场⑥开中断返回中断返回•在中断服务程序最后安排一条中断返回指令,使断点送回程序计数器IP,继续执行被中断的程序。8.38086中断系统NMIINTR硬件中断可屏蔽中断请求···INTn指令非屏蔽中断请求中断逻辑INT3指令INTO指令单步中断除数为0中断中断控制系统(8259A)8086的中断分类软件中断中断向量及中断向量表•所谓中断向量,实际上就是中断处理子程序的入口地址,每个中断类型对应一个中断向量。•8086的中断系统是以位于内存0段的0~3FFH区域的中断向量表为基础的,中断向量表中最多可以容纳256个中断向量。•中断向量并不是任意存放的。一个中断向量占4个存储单元,其中,前2个单元存放中断处理子程序入口地址的偏移量(IP),低位在前,高位在后,后2个单元存放中断处理子程序入口地址的段地址(CS),同样也是低位在前、高位在后。按照中断类型的序号,对应的中断向量在内存的0段0单元开始有规则地进行排列。8086中断处理的优先级8086CPU的中断优先权排列从高到低为:除法出错中断,溢出中断,INTn,断点中断NMIINTR单步中断8086中断类型号的获取方法•有两种方法获取类型号。•第一种是用指令直接获取。对于类型号0~4的中断,由于8086CPU已规定了产生中断的原因,所以可以直接获取类型号。而INTN类型的中断可以由指令直接得到中断类型号。•第二种是由外部引入的INTR中断,当CPU响应中断时必须由硬件提供中断类型号。在可屏蔽中断响应周期进行到第二个周期时,类型号放入数据总线,CPU从数据总线上获取类型号8086中断过程之内部中断过程①首先将状态寄存器的内容压入堆栈中。②置TF=0,暂停单步中断,并置IF=0,用以屏蔽以后的可屏蔽中断。③断点地址CS:IP压入堆栈。④识别中断源,首先获取中断类型号,并将其乘4,得到存储中断向量的起始地址,进而取得中断向量。将中断向量中的高地址的字送入CS寄存器,将低地址的字送IP寄存器中。⑤执行中断服务程序。⑥中断服务程序最后一条指令为IRET,这条指令的功能保证了从堆栈中弹出断点IP和CS的内容,并存入各自的寄存器中,并接着弹出状态寄存器的内容,恢复断点的状态标志。⑦CPU按CS和IP指示的内容正确地返回了程序的断点处,程序从断点处继续运行。8086中断过程之非屏蔽中断过程①CPU一旦响应了中断请求,首先将状态寄存器的内容压入堆栈中。②置TF=0,暂停单步中断,并置IF=0,用以屏蔽以后的中断。③断点地址CS:IP压入堆栈。④识别中断源,首先由中断类型号02H查中断向量表读取中断服务程序的入口地址到CS和IP中。⑤执行中断服务程序。⑥执行中断返回指令IRET,这条指令的功能保证了从堆栈中弹出断点IP和CS的内容,并存入各自的寄存器中,并接着弹出状态寄存器的内容,恢复断点的状态标志。⑦CPU按CS和IP指示的内容正确地返回了程序的断点处,程序从断点处继续运行。8086中断过程之可屏蔽中断过程①执行中断响应周期发出中断响应信号,从数据总线读取中断类型号。②如果当时IF=0,那么可屏蔽的中断源被屏蔽。当IF=1时,CPU在执行完当前指令(有重复前缀的字符串操作指令除外)后将响应它所收到的中断请求。如果有几个中断源同时请求中断,则CPU只响应其中优先级最高的。③CPU一旦响应了中断请求,首先将状态寄存器的内容压入堆栈中。④置TF=0,暂停单步中断,并置IF=0,用以禁止CPU响应新的可屏蔽中断请求。⑤将指示断点的指令指针寄存器IP及代码段寄存器CS的内容压入堆栈。⑥识别中断源,首先获取中断类型号,并将其乘4,得到存储中断向量的起始地址,进而取得中断向量。⑦将中断向量中的高地址的字送入CS寄存器,将低地址的字送IP寄存器,于是开始执行中断服务程序。⑧中断服务程序最后一条指令为IRET,这条指令的功能保证了从堆栈中弹出断点IP和CS的内容,并存入各自的寄存器中,并接着弹出状态寄存器的内容,恢复断点的状态标志。⑨CPU按CS和IP指示的内容正确地返回了程序的断点处,程序从断点处继续运行。8.4中断控制器8259A•Intel8259A的功能•8259A的结构及引脚•8259A的中断管理方式Intel8259A的功能•Intel8259A是与8080/8085系列以及8088/8086系列兼容的可编程的中断控制器。它的主要功能为:①具有8级优先权控制,通过级连可扩展至64级优先权控制。②每一级中断都可以屏蔽或允许。③在中断响应周期,8259A可提供相应的中断类型号,从而能迅速地转至中断服务程序。④8259A有几种工作方式,可以通过编程来进行选择。8259A内部结构图•中断请求寄存器(IRR)该寄存器用来存放由外部输入的中断请求信号IR7~IR0,当某个输入端为高电平时,该寄存器的相应位置“1”。•中断服务寄存器(ISR)该寄存器记录正在处理中的中断请求,当任何一级中断被响应,CPU正在执行它的中断服务程序时,ISR寄存器中的相应位置“1”,一直保持到该级中断处理过程结束为止。多重中断情况下,ISR寄存器中可有多位被同时置“1”。•优先权判别器(PR)当输入端IR7~IR0中有多个中断请求信号同时产生时,由PR判定哪个中断请求具有最高优先权,并在脉冲期间把它置入中断服务寄存器ISR的相应位。8259A内部结构图的说明8259A内部结构图的说明(续)•中断屏蔽寄存器(IMR)该寄存器中存放有关被屏蔽的中断线上的信息。当某位置“1”时,表示禁止这一级中断请求进入系统,通过IMR寄存器可实现对各级中断的有选择的屏蔽。•级联缓冲/比较器一片8259A只能接收8级中断,当超过8级时,可用多片8259A级联使用,构成主从关系。对于主8259A,其级联信号CAS2~CAS0是输出信号,而对于从8259A,级联信号CAS2~CAS0是输入信号。此时,主8259A的端为“1”,从8259A的端为“0”,且从8259A的INT输出接到主8259的中断输入端IR上,因而可把中断扩展到64级。SPSP8259A的管脚分配8259中断优先权管理方式1.完全嵌套方式2.自动循环方式3.中断屏蔽方式4.特殊完全嵌套方式1.完全嵌套方式•在此种方式下,8259A的中断请求输入端引入的中断具有固定的优先权排队顺序,IR0为最高优先级,IRl为次高优先级,依次类推,IR7为最低优先级。同时,高优先级的中断可进入低优先级,但低优先级不能进入高优先级或同等优先级。2.自动循环方式•在完全嵌套方式下,中断请求IR0~IR7的优先级别是固定不变的,使得从IR0引入的中断总是具有最高优先权。在某些情况下,我们需要能改变这种优先级别,这时,可采用自动循环方式。在这种方式下,从IR0~IR7引入的中断轮流具有最高优先权。因为,当任何一级中断被处理完,它的优先级别就被改变为最低,而最高优先级分配给该中断的下一级中断。例如:现正为IR3引入的中断服务,若服务完毕,IR3为最低优先级,IR4有最高优先级,IR5有次高优先级,依次排列。3.中断屏蔽方式•用中断屏蔽方式管理优先权有两种方法:第一,普通屏蔽方式。这种方式是在中断屏蔽寄存器IMR中,将某一位或几位置“1”来屏蔽掉相应级别的中断请求。CPU在执行主程序时将IMR寄存器的相应位置“1”,也可在CPU执行某级的中断服务中,禁止比它高的中断进入,在服务程序中将IMR寄存器的相应位置“1”屏蔽。第二,采用特殊屏蔽方式,这时可以使低优先级别的中断进入正在服务的高优先级别中。4.特殊完全嵌套方式•特殊完全嵌套方式用在8259A有级联的情况。当任何一个8259A片接收到一个中断请求,经本8259A判别确定为当前最高优先级,则响应这一中断,通过INT端向8259A主片相应的IR端提出中断请求。如果这时8259A主片中ISR相应位已置“1”,则说明该8259A从片的其它输入端已提出过申请,且正在服务。8259A从片的判优电路判别到刚申请的中断优先级最高,故应停止现行中断服务转去为刚申请的中断服务。在8259A有级联的情况下,按完全嵌套方式管理优先权:显然,接在主片IR3上的从片比接在IR4上的从片具有高的优先权,而主片上IR0,IR1,IR2上的中断比从片具有高优先权。8259A中断结束的管理方式1.完全嵌套情况的方法2.自动循环情况的方法3.特殊完全嵌套情况方法完全嵌套情况下的中断结束方法①一般EOI方式,当任何一级中断服务程序结束时,给8259A传送一个EOI命令,8259A将ISR寄存器中级别最高的置“1”位清“0”,这种方式只有在当前结束的中断总是尚未处理完的级别最高的中断时,才能使用这种结束方式。如果在中断服务中修改过中断级别,则不能采用这种方式。②特殊EOI方式,在一般EOI方式的基础上,当中断服务程序结束给8259A发出EOI命令的同时,将当前结束的中断级别也传送给8259A,这就被称作特殊EOI方式。在这种情况下,8259A将ISR寄存器中指定级别的相应置“1”位清“0”。这种方式适合于任何情况下使用。③自动E

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功