《微型计算机原理》(王忠民版)PPT电子课件教案第7章输入输出与中断

上传人:1888****888 文档编号:48644074 上传时间:2022-01-12 格式:PPT 页数:143 大小:1.46MB
返回 下载 相关 举报
《微型计算机原理》(王忠民版)PPT电子课件教案第7章输入输出与中断_第1页
第1页 / 共143页
《微型计算机原理》(王忠民版)PPT电子课件教案第7章输入输出与中断_第2页
第2页 / 共143页
《微型计算机原理》(王忠民版)PPT电子课件教案第7章输入输出与中断_第3页
第3页 / 共143页
点击查看更多>>
资源描述
第7章 输入/输出与中断 第7章 输入/输出与中断 7.1 I/O接口概述接口概述 7.2 CPU与外设之间数据传送的方式与外设之间数据传送的方式 7.3 中断技术中断技术 7.4 8086/8088 中断系统中断系统 7.5 可编程中断控制器可编程中断控制器Intel 8259A 第7章 输入/输出与中断 7.1 I/O接口概述接口概述 7.1.1 I/O接口的作用接口的作用 主机与外界交换信息称为输入/输出(I/O)。主机与外界的信息交换是通过输入/输出设备进行的。一般的输入/输出设备都是机械的或机电相结合的产物,比如常规的外设有键盘、显示器、打印机、扫描仪、磁盘机、鼠标器等,它们相对于高速的中央处理器来说,速度要慢得多。此外,不同外设的信号形式、数据格式也各不相同。因此,外部设备不能与CPU直接相连,需要通过相应的电路来完成它们之间的速度匹配、信号转换,并完成某些控制功能。通常把介于主机和外设之间的一种缓冲电路称为I/O接口电路,简称I/O接口(Interface),如图7.1所示。对于主机,I/O接口提供了外部设备的工作状态及数据;对于外部设备,I/O接口记忆了主机送给外设的一切命令和数据,从而使主机与外设之间协调一致地工作。 第7章 输入/输出与中断 图7.1 主机与外设的连接CPUI/O接口外设第7章 输入/输出与中断 对于微型计算机来说,设计微处理器CPU时,并不设计它与外设之间的接口部分,而是将输入/输出设备的接口电路设计成相对独立的部件,通过它们将各种类型的外设与CPU连接起来,从而构成完整的微型计算机硬件系统。 因此,一台微型计算机的输入/输出系统应该包括I/O接口、I/O设备及相关的控制软件。一个微机系统的综合处理能力,系统的可靠性、兼容性、性价比,甚至在某个场合能否使用都和I/O系统有着密切的关系。输入/输出系统是计算机系统的重要组成部分之一,任何一台高性能计算机,如果没有高质量的输入/输出系统与之配合工作,计算机的高性能便无法发挥出来。 第7章 输入/输出与中断 7.1.2 CPU与外设交换的信息与外设交换的信息 主机与I/O设备之间交换的信息可分为数据信息、状态信息和控制信息三类。 1数据信息 数据信息又分为数字量、模拟量和开关量三种形式。 1) 数字量 数字量是计算机可以直接发送、接收和处理的数据。例如,由键盘、显示器、打印机及磁盘等I/O外设与 CPU交换的信息,它们是以二进制形式表示的数或以ASCII码表示的数符。 第7章 输入/输出与中断 2) 模拟量 当计算机应用于控制系统中时,输入的信息一般为来自现场的连续变化的物理量,如温度、压力、流量、位移、湿度等,这些物理量通过传感器并经放大处理得到模拟电压或电流,这些模拟量必须先经过模拟量向数字量的转换(A/D转换)后才能输入计算机。反过来,计算机输出的控制信号都是数字量,也必须先经过数字量向模拟量的转换(D/A转换),把数字量转换成模拟量才能去控制现场。 第7章 输入/输出与中断 3) 开关量 开关量可表示两个状态,如开关的断开和闭合,机器的运转与停止,阀门的打开与关闭等。这些开关量通常要经过相应的电平转换才能与计算机连接。开关量只要用一位二进制数即可表示。 第7章 输入/输出与中断 2. 状态信息 状态信息作为CPU与外设之间交换数据时的联络信息,反映了当前外设所处的工作状态,是外设通过接口送往CPU的。CPU通过对外设状态信号的读取,可得知输入设备的数据是否准备好、输出设备是否空闲等情况。对于输入设备,一般用准备好(READY)信号的高低来表明待输入的数据是否准备就绪;对于输出设备,则用忙(BUSY)信号的高低表示输出设备是否处于空闲状态,如为空闲状态,则可接收CPU输出的信息,否则CPU要暂停送数。因此,状态信息能够保障CPU与外设正确地进行数据交换。 第7章 输入/输出与中断 3控制信息 控制信息是CPU通过接口传送给外设的,CPU通过发送控制信息设置外设(包括接口)的工作模式、控制外设的工作。如外设的启动信号和停止信号就是常见的控制信息。实际上,控制信息往往随着外设的具体工作原理不同而含义不同。 虽然数据信息、状态信息和控制信息含义各不相同,但在微型计算机系统中,CPU通过接口和外设交换信息时,只能用输入指令(IN)和输出指令 (OUT)传送数据,所以状态信息、控制信息也是被作为数据信息来传送的,即把状态信息作为一种输入数据,而把控制信息作为一种输出数据,这样,状态信息和控制信息也通过数据总线来传送。但在接口中,这三种信息是在不同的寄存器中分别存放的。 第7章 输入/输出与中断 7.1.3 I/O接口的基本结构接口的基本结构 I/O接口的基本结构如图7.2所示。每个接口电路中都包含一组寄存器,CPU与外设进行信息交换时,各类信息在接口中存入不同的寄存器,一般称这些寄存器为I/O端口,简称为口(Port)。用来保存CPU和外设之间传送的数据(如数字、字符及某种特定的编码等)、对输入/输出数据起缓冲作用的数据寄存器称为数据端口;用来存放外设或者接口部件本身状态的状态寄存器称为状态端口;用来存放CPU发往外设的控制命令的控制寄存器称为控制端口。 第7章 输入/输出与中断 CBABDBCPU数据端口状态端口I/O设备译码控制端口图7.2 一个典型的I/O接口 第7章 输入/输出与中断 正如每个存储单元都有一个物理地址一样,每个端口也有一个地址与之相对应,该地址称为端口地址。有了端口地址,CPU对外设的输入/输出操作实际上就是对I/O接口中各端口的读/写操作。数据端口一般是双向的,数据是输入还是输出,取决于对该端口地址进行操作时CPU发往接口电路的读/写控制信号。由于状态端口只做输入操作,控制端口只做输出操作,因此,有时为了节省系统地址空间,在设计接口时往往将这两个端口共用一个端口地址,再用读/写信号来分别选择访问。 应该指出,输入/输出操作所用到的地址总是对端口而言,而不是对接口而言的。接口和端口是两个不同的概念,若干个端口加上相应的控制电路才构成接口。 第7章 输入/输出与中断 7.1.4 I/O端口的编址端口的编址 微型计算机系统中I/O端口编址方式有两种:I/O端口与内存单元统一编址和 I/O端口与内存单元独立编址。 1I/O端口与内存单元统一编址 这种编址方式是对I/O端口和存储单元按照存储单元的编址方法统一编排地址号,由I/O端口地址和存储单元地址共同构成一个统一的地址空间。例如,对于一个有16根地址线的微机系统,若采用统一编址方式,其地址空间的结构如图7.3所示。 第7章 输入/输出与中断 图7.3 I/O端口与内存单元统一编址存储器I/O端口0000HXXXXHFFFFH整个地址空间(XXXX+1)HI/O端口第7章 输入/输出与中断 采用统一编址方式后,CPU对I/O端口的输入/输出操作如同对存储单元的读/写操作一样,所有访问内存的指令同样都可用于访问I/O端口,因此无需专门的I/O指令,从而简化了指令系统的设计;同时,对存储器的各种寻址方式也同样适用于对I/O端口的访问,给使用者提供了很大的方便。但由于I/O端口占用了一部分存储器地址空间,因而相对减少了内存的地址可用范围。 第7章 输入/输出与中断 2I/O端口与内存单元独立编址 在这种编址方式中,建立了两个地址空间,一个为内存地址空间,一个为I/O地址空间。内存地址空间和I/O地址空间是相对独立的,通过控制总线来确定CPU到底要访问内存还是I/O端口。为确保控制总线发出正确的信号,除了要有访问内存的指令之外,系统还要提供用于CPU与I/O端口之间进行数据传输的输入/输出指令。 第7章 输入/输出与中断 80 x86 CPU组成的微机系统都采用独立编址方式。在8086/8088系统中,共有20根地址线对内存寻址,内存的地址范围是00000HFFFFFH;用地址总线的低16位对I/O端口寻址,所以I/O端口的地址范围是0000HFFFFH,如图7.4所示。CPU在访问内存和外设时,使用了不同的控制信号来加以区分。例如,当8086 CPU的M/IO信号为1时,表示地址总线上的地址是一个内存地址;为0时,则表示地址总线上的地址是一个端口地址。 第7章 输入/输出与中断 00000HFFFFFH存储器I/OFFFFH0000H图7.4 I/O端口与内存单元独立编址 第7章 输入/输出与中断 采用独立编址方式后,存储器地址空间不受I/O端口地址空间的影响,专用的输入/输出指令与访问存储器指令有明显区别,便于理解和检查。但是,专用I/O指令增加了指令系统复杂性,且I/O指令类型少,程序设计灵活性较差;此外,还要求CPU提供专门的控制信号以区分对存储器和I/O端口的操作,增加了控制逻辑的复杂性。 第7章 输入/输出与中断 3I/O端口的地址译码 微机系统常用的I/O接口电路一般都被设计成通用的I/O接口芯片,一个接口芯片内部可以有若干可寻址的端口。因此,所有接口芯片都有片选信号线和用于片内端口寻址的地址线。例如,某接口芯片内有四个端口地址,则该芯片外就会有两根地址线。本书第8章中将详细介绍几种常用的I/O接口芯片。 第7章 输入/输出与中断 I/O端口地址译码的方法有多种,一般的原则是把CPU用于I/O端口寻址的地址线分为高位地址线和低位地址线两部分,将低位地址线直接连到I/O接口芯片的相应地址引脚,实现片内寻址,即选中片内的端口;将高位地址线与CPU的控制信号组合,经地址译码电路产生I/O接口芯片的片选信号。 第7章 输入/输出与中断 7.2 CPU与外设之间数据传送的方式与外设之间数据传送的方式 7.2.1 程序传送方式程序传送方式 1无条件传送方式无条件传送方式 微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,在它们工作时,可以认为输入设备已随时准备好向CPU提供数据,而输出设备也随时准备好接收CPU送来的数据,这样,在CPU需要同外设交换信息时,就能够用IN或OUT指令直接对这些外设进行输入/输出操作。由于在这种方式下CPU对外设进行输入/输出操作时无需考虑外设的状态,故称之为无条件传送方式。 第7章 输入/输出与中断 对于简单外设,若采用无条件传送方式,其接口电路也很简单。如简单外设作为输入设备时,输入数据保持时间相对于CPU的处理时间要长得多,所以可直接使用三态缓冲器和数据总线相连,如图7.5(a)所示。当执行输入的指令时,读信号有效,选择信号M/处于低电平,因而三态缓冲器被选通,使其中早已准备好的输入数据送到数据总线上,再到达CPU。所以要求CPU在执行输入指令时,外设的数据是准备好的,即数据已经存入三态缓冲器中。 第7章 输入/输出与中断 (b)至外设数据总线(DB)地址总线(AB)锁存器来自CPU的数据地址译码器WRIOM/(a)来自外设的数据数据总线(DB)地址译码器地址总线(AB)1三态缓冲器至CPURDIOM/1图7.5 无条件传送方式(a) 无条件传送数据输入;(b) 无条件传送数据输出 第7章 输入/输出与中断 简单外设为输出设备时,由于外设取数的速度比较慢,要求CPU送出的数据在接口电路的输出端保持一段时间,因而一般都需要锁存器,如图7.5(b)所示。CPU执行输出指令时,M/IO和WR信号有效,于是,接口中的输出锁存器被选中,CPU输出的信息经过数据总线送入输出锁存器中,输出锁存器保持这个数据,直到外设取走。 无条件传送方式下,程序设计和接口电路都很简单,但是为了保证每一次数据传送时外设都能处于就绪状态,传送不能太频繁。对少量的数据传送来说,无条件传送方式是最经济实用的一种传送方法。 第7章 输入/输出与中断 2查询传送方式查询传送方式 查询传送也称为条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应设备的状态,当输入设备处于准备好状态,输出设备处于空闲状态时,CPU才执行输入/输出指令与外设交换信息。为此,接口电路中既要有数据端口,还要有状态端口。 查询传送方式的流程图见图7.6。从图中可以看出,采用查询方式完成一次数据传送要经历如下过程: (1) CPU从接口中读取状态字。 (2) CPU检测相应的状态位是否满足“就绪”条件。 (3) 如果不满足,则重复(1)、(2)步;若外设已处于“就绪”状态,则传送数据。 第7章 输入/输出与中断 图7.6 查询传送方式的流程图NYY取外设状态外设准备就绪?N开始传送数据传送完否?结束第7章 输入/输出与中断 图7.7给出的是采用查询传送方式进行输入操作的接口电路。输入设备在数据准备好之后向接口发选通信号,此信号有两个作用:一方面将外设中的数据送到接口的锁存器中;另一方面使接口中的一个D触发器输出“1”,从而使三态缓冲器的READY位置“1”。CPU输入数据前先用输入指令读取状态字,测试READY位,若READY位为“1”,说明数据已准备就绪,再执行输入指令读入数据。由于在读入数据时信号已将状态位READY清0,于是可以开始下一个数据输入过程。 第7章 输入/输出与中断 选通状态信息READY数据总线DB至CPU地址译码器&5 V锁存器数据缓冲器三态缓冲器Q D输入设备数据状态端口译码输出数据端口译码输出RRD&IO/MRD地址总线AB图7.7 查询式输入的接口电路 第7章 输入/输出与中断 图7.8给出的是采用查询传送方式进行输出操作的接口电路。CPU输出数据时,先用输入指令读取接口中的状态字,测试BUSY位,若BUSY位为0,表明外设空闲,此时CPU才执行输出指令,否则CPU必须等待。执行输出指令时由端口选择信号、M/IO信号和写信号共同产生的选通信号将数据总线上的数据打入接口中的数据锁存器,同时将D触发器置1。D触发器的输出信号一方面为外设提供一个联络信号,通知外设将锁存器锁存的数据取走;另一方面使状态寄存器的BUSY位置1,告诉CPU当前外设处于忙状态,从而阻止CPU输出新的数据。输出设备从接口中取走数据后,会送一个回答信号ACK,该信号使接口中的D触发器置0,从而使状态寄存器中的BUSY位清0,以便开始下一个数据输出过程。 第7章 输入/输出与中断 去CPUDB输出设备&数据地址译码器数据端口译码输出地址总线DB状态端口译码输出状态寄存器BUSY5 V锁存器QD数据总线DB来自CPU选通信号ACKWRIO/MR&RDIO/M图7.8 查询式输出的接口电路 第7章 输入/输出与中断 查询传送方式的主要优点是能保证主机与外设之间协调同步地工作,且硬件线路比较简单,程序也容易实现。但是,在这种方式下,CPU花费了很多时间查询外设是否准备就绪,在这些时间里CPU不能进行其他的操作;此外,在实时控制系统中,若采用查询传送方式,由于一个外设的输入/输出操作未处理完毕就不能处理下一个外设的输入/输出,故不能达到实时处理的要求。因此,查询传送方式有两个突出的缺点:浪费CPU时间,实时性差。所以,查询传送方式适用于数据输入/输出不太频繁且外设较少、对实时性要求不高的情况。 不论是无条件传送方式还是查询传送方式,都不能发现和处理预先无法估计的错误和异常情况。为了提高CPU的效率、增强系统的实时性,并且能对随机出现的各种异常情况做出及时反应,通常采用中断传送方式。 第7章 输入/输出与中断 7.2.2 中断传送方式中断传送方式 中断传送方式是指当外设需要与CPU进行信息交换时,由外设向CPU发出请求信号,使CPU暂停正在执行的程序,转去执行数据的输入/输出操作,数据传送结束后,CPU再继续执行被暂停的程序。 查询传送方式是由CPU来查询外设的状态,CPU处于主动地位,而外设处于被动地位。中断传送方式则是由外设主动向CPU发出请求,等候CPU处理,在没有发出请求时,CPU和外设都可以独立进行各自的工作。目前的微处理器都具有中断功能,而且已经不仅仅局限于数据的输入/输出,而是在更多的方面有重要的应用。例如实时控制、故障处理以及BIOS和DOS功能调用等。第7章 输入/输出与中断 中断传送方式的优点是:CPU不必查询等待,工作效率高,CPU与外设可以并行工作;由于外设具有申请中断的主动权,故系统实时性比查询方式要好得多。但采用中断传送方式的接口电路相对复杂,而且每进行一次数据传送就要中断一次CPU,CPU每次响应中断后,都要转去执行中断处理程序,且都要进行断点和现场的保护和恢复,浪费了很多CPU的时间。故这种传送方式一般适合于少量的数据传送。对于大批量数据的输入/输出,可采用高速的直接存储器存取方式,即DMA方式。 第7章 输入/输出与中断 7.2.3 直接存储器存取直接存储器存取(DMA)传送方式传送方式 1DMA传送方式简介传送方式简介 DMA传送方式是在存储器和外设之间、存储器和存储器之间直接进行数据传送(如磁盘与内存间交换数据、高速数据采集、内存和内存间的高速数据块传送等),传送过程无需CPU介入,这样,在传送时就不必进行保护现场等一系列额外操作,传输速度基本取决于存储器和外设的速度。DMA传送方式需要一个专用接口芯片DMA控制器(DMAC)对传送过程加以控制和管理。在进行DMA传送期间,CPU放弃总线控制权,将系统总线交由DMAC控制,由DMAC发出地址及读/写信号来实现高速数据传输。传送结束后DMAC再将总线控制权交还给CPU。一般微处理器都设有用于DMA传送的联络线。 第7章 输入/输出与中断 控制/状态DMA响应数据READYDMA请求HLDAHOLDDMA控制器数据端口控制/状态端口地址寄存器CPUDMA请求触发器数据缓冲输入设备数据计数器存储器图7.9 DMA系统结构框图 第7章 输入/输出与中断 2DMA控制器的工作方式 1) 单字节传输方式 在该方式下,DMAC每次控制总线后只传输一个字节,传输完后即释放总线控制权。这样CPU至少可以得到一个总线周期,并进行有关操作。 2) 成组传输方式(块传输方式) 第7章 输入/输出与中断 3) 请求传输方式 在该方式下,每传输完一个字节,DMAC都要检测I/O接口发来的DMA请求信号是否有效。若有效,则继续进行DMA传输;否则就暂停传输,将总线控制权交还给CPU,直至DMA请求信号再次变为有效,再从刚才暂停的那一点继续传输。 第7章 输入/输出与中断 3DMA操作的基本过程 1) DMAC的初始化 DMAC的初始化主要做如下几方面工作: (1) 指定数据的传送方向。即指定外设对存储器是做读操作还是写操作,这就要对控制/状态寄存器中的相应控制位置数。 (2) 指定地址寄存器的初值。即给出存储器中用于DMA传送的数据区的首地址。 (3) 指定计数器的初值。即明确有多少数据需要传送。 第7章 输入/输出与中断 2) DMA数据传送 DMA数据传送(以数据输入为例)按以下步骤进行: (1) 外围设备发选通脉冲,把输入数据送入缓冲寄存器,并使DMA请求触发器置1。 (2) DMA请求触发器向控制/状态端口发准备就绪信号,同时向DMA控制器发DMA请求信号。 (3) DMA控制器向CPU发出总线请求信号(HOLD)。 第7章 输入/输出与中断 (4) CPU在完成了现行机器周期后,即响应DMA请求,发出总线允许信号(HLDA),并由DMA控制器发出DMA响应信号,使DMA请求触发器复位。此时,由DMA控制器接管系统总线。 (5) DMA控制器发出存储器地址,并在数据总线上给出数据,随后在读/写控制信号线上发出写的命令。 (6) 来自外设的数据被写入相应存储单元。 (7) 每传送一个字节,DMA控制器的地址寄存器加1,从而得到下一个地址,字节计数器减1。返回(5),传送下一个数据。如此循环,直到计数器的值为0,数据传送完毕。 第7章 输入/输出与中断 3) DMA结束 DMA传送完毕,由DMAC撤消总线请求信号,从而结束DMA操作。CPU撤消总线允许信号,恢复对总线的控制。 前面介绍的三种传送方式各有利弊,在实际使用时,要根据具体情况选择既能满足要求,又尽可能简单的方式。 第7章 输入/输出与中断 7.3 中中 断断 技技 术术 7.3.1 中断的基本概念中断的基本概念 1中断的定义 在CPU执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需暂停正在执行的程序,转去处理该事件(执行中断服务程序),并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断。断点处是指返回主程序时执行的第一条指令的地址。中断过程如图7.10所示。为实现中断功能而设置的硬件电路和与之相应的软件,称为中断系统。 第7章 输入/输出与中断 图7.10 中断过程示意图继续执行断点主程序中断服务程序有中断请求中断处理返回断点第7章 输入/输出与中断 2中中断源断源 任何能够引发中断的事件都称为中断源,可分为硬件中断源和软件中断源两类。硬件中断源主要包括外设(如键盘、打印机等)、数据通道(如磁盘机、磁带机等)、时钟电路(如定时计数器8253)和故障源(如电源掉电)等;软件中断源主要包括为调试程序设置的中断(如断点、单步执行等)、中断指令(如INT 21H等)以及指令执行过程出错(如除法运算时除数为零)等。 第7章 输入/输出与中断 3中断处理过程中断处理过程 对于一个中断源的中断处理过程应包括以下几个步骤,即中断请求、中断响应、保护断点、中断处理和中断返回。 1) 中断请求 中断请求是中断源向CPU发出的请求中断的要求。软件中断源是在CPU内部由中断指令或程序出错直接引发中断;而硬件中断源必须通过专门的电路将中断请求信号传送给CPU,CPU也有专门的引脚接收中断请求信号。例如,8086/8088 CPU用INTR引脚(可屏蔽中断请求)和NMI引脚(非屏蔽中断请求)接收硬件中断请求信号。一般外设发出的都是可屏蔽中断请求。 第7章 输入/输出与中断 &输入锁存器数据总线中断请求D端口译码地址总线Q中断屏蔽INT5 V输入设备三态缓冲器Q&RD图7.11 中断请求与屏蔽接口电路 第7章 输入/输出与中断 当外设准备好一个数据时,便发出选通信号,该信号一方面把数据存入接口的锁存器中,另一方面使中断请求触发器置1。此时,如果中断屏蔽触发器Q端的状态为1,则产生了一个发往CPU的中断请求信号INT。中断屏蔽触发器的状态决定了系统是否允许该接口发出中断请求。可见,要想产生一个中断请求信号,需满足两个条件:一是要由外设将接口中的中断请求触发器置1,二是要由CPU将接口中的中断屏蔽触发器Q端置1。 第7章 输入/输出与中断 2) 中断响应 CPU在每条指令执行的最后一个时钟周期检测其中断请求输入端,判断有无中断请求,若CPU接收到了中断请求信号,且此时CPU内部的中断允许触发器的状态为1,则CPU在现行指令执行完后,发出INTA信号响应中断。从图7.11中可以看到,一旦进入中断处理,立即清除中断请求信号。这样可以避免一个中断请求被CPU多次响应。 图7.12给出了CPU内部产生中断响应信号的逻辑电路。对于8086/8088 CPU可以用开中断(STI)或关中断(CLI)指令来改变中断允许触发器(即IF标志位)的状态。 第7章 输入/输出与中断 &R1允许中断开中断指令关中断指令CPUCPU响应中断信号INTRRESETSQ图7.12 CPU内部设置中断允许触发器 第7章 输入/输出与中断 3) 保护断点 CPU一旦响应中断,需要对其正在执行程序的断点信息进行保护,以便在中断处理结束后仍能回到该断点处继续执行。对于8086/8088 CPU,保护断点的过程由硬件自动完成,主要工作是关中断、将标志寄存器内容入栈保存以及将CS和IP内容入栈保存。 第7章 输入/输出与中断 4) 中断处理 中断处理的过程实际就是CPU执行中断服务程序的过程。用户编写的用于CPU为中断源进行中断处理的程序称为中断服务程序。由于不同中断源在系统中的作用不同,所要完成的功能不同,因此,不同中断源的中断服务程序内容也各不相同。例如,对于图7.11所示的输入设备,其中断服务程序的主要任务是用输入指令(IN)从接口中的数据端口向CPU输入数据。 第7章 输入/输出与中断 另外,主程序中有些寄存器的内容在中断前后需保持一致,不能因中断而发生变化,但在中断服务程序中又用到了这些寄存器,为了保证在返回主程序后仍能从断点处继续正确执行,还需要在中断服务程序的开头对这些寄存器内容进行保护(即保护现场),在中断服务程序的末尾恢复这些寄存器的内容(即恢复现场)。保护现场和恢复现场一般用PUSH和POP指令实现,所以要特别注意寄存器内容入栈和出栈的次序。 第7章 输入/输出与中断 5) 中断返回 执行完中断服务程序,返回到原先被中断的程序,此过程称为中断返回。为了能正确返回到原来程序的断点处,在中断服务程序的最后应专门放置一条中断返回指令(如8086/8088的IRET指令)。中断返回指令的作用实际上是恢复断点,也就是保护断点的逆过程。 第7章 输入/输出与中断 7.3.2 中断优先级和中断的嵌套中断优先级和中断的嵌套 1中断优先级 中断请求是随机发生的,当系统具有多个中断源时,有时会同时出现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次序称为中断优先级。对于不同级别的中断请求,一般的处理原则是: (1) 不同优先级的多个中断源同时发出中断请求,按优先级由高到低依次处理。 第7章 输入/输出与中断 (2) 低优先级中断正在处理,出现高优先级请求,应转去处理高优先级请求,服务结束后再返回原优先级较低的中断服务程序继续执行。 (3) 高优先级中断正在处理,出现低优先级请求,可暂不响应。 (4) 中断处理时,出现同级别请求,应在当前中断处理结束以后再处理新的请求。 第7章 输入/输出与中断 2中断优先级的确定 在微机系统中通常用三种方法来确定中断源的优先级别,即软件查询法、硬件排队电路法和专用中断控制芯片法。本节简要介绍前两种方法,第三种方法将在本章的最后一节作详细介绍。 1) 软件查询法 软件查询法需要简单的硬件电路支持。以8个中断源为例,其硬件电路如图7.13所示,将8个外设的中断请求组合起来作为一个端口(中断寄存器),并将各个外设的中断请求信号相或,产生一个总的INT信号。 第7章 输入/输出与中断 任一个外设有中断请求,该电路都可向CPU发中断请求信号(INT),CPU响应后进入中断处理程序,在中断处理程序的开始先把中断寄存器的内容读入CPU,再对寄存器内容进行逐位查询,查到某位状态为1,表示与该位相连的外设有中断请求,于是转到与其相应的中断服务程序,同时该外设撤消其中断请求信号。软件查询方式的流程图如图7.14所示。 第7章 输入/输出与中断 1CPUD7INTRINT 1中断寄存器INTD0INT 2INT 8图7.13 软件查询法的硬件电路 第7章 输入/输出与中断 对1号中断源服务NNNYYY断点保护INT 1?INT 2?对2号中断源服务对n号中断源服务INT n?图7.14 软件查询方式的流程图 第7章 输入/输出与中断 对于图7.13所示电路,设中断寄存器端口号为n,则软件查询的程序段如下: IN AL,n TEST AL,80H ;1号外设有请求? JNZ II1;有,转1号中断服务程序 TEST AL,40H ;2号外设有请求? JNZ II2 ;有,转2号中断服务程序第7章 输入/输出与中断 可以看出,采用软件查询方式,各中断源的优先级是由查询顺序决定的,最先查询的设备,其优先级最高,最后查询的设备,其优先级最低。采用软件查询方式的优点是节省硬件。但是,由于CPU每次响应中断时都要对各中断源进行逐一查询,所以其响应速度较慢。对于优先级较低的中断源来说,该缺点更为明显。 第7章 输入/输出与中断 2) 硬件排队电路硬件排队电路 采用硬件排队电路法,各个外设的优先级与其接口在排队电路中的位置有关。常用的硬件优先权排队电路有链式优先权排队电路、硬件优先级编码加比较器的排队电路等。图7.15给出了一个链式优先级排队电路。 第7章 输入/输出与中断 图7.15中,当响应信号沿链式电路进行传递时,最靠近CPU并发出中断请求的接口将首先拦截住响应信号,CPU进入相应外设的中断处理程序,在服务完成后,该外设撤消其中断请求,解除对下一级外设的封锁。例如,当CPU收到中断请求信号并响应中断时,若1号外设有中断请求(高电平),则立即向1号外设接口发出应答信号,同时封锁2号、3号等外设的中断请求,转去对1号外设服务;若1号外设没有中断请求,而2号外设有中断请求时,响应信号便传递给2号外设,向2号外设接口发出应答信号,同时封锁3号外设的中断请求;若CPU在为2号外设进行中断服务时1号外设发出了中断请求,CPU会挂起对2号外设的服务转去对1号外设服务,1号外设处理结束后,再继续为2号外设服务。可以看出,链式优先级排队电路不仅能够确定各中断源的优先级,而且在相应软件的配合下,可实现高级别的请求中断低级别的服务(即中断的嵌套)。 第7章 输入/输出与中断 响应3#中断请求“ 1”应答2#应答3#应答1#1#中断请求2#中断请求&INT&图7.15 链式中断优先级电路 第7章 输入/输出与中断 上述两种方法虽然可以解决中断优先级控制问题,但实现起来在硬件和软件上都要做大量的工作,十分麻烦。目前,最方便的办法就是利用厂家提供的可编程中断控制器,这样的器件在各种微机中得到普遍应用。本章后面将介绍广泛应用于80 x86微机系统中的专用可编程中断控制芯片8259A。 第7章 输入/输出与中断 3中断嵌套中断嵌套 CPU在执行低级别中断服务程序时,又收到较高级别的中断请求,CPU暂停执行低级别中断服务程序,转去处理这个高级别的中断,处理完后再返回低级别中断服务程序,这个过程称为中断嵌套,如图7.16所示。 高级中断请求低级中断请求STISTI主程序低级中断服务程序高级中断服务程序图7.16 中断嵌套示意图 第7章 输入/输出与中断 一般CPU响应中断请求后,在进入中断服务程序前,硬件会自动实现关中断,这样,CPU在执行中断服务程序时将不能再响应其他中断请求。为了实现中断嵌套,应在低级别中断服务程序的开始处加一条开中断指令STI。能够实现中断嵌套的中断系统,其软、硬件设计都非常复杂,如果采用了可编程中断控制器,就会方便很多。 第7章 输入/输出与中断 7.4 8086/8088中断系统中断系统 7.4.1 8086/8088的中断源类型的中断源类型 8086/8088 CPU可以处理256种不同类型的中断,每一种中断都给定一个编号(0255),称为中断类型号,CPU根据中断类型号来识别不同的中断源。8086/8088的中断源如图7.17所示。从图中可以看出8086/8088的中断源可分为两大类:一类来自CPU的外部,由外设的请求引起,称为硬件中断(又称外部中断);另一类来自CPU的内部,由执行指令时引起,称为软件中断(又称内部中断)。 第7章 输入/输出与中断 NMI(17号引脚)中 断 逻 辑非屏蔽中断请求INT 2硬件(外部)中断软件(内部)中断可屏蔽中断请求中断类型号32255INTR(18号引脚)中断指令INT nN32255溢出中断INTOINT 4断点中断INT 3单步中断(TF1)INT 1除法错误INT 0图7.17 8086/8088中断源 第7章 输入/输出与中断 1软件中断软件中断(内部中断内部中断) 8086/8088的软件中断主要有五种,分为三类。 1) 处理运算过程中某些错误的中断处理运算过程中某些错误的中断 执行程序时,为及时处理运算中的某些错误,CPU以中断方式中止正在运行的程序,提醒程序员改错。 (1) 除法错中断(中断类型号为0)。在8086/8088 CPU执行除法指令(DIV/IDIV)时,若发现除数为0,或所得的商超过了CPU中有关寄存器所能表示的最大值,则立即产生一个类型号为0的内部中断,CPU转去执行除法错中断处理程序。 第7章 输入/输出与中断 (2) 溢出中断INTO(中断类型号为4)。CPU进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,若此时执行INTO指令,会产生溢出中断,打印出一个错误信息,结束时不返回,而把控制权交给操作系统。若OF=0,则INTO不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。例如: ADD AX,BXINTO;测试加法的溢出 第7章 输入/输出与中断 2) 为调试程序设置的中断 (1) 单步中断(中断类型号为1)。当TF=1时,每执行一条指令,CPU会自动产生一个单步中断。单步中断可一条一条指令地跟踪程序流程,观察各个寄存器及存储单元内容的变化,帮助分析错误原因。单步中断又称为陷阱中断,主要用于程序调试。 (2) 断点中断(中断类型号为3)。调试程序时可以在一些关键性的地方设置断点,它相当于把一条INT 3 指令插入到程序中,CPU每执行到断点处,INT 3 指令便产生一个中断,使CPU转向相应的中断服务程序。 第7章 输入/输出与中断 3) 中断指令INT n引起的中断(中断类型号为n) 程序设计时,可以用INT n指令来产生软件中断,中断指令的操作数n给出了中断类型号,CPU执行INT n指令后,会立即产生一个类型号为n的中断,转入相应的中断处理程序来完成中断功能。 第7章 输入/输出与中断 2硬件中断(外部中断) 8086/8088 CPU有两条外部中断请求线NMI(非屏蔽中断)和INTR(可屏蔽中断)。 1) 非屏蔽中断NMI(中断类型号为2) 整个系统只有一个非屏蔽中断,它不受IF标志位的屏蔽。出现在NMI上的请求信号是上升沿触发的,一旦出现,CPU将予以响应。非屏蔽中断一般用于紧急故障处理。 第7章 输入/输出与中断 2) 可屏蔽中断INTR 可屏蔽中断请求信号从INTR引脚送往CPU,高电平有效,受IF标志位屏蔽,IF0时,对于所有从INTR引脚进入的中断请求,CPU均不予响应;另外,也可以在CPU外部的中断控制器(8259A)中以及各个I/O接口电路中对某一级中断或某个中断源单独进行屏蔽。 第7章 输入/输出与中断 当外设的中断请求未被屏蔽,且IF=1,则CPU在当前指令周期的最后一个T状态去采样INTR引脚,若有效,CPU予以响应。CPU将执行两个连续的中断响应周期,送出两个中断响应信号 INTA。第一个响应周期,CPU将地址及数据总线置高阻;在第二个响应周期,外设向数据总线输送一个字节的中断类型号,CPU读入后,就可在中断向量表中找到该类型号的中断服务程序的入口地址,转入中断处理。 值得注意的是,对于非屏蔽中断和软件中断,其中断类型号由CPU内部自动提供,不需去执行中断响应周期读取中断类型号。 第7章 输入/输出与中断 38086/8088中断源的优先级 8086/8088中断源的优先级顺序由高到低依次为:软件中断(除单步中断外)、非屏蔽中断、可屏蔽中断、单步中断。 在PC机系统中,外设的中断请求通过中断控制器8259A连接到CPU的INTR引脚,外设中断源的优先级别由8259A进行管理。 第7章 输入/输出与中断 7.4.2 中断向量表中断向量表 中断向量表是存放中断向量的一个特定的内存区域。所谓中断向量,就是中断服务程序的入口地址。对于8086/8088系统,所有中断服务程序的入口地址都存放在中断向量表中。 8086/8088可以处理256种中断,每种中断对应一个中断类型号,每个中断类型号与一个中断服务程序的入口地址相对应。每个中断服务程序的入口地址占4个存储单元,其中低地址的两个单元存放中断服务程序入口地址的偏移量(IP);高地址的两个单元存放中断服务程序入口地址的段地址(CS)。256个中断向量要占25641024个单元,即中断向量表长度为1K个单元。8086/8088系统的中断向量表位于内存的前1K字节,地址范围为00000H003FFH。8086/8088的中断向量表如图7.18所示。 第7章 输入/输出与中断 00000H00003H00008H0000BH00004H00007H0000CH0000FH00010H00013H00014H0007FH00080H003FCHIP内容CS内容类型0中断入口地址(除法出错)专用中断(5个)用户自定义中断(224个)系统保留中断(27个)类型1中断入口地址(单步中断)类型2中断入口地址(NMI)类型3中断入口地址(断点中断)类型4中断入口地址(溢出中断)类型5中断入口地址类型31中断入口地址类型32中断入口地址类型255中断入口地址图7.18 8086/8088的中断向量表 第7章 输入/输出与中断 图7.18所示的中断向量表中有5个专用中断(类型0类型4),它们已经有固定用途;27个系统保留的中断(类型5类型31)供系统使用,不允许用户自行定义;224个用户自定义中断(类型32类型255),这些中断类型号可供软中断INT n或可屏蔽中断INTR使用,使用时,要由用户自行填入相应的中断服务程序入口地址。(其中有些中断类型已经有了固定用途,例如,类型21H的中断已用做DOS的系统功能调用)。 第7章 输入/输出与中断 由于中断服务程序入口地址在中断向量表中是按中断类型号顺序存放的,因此每个中断服务程序入口地址在中断向量表中的位置可由“中断类型号4”计算出来。CPU响应中断时,把中断类型号N乘以4,得到对应地址4N(该中断服务程序入口地址所占4个单元的第一个单元的地址),然后把由此地址开始的两个低字节单元(4N,4N+1)的内容装入IP寄存器,再把两个高字节单元(4N+2,4N+3)的内容装入CS寄存器,于是CPU转入中断类型号为N的中断服务程序。 这种采用向量中断的方法,CPU可直接通过向量表转向相应的处理程序,而不需要去逐个检测和确定中断源,因而可以大大加快中断响应的速度。 第7章 输入/输出与中断 7.4.3 8086/8088的中断处理过程的中断处理过程 FLAGS 入栈NNN完成当前指令有内部中断吗?从指令中或内部获得中断类型号从外部得到中断类型号TEMP=1?令TEMPTF调中断处理程序YYY有NMI中断吗?有INTR中断吗?TF1?执行下一条指令NNNNY中断类型号2YIF1?中断类型号1清IF、TFCS、IP入栈返回断点FLAGS出栈IP、CS出栈中断服务有NMI?(1)(1)(1)(1)(2)(3)(4)(5)YY图7.19 8086/8088 CPU中断处理的基本过程 第7章 输入/输出与中断 在图示流程中,(1)(5)是CPU的内部处理,由硬件自动完成。 所有内部中断(除法错、INT n、INTO、单步和断点中断)以及NMI中断不需要从数据总线上读取中断类型码,而INTR中断需由CPU读取中断类型码,其中断类型码由发出INTR信号的接口电路提供。 该流程图还反映出了8086/8088系统中各中断源优先级的高低。 第7章 输入/输出与中断 7.4.4 中断服务程序的设计中断服务程序的设计 中断服务程序的一般结构如图7.20所示。如前所述,若该中断处理能被更高级别的中断源中断,则需加入开中断指令。在中断服务程序的最后,一定要有中断返回指令,以保证断点的恢复。 用户在设计中断服务程序时要预先确定一个中断类型号,不论是采用软件中断还是硬件中断,都只能在系统预留给用户的类型号中选择。 第7章 输入/输出与中断 关中断保护现场开中断中断服务恢复现场中断返回图7.20 中断服务程序的一般结构 第7章 输入/输出与中断 1DOS系统功能调用法系统功能调用法 功能号:(AH)=25H。 入口参数:(AL)=中断类型号 (DS)=中断服务程序入口地址的段地址 (DX)=中断服务程序入口地址的偏移地址 第7章 输入/输出与中断 下面程序段完成中断类型号为60H的入口地址置入。PUSH DS;保护DSMOV DX,OFFSET INT60;取服务程序偏移地址MOV AX,SEG INT60;取服务程序段地址MOV DS,AXMOV AH,25H;送功能号MOV AL,60H;送中断类型号INT 21H;DOS功能调用 POP DS;恢复DS 第7章 输入/输出与中断 2直接装入法 用传送指令直接将中断服务程序首地址置入矢量表中。设中断类型号为60H(此类型号对应的矢量表地址为从00180H开始的四个连续存储单元)。程序段如下:XOR AX,AXMOV DS,AXMOV AX,OFFSET INT60MOV DS:0180H,AX;置服务程序偏移地址MOV AX,SEG INT60 MOV DS:0180H+2,AX;置服务程序所在代码段的段地址 第7章 输入/输出与中断 7.5 可编程中断控制器可编程中断控制器Intel 8259A 7.5.1 8259A的功能的功能 8259A是可编程中断控制器(Programmable Interrupt Controller)芯片,用于管理和控制80 x86的外部中断请求,可实现中断优先级判定,提供中断类型号,屏蔽中断输入等功能。单片8259A可管理8级中断,若采用级联方式,最多可以用9片8259A构成两级中断机构,管理64级中断。8259A是可编程器件,它所具有的多种中断优先级管理方式可以通过主程序在任何时候进行改变或重新组织。 第7章 输入/输出与中断 7.5.2 8259A的内部结构及外部引脚的内部结构及外部引脚 18259A的内部结构的内部结构 内部总线CAS0D7D0数据总线缓冲器控制电路INT读/写控制逻辑RDWRA0CS级联缓冲/比较器CAS1CAS2EN/SPINTA中断服务寄存器(ISR)优先权判别器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR7IR1IR0图7.21 8259A内部结构框图 第7章 输入/输出与中断 中断请求寄存器IRR(Interrupt Request Register),8位,接受并锁存来自IR0IR7的中断请求信号,当IR0IR7上出现某一中断请求信号时,IRR对应位被置1;中断屏蔽寄存器IMR(Interrupt Mask Register),8位,若IRR中记录的各级中断中有任何一级需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求进入优先权判别器;中断服务寄存器ISR(In-Service Register),8位,保存当前正在处理的中断请求,例如,如果ISR的D2=1,表示CPU正在为来自IR2的中断请求服务;优先权判别器PR(Priority Resolver)能够将各中断请求中优先级最高者选中,并将ISR中相应位置1。若某中断请求正在被处理,8259A外部又有新的中断请求,则由优先权判别器将新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。若新的中断请求比正在处理的中断级别高,则正在处理的中断自动被禁止,先处理级别高的中断,由PR通过控制逻辑向CPU发出中断申请INT。 第7章 输入/输出与中断 CPU收到中断请求后,若IF=1,则CPU完成当前指令后,响应中断,即执行两个中断响应总线周期,在 引脚上发出两个负脉冲。8259A收到第一个负脉冲后,使IRR锁存功能失效,不接受IR0IR7上的中断请求信号;直到第二个负脉冲结束后,才又使IRR锁存功能有效,并清除IRR的相应位,使ISR的对应位置1,以便为优先级裁决器以后的裁决提供依据。收到第二个负脉冲后,8259A把当前中断的中断类型号送到D7D0,CPU根据此类型号进入相应的中断服务程序。在中断服务程序结束时向8259A发中断结束命令,该命令将ISR寄存器的相应位清0,中断处理结束。 INTA第7章 输入/输出与中断 数据总线缓冲器是8259A与系统之间传送信息的数据通道。 读/写控制逻辑包含了初始化命令字寄存器和操作命令字寄存器。其功能是确定数据总线缓冲器中数据的传输方向,选择内部的各命令字寄存器。当CPU发读信号时将8259A的状态信息放到数据总线上;当CPU发写信号时,将CPU发来的命令字信息送入指定的命令字寄存器中。 级联缓冲/比较器用来存放和比较在系统中用到的所有8259A的级联地址。主控8259A通过CAS0、CAS1和CAS2发送级联地址,选中从控8259A。 第7章 输入/输出与中断 图7.22 8259A引脚CAS28259AD7CAS0GNDVCCA0IR7INT12345678910111213142827262524232221201918171615INTAIR6IR5IR4IR3IR2IR1IR0EN / SPCSWRRDD6D5D4D3D2D1D0CAS1第7章 输入/输出与中断 28259A的外部引脚的外部引脚 8259A采用28脚双列直插封装形式,如图7.22所示。 CS:片选信号,输入,低电平有效,来自地址译码器的输出。只有该信号有效时,CPU才能对8259A进行读/写操作。 WR:写信号,输入,低电平有效,通知8259A接收CPU从数据总线上送来的命令字。 RD:读信号,输入,低电平有效,用于读取8259A中某些寄存器的内容(如IMR、ISR或IRR)。 第7章 输入/输出与中断 D7D0:双向、三态数据线,接系统数据总线的D7D0,用来传送控制字、状态字和中断类型号等。 IR7IR0:中断请求信号,输入,从I/O接口或其他8259A(从控制器)上接收中断请求信号。在边沿触发方式中,IR输入应由低到高,此后保持为高,直到被响应。在电平触发方式中,IR输入应保持高电平。 INT:8259A向CPU发出的中断请求信号,高电平有效,该引脚接CPU的INTR引脚。 INTA:中断响应信号,输入,接收CPU发来的中断响应脉冲以通知8259A中断请求已被响应,使其将中断类型号送到数据总线上。 第7章 输入/输出与中断 CAS0CAS2:级联总线,输入或输出,用于区分特定的从控制器件。8259A作为主控制器时,该总线为输出,作为从控制器时,为输入。 SP/EN:从片/允许缓冲信号,输入或输出,该引脚为双功能引脚。在缓冲方式中(即8259A通过一个数据总线收发器与系统总线相连),该引脚被用做输出线,控制收发器的接收或发送;在非缓冲方式中,该引脚作为输入线,确定该8259A是主控制器(SP/EN1)还是从控制器(SP/EN0)。8259A的级联方式如图7.23所示。 第7章 输入/输出与中断 A0为地址输入信号,用于对8259A内部寄存器端口的寻址。每片8259A对应两个端口地址,一个为偶地址,一个为奇地址,且偶地址小于奇地址。在与8088系统相连时,可直接将该引脚与地址总线的A0连接;与8086系统连接时要特别注意,因为8259A只有8根数据线,8086有16根,8086与8259A的所有数据传送都用16位数据总线的低8位进行。要保证所有传送都用总线的低8位,最简单的方法是将8086地址总线的A1和8259A的A0端相连,这样,就可以用两个相邻的偶地址作为8259A的端口地址,从而保证用数据总线的低8位和8259A交换数据。 第7章 输入/输出与中断 在这种情况下,从CPU的角度来看,对两个端口寻址时,使A0总是为0,而A1为1或者为0,即这两个端口用的是相邻的两个偶地址;从8259A的角度来看,只有地址总线的A1和8259A的A0端相连,地址总线的A0未与8259A相连,所以,当地址总线的A1为0时,8259A认为是对偶地址端口进行访问,当地址总线的A1为1时,8259A认为是对奇地址端口进行访问,从而将两个本来相邻的偶地址看成是一奇一偶两个相邻地址。这样,又正好符合了8259A对端口地址的要求。因此,在实际的8086系统中,总是给8259A分配两个相邻的偶地址,其中,一个为4的倍数,对应于A1=0,A0=0,并使这个地址较低;另一个为2的倍数,对应于A1=1,A0=0,并使这个地址较高。 第7章 输入/输出与中断 7.5.3 8259A的工作方式的工作方式 1中断优先级管理方式 1) 全嵌套方式 全嵌套方式也称固定优先级方式。在这种方式下,由IR端引入的中断请求具有固定的优先级,IR0最高,IR7最低。在对8259A初始化后若没有设置其他优先级方式,则默认为全嵌套方式。 第7章 输入/输出与中断 当一个
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!