接口技术 输入输出接口概述_第1页
接口技术 输入输出接口概述_第2页
接口技术 输入输出接口概述_第3页
接口技术 输入输出接口概述_第4页
接口技术 输入输出接口概述_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1输入输出接口概述2输入输出接口(教材8.1节) I/O接口概述 查询传送方式及其接口 中断传送方式及其接口 DMA传送方式3I/O接口概述为什么需要I/O接口(电路)? 微机的外部设备多种多样 工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大 它们不能与CPU直接相连 必须经过中间电路再与系统相连 这部分电路被称为I/O接口电路多种外设多种外设4I/O接口概述(续1)什么是I/O接口(电路)? I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路 PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路5I/O接口概述(续2)什么是微机接口技术?

2、处理微机系统与外设间联系的技术 注意其软硬结合的特点 根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备6I/O接口的主要功能 对输入输出数据进行缓冲和锁存输出接口有锁存环节,输入接口有缓冲环节实际的电路常用:输出锁存缓冲环节,输入锁存缓冲环节 对信号的形式和数据的格式进行变换微机直接处理:数字量、开关量、脉冲量 对I/O端口进行寻址 与CPU和I/O设备进行联络7I/O接口的典型结构控制总线控制总线CB地址总线地址总线ABI/O接口电路接口电路数据数据控制控制状态状态数据总线数据总线DBCPU外设外设控制寄存器控制寄存器状态寄存器状态寄存器数据寄存器数据寄

3、存器1. 接口电路的内部结构2. 接口电路的外部特性3. 接口电路芯片的分类4. 接口电路的可编程性81. 接口电路的内部结构 CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部: 数据寄存器 保存外设给CPU和CPU发往外设的数据 状态寄存器 保存外设或接口电路的状态 控制寄存器 保存CPU给外设或接口电路的命令92. 接口电路的外部特性 主要体现在引脚上,分成两侧信号面向CPU一侧的信号: 用于与CPU连接 主要是数据、地址和控制信号面向外设一侧的信号: 用于与外设连接 提供的信号五花八门 功能定义、时序及有效电平等差异较大103. 接口电路芯片的分类 接口电路核心部

4、分往往是一块或数块大规模集成电路芯片(接口芯片): 通用接口芯片 支持通用的数据输入输出和控制的接口芯片 如:并行接口芯片、串行接口芯片等。 面向外设的专用接口芯片 针对某种外设设计、与该种外设接口 如:显示接口电路、磁盘驱动接口电路等。 面向微机系统的专用接口芯片 与CPU和系统配套使用,以增强其总体功能 如:8259A、8237、8253等。114. 接口电路的可编程性 许多接口电路具有多种功能和工作方式,可以通过编程的方法选定其中一种 接口需要进行物理连接,还需要编写接口软件 接口软件有两类: 初始化程序段设定芯片工作方式等 数据交换程序段管理、控制、驱动外设,负责外设和系统间信息交换1

5、2I/O端口的编址接口电路占用的I/O端口有两类编排形式 I/O端口单独编址 I/O地址空间独立于存储地址空间 如8086/8088 I/O端口与存储器统一编址 它们共享一个地址空间 如M68000理解端口理解端口13I/O端口单独编址 优点: I/O端口的地址空间独立 控制和地址译码电路相对简单 专门的I/O指令使程序清晰易读 缺点: I/O指令没有存储器指令丰富内存内存空间空间I/O空间空间FFFFF0FFFF80 x86采用采用I/O端口独立编址端口独立编址14I/O端口与存储器统一编址 优点: 不需要专门的I/O指令 I/O数据存取与存储器数据存取一样灵活 缺点: I/O端口要占去部分

6、存储器地址空间 程序不易阅读(不易分清访存和访问外设)内存内存部分部分I/O部分部分存储器空间存储器空间00000FFFFF158088/8086的I/O端口 8088/8086只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址16端口(PORT) 端口泛指I/O地址,通常对应寄存器 一个接口电路可以具有多个I/O端口,每个端口用来保存和交换不同的信息 数据寄存器、状态寄存器和控制寄存器占有的I/O地址常依次被称为数据端口、状态端口和控制端口,用于保存数据、状态和控制信息 输入、输出端口可以是同一个I/O地址一定要理解一定要理解 8086用于寻址外设端口

7、的地址线为16条,端口最多为21665536(64K)个,端口号为0000H FFFFH 每个端口用于传送一个字节的外设数据18I/O寻址方式 8088/8086的端口有64K个,无需分段,设计有两种寻址方式v直接寻址:只用于寻址00H FFH前256个端口,操作数i8表示端口号v间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号 对大于FFH的端口只能采用间接寻址方式19数据交换方式 如果输入输出一个字节,利用AL寄存器 如果输入输出一个字,利用AX寄存器 输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口) 输出一个字,实际上是将

8、AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口20I/O指令指令功功 能能说说 明明IN AL,PORTIN AX,PORTIN AL,DXIN AX,DXOUT PORT,ALOUT PORT,AXOUT DX,ALOUT DX,AXAL(PORT)AH,AL(PORT+1,PORT)AL(DX)AH,AL(DX+1,DX)(PORT)AL(PORT+1,PORT)AH,AL(DX)AL(DX+1,DX)AH,AL单字节访问单字节访问双字节访问双字节访问单字节访问单字节访问双字节访问双字节访问单字节访问单字节访问双字节访问双字节访问单字节访问单字节访问双字节访

9、问双字节访问 8086/8088的I/O指令21IN指令(从20H、21H端口输入一个字);方法1:字量输入,直接寻址in ax,20h;方法2:字量输入,间接寻址mov dx,20hin ax,dx;方法方法3:字节输入,直接寻址字节输入,直接寻址in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;方法方法4:字节输入,字节输入,间间接寻址接寻址mov dx,21hmov dx,21hin al,dxin al,dxmov ah,almov ah,aldec dxdec dxin al,dxin al,dx22OUT指令(向300H端

10、口输出一个字节);唯一的方法:间接寻址,字节量输出mov al,bvar ;bvar是字节变量mov dx,300hout dx,al23I/O地址的译码常见的I/O地址的译码(或称端口地址选择)方法有三种: 门电路组合法门电路组合法 译码器译码法译码器译码法 比较器比较法比较器比较法 门电路组合法是最简单的一种端口地址选择方法,它采用常见的逻辑门电路,比如与门、或门、非门等作为基本的组合元件。 一般端口都是指寄存器、锁存器或缓冲器,这些器件都有一个芯片选择信号,简称片选信号,多数是低电平有效,当然,也有一些芯片没有片选信号,而是有使能端,或脉冲控制端,总之是使器件产生动作的控制端。 端口地址

11、选择的目的,是当地址线上出现某种信息组合时端口地址选择的目的,是当地址线上出现某种信息组合时,在电路的输出端会产生一个有效信号,在电路的输出端会产生一个有效信号(有效信号有四种状态,即高电平、低电平、上跳沿、下降沿,具体使用哪种状态,视所使用器件而定),该信号连到器件的控制端,使器件产生动作,从而完成I/O端口的读/写操作。 这种方法简单、直观,适合于单个端口,常用的基本门电路有7400(2输入4与非门)、7408(2输入4与门)、7420(4输入双与非门)、7430(8输入与非门)、7402(2输入4或非门)、7432(2输入4或门)、7404(六反相器)等等。25逻辑门电路进行I/O地址译

12、码A9A8A7A6A5A2A4A3AENA1A074LS033E7H译码器译码法译码器译码法是最常用的一种方法,就是利用译码器芯片对地址进行译码。 PC/XT微型机系统板上接口芯片的端口地址译码采用了一个74LS138译码电路。这些芯片也都有片选信号,74LSl38译码器的输出与这些芯片的片选信号连接。各接口芯片内部有多个寄存器,因而应有多个端口地址。译码器只直接使用A9A5,其余的低5位地址A4A0未接,留给各接口芯片自行内部译码,以便寻址多个寄存器。显然,由于A4A0未接到译码器,所以每个译码器的输出端对应25=32个端口地址,系统为每个接口芯片预留出32个端口地址,至于每个接口芯片用多少

13、,则视接口芯片内部寄存器的数目而定。 译码器译码法可以方便地对多个地址进行译码,适合于多个端口的电路。常用的译码器有 74139/74155(双2线-4线译码器)、74138(3线-8线译码器)、74154(4线-16线译码器)。 82378237000H 000H 01FH01FH82598259020H 020H 03FH03FH82538253040H 040H 05FH05FH82558255060H 060H 07FH07FHDMADMA页面寄存器页面寄存器 080H 080H 09FH09FHNMINMI屏蔽寄存器屏蔽寄存器 0A0H 0A0H 0BFH0BFH保留保留 0C0H

14、0C0H 0DFH0DFH保留保留0E0H 0E0H 0FFH 0FFH 27IBM PC/XT主机板的I/O译码电路Y0 Y1 Y2 Y3 Y4 Y5Y6 Y7A5A6 A7A8A9 AENIOWAB CG2BG2AG1DMA CS(8237)INTR CS(8259)T/C CS(8253)PPI CS (8255)WRTDMAPG(写(写DMA页面寄存器)页面寄存器)WRTNMIREG(写(写NMI屏蔽寄存器)屏蔽寄存器)28IBM PC/AT主机板的I/O译码电路接口芯片内部译码接口芯片内部译码A0A4DMA控制器控制器1中断控制器中断控制器1定时计数器定时计数器并行接口电路并行接口电

15、路DMA页面寄存器页面寄存器中断控制器中断控制器2DMA控制器控制器2协处理器协处理器A5A6A7A8A9LS138译码器译码器HLDAMASTERABCE1E2E3Y0*Y1*Y2*Y3*Y4*Y5*Y6*Y7* 比较器比较法比较器比较法是比较灵活的一种方法,就是利用数码比较器把地址线上的地址同拨码开关预定的地址相比较,进而确定地址是否相符。如果比较后两个地址相等,则表示地 址总线送来的端口地址就是该端口的地址。用比较器比较法进行端口地址译码不仅原理直观,方法简便,更主要的是通过改变预设置,就能够很容易地改变接口电路中端口的地址,而不需要改变线路,使用非常灵活。在一些通用接口模板中,这一方法

16、已得到广泛的应用。 常用的比较器有7485(4位数字比较器)、74688(8位数字比较器)。 用用74LS688作译码器的译码电路作译码器的译码电路 简单接口电路 数据输入接口 必须具有三态输出能力,以便与总线挂接 外设有数据保持能力时可用三态门实现 外设无数据保持能力时用三态输出的锁存器实现 数据输出接口 常用锁存器实现 三态门:高电平、低电平、高阻态 通常一个器件中包含8个三态门 常用芯片:74LS244(8位三态缓冲器) 应用例子:开关接口 工作波形图如下:A0A15IOR#译码输出D0D7开关状态地址有效简单的输入接口举例(8位开关量输入)接口电路图如下:83FCH83FFH译码器 锁

17、存器:由D触发器构成 通常一个器件包含8个D触发器 常用芯片: 74LS273(8-D触发器) 74LS374(具有三态输出的锁存器)简单的输出接口举例(发光二极管接口)译码器=1=1.+5VRD0D7CPQ0Q7.D0D7A0A15IOW#74LS273R输入/输出接口综合应用例子 根据开关状态在7段数码管上显示数字或符号 共阳极7段数码管结构 用74LS273作为输出接口,把数据送到7段数码管 74LS273的地址假设为F0H 用74LS244作为输入口,读入开关K0K3的状态 74LS244的地址假设为F1H 当开关的状态分别为00001111时,在7段数码管上对应显示0F (7段码表见

18、下页) 符号形状7段码.gfedcba符号形状7段码.gfedcba000111111801111111100000110901100111201011011A01110111301001111B01111100401100110C00111001501101101D01011110601111101E01111001700000111F01110001O1 I1O2 I2O3 I3O4 I4#E1 K0K3+5VGG2AG2BCBA174LS244D0 Q0 | Q1D7 Q2 Q3 Q4CP Q5 Q6 Q7 abcdefgDP74068个反相器74LS273Rx8174LS138D0D7

19、IOW#IOR#Y0Y1F0H = 0000 0000 1111 0000F1H = 0000 0000 1111 0001&1A7A4A15A8A3A2A1A0D0D1D2D3译码电路相应程序段如下:Seg7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HLEABX, Seg7;取7段码表基地址MOVAH, 0GO:MOVDX, 0F1H;开关接口的地址为F1HINAL, DX;读入开关状态ANDAL, 0FH ;保留低4位MOVSI, AX;作为7段码表的表内位移量MOVAL, BX+SI;取7段码MOVD

20、X, 0F0H;7段数码管接口的地址为F0HOUTDX, ALJMPGOI/O设备与存储器的区别 存储器的工作速度几乎和中央处理机一样,而大多数I/O设备工作较慢,且不同的I/O设备又有不同的工作速度。 存储器的字长一般是以字节为单位或等于机器字长,而I/O设备传送的过程中可能是8位数据,也可能是1位,2位不等的状态或控制信息。 存储器中的信号形式与CPU相同,而I/O设备可能是数字信号也可能是模拟信号,可能是电压信号也可能是电流信号,可能是并行的也可能是串行的等等。 存储器的控制信号主要是读/写信号,而I/O设备一般有多种控制信号,如设备工作,空闲等状态信号,设备的启动,清除等控制信号。 这

21、些差异都使得I/O数据传送过程较为复杂,随之而来的就是根据不同设备需采用不同的传送方式,相应的也就要采用不同的控制方式。 输入输出的控制方式 主机与I/O设备之间数据传送的控制方式有以下三种: 查询式传送查询式传送 中断方式传送中断方式传送 直接存储器存取直接存储器存取(DMA, Direct Memory Access)查询方式传送 适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。 CPU在与外设交换数据前必须询问外设状态“你准备好没有?” 对外设的要求:应提供设备状态信息 对接口的要求:需要提供状态端口 优点:软件比较简单 缺点:CPU效率低,数据传送的实时性差,速度较慢

22、动画演示42就绪(Ready) 在输入场合 “就绪”说明输入接口已准备好送往CPU的数据,正等着CPU来读取 该状态也可用接口中数据缓冲器已“满”来描述 在输出场合 “就绪”说明输出接口已做好准备,等待接收CPU要输出的数据 该状态也可用接口数据缓冲器已“空”、或者用接口(外设)“闲”或不“忙(Busy)”来描述就绪:满,空、闲、不忙就绪:满,空、闲、不忙查询方式的流程图超时?READY?与外设进行数据交换超时错读入并测试外设状态YNYN传送完?防止死循环复位计时器NY44查询传送的两个环节 查询环节 寻址状态口 读取状态寄存器的标志位 若不就绪就继续查询,直至就绪 传送环节 寻址数据口 是输

23、入,通过输入指令从数据端口读入数据 是输出,通过输出指令向数据端口输出数据输入状态输入状态就绪?就绪?数据交换数据交换YN传送流程传送流程接口实例接口实例45查询输入接口IOR+5V8D锁存器锁存器8位位三态三态缓冲器缓冲器译码译码1位位三态三态缓冲器缓冲器RQ A0A158000H8001HD0D7D0D输入输入设备设备IORSTBmov dx,8000h;DX指向状态端口status:in al,dx;读状态端口test al,01h;测试标志位D0jz status;D00,未就绪,继续查询inc dx;D01,就绪,DX指向数据端口in al,dx;从数据端口输入数据46查询输出接口8

24、D锁存器锁存器译码译码1位位三态三态缓冲器缓冲器RQ A0A158000H8001HD0D7D7D+5V输出输出设备设备ACKIOWIORmov dx,8000h;DX指向状态端口status:in al,dx;读取状态端口的状态数据test al,80h;测试标志位D7jnz status;D71,未就绪,继续查询inc dx;D70,就绪,DX指向数据端口mov al,buf;变量buf送ALout dx,al;将数据输出给数据端口47EEPROM编程(查询方式)2817AA0A10A0A108000HI/O0I/O7D0D7D0译码译码A11A19译码译码A0A15 RDY/BUSYIO

25、RWERDMEMWMEMRCEnext:mov al,55h;写入内容55Hmov bx,al;写入存储单元nop;空操作指令,起延时作用nopnext1:in al,dx;查询状态口test al,01h;测试D0jz next1;D00,芯片还在写入inc bx;D01,写毕,指针移动loop next;循环至全部字节写完例:用查询方式进行输出外设状态端口地址为3FBH,第5位(bit5)为状态标志(=1忙,=0准备好)外设数据端口地址为3F8H,写入数据会使状态标志置1 ;外设把数据读走后又把它置0。试画出其电路图。(电路图见下页)D5D7-D0A9|A31&A15|A101IOWD7-

26、D03F8H外设D7D6D5D4D3D2D1D0BUSYCPQ7Q6Q5Q4Q3Q2Q1Q0状态端口GG2AG2BCBAA2A1A074LS138Y01IORY3OE74LS374CPQQDSSTROBE3FBH程序段?50中断传送方式断点断点主程序主程序中断服务程序中断服务程序中断请求中断请求对外设对外设进行处理进行处理继续执行继续执行返回断点返回断点 CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序传送流程传送流程动画演示51中断传送与接口 中断传送是一种效率更高的程序传送方式,优点是:CPU效率高,实时性

27、好,速度快;缺点是:程序编制较为复杂。 进行传送的中断服务程序是预先设计好的 中断请求是外设随机向CPU提出的 CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚 中断有着非常广泛的应用中断技术(教材第6章) 中断的基本概念 什么是中断? 与生活场景的比较正在看书电话铃响接电话继续看书执行程序事件发生事件处理继续执行程序中断处理中断请求及响应实际场景计算机中断返回中断的定义 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回

28、被中断的程序继续执行,这一过程称为中断。中断源 引起CPU中断的事件中断源。例如: 外设请求输入输出数据,报告故障等 事件掉电、硬件故障、软件错误、非法操作、定时时间到等 中断源分为:外部中断、内部中断 内部中断:CPU内部执行程序时自身产生的中断 外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMI INTR可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。 NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。为何计算机中要引入中断? 提高数据传输率; 避免了CPU不断检测外设状态的过程

29、,提高了CPU的利用率。 实现对特殊事件的实时响应。如多任务系统操作系统中: 缺页中断 设备中断 各类异常 实时钟,。等中断过程五个步骤:中断请求中断判优先级(有时还要进行中断源识别)中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤。1)中断请求 外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚; 中断请求信号:边沿请求,电平请求例如,NMI为边沿请求,INTR为电平请求 中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。 在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出 (I/O

30、接口) PIC CPUn12.1)中断源识别 计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。识别中断源有两个方法: 软件查询。将中断信号从数据总线读入,用程序进行判别。 中断矢量法。由中断源提供中断类型号,CPU根据类型确定中断源。(8086/8088即采用此种方法)2.2)中断判优先级 多个中断源产生中断,CPU首先为谁服务?中断优先级排队问题。 中断优先级控制要处理两种情况: 对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理; 对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断即允许中断嵌套。 中断优先级的控制方

31、法 硬件判优链式判优、并行判优(中断向量法) 软件判优顺序查询中断请求,先查询的先服务(即先查询的优先级别高)(教材p170图6-3) 通常将中断判优与中断源识别合并在一起进行处理。 x86系统中,这项任务由PIC和CPU共同完成。INTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口31菊花链逻辑电路菊花链逻辑电路IREQIREQIREQ中断确认链式判优电路原理图INTAinINTAin中断确认中断确认菊花链逻辑电路INTAinIREQINTR&=1 1INTAoutDB三态门中断向量码E外设接口中断确认菊花链逻辑电路3)中断响应 在每条指令的最后一个

32、时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断: 当前指令执行完。对INTR,还应满足以下条件 当前指令是STI和IRET,则下条指令也要执行完。 当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完; 对INTR,CPU应处于开中断状态,即IF=1; 当前没有复位(RESET)和保持(HOLD)信号。 若NMI和 INTR 同时发生,则首先响应NMI。3)中断响应(续) CPU中断响应时,要做下述三项工作: 向中断源发出INTA*中断响应信号; 断点保护,包括CS、IP和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。

33、获得中断服务程序首地址(入口)。如何得到中断处理程序的首地址? 固定入口法 中断向量法常用4)中断处理(中断服务) 中断服务子程序特点 为”远”过程(类型为FAR) 要用IRET指令返回 中断服务子程序要做的工作 保护现场(PUSH regs) 开中断(STI) 进行中断处理 恢复现场(POP regs) 中断返回(IRET) 5)中断返回 执行中断返回指令IRET IRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进

34、入中断服务程序时中断返回后8088的中断系统 与中断有关的控制线为:NMI、INTR、INTA* 8088系统的中断源 内部中断 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。 单步中断:类型号1,TF=1时产生(当前指令需执行完) 断点中断:类型号3,这是一个软件中断,即INT 3指令。 溢出中断:类型号4,这是一个软件中断,即INTO指令。 软件中断:即INT n指令,类型号n(0-255)。 外部中断 非屏蔽中断NMI:类型号2,不可在cpu内部用软件屏蔽。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。678088的中断类型非屏蔽中断源非屏蔽中断源中断逻

35、辑中断逻辑INTO指令指令单步单步中断中断除法除法错误错误INT N指令指令CPUINTRNMI可屏蔽中断源可屏蔽中断源8259A中断中断控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外设设中中断断源源 INTA 内部中断 除法错中断 指令中断 溢出中断 单步中断 外部中断 非屏蔽中断 可屏蔽中断681. 内部中断 内部中断是由于8088内部执行程序出现异常引起的程序中断 利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径 例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用内部中断的中断向量号已定内部中断的中断向量号已定69 除

36、法错中断 在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断例如:mov bl,0idiv bl;除数;除数BL0,产生除法错中断,产生除法错中断mov ax,200hmov bl,1div bl;商;商200H,不能用,不能用AL表达表达;产生除法错中断;产生除法错中断70 指令中断 在执行中断调用指令INT n时产生的一个向量号为n(0 255)的内部中断,称为指令中断 其中向量号为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断例如:例如:DEBUG.EXE调试程序的运行命令调试程序的

37、运行命令G设置设置的断点,就是利用的断点,就是利用INT 3指令实现的指令实现的71 溢出中断 在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断例如:mov ax,2000hadd ax, 7000h;2000H7000H9000H,溢出:,溢出:OF1into;因为;因为OF1,所以产生溢出中断,所以产生溢出中断72单步中断 若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断例如:例如:DEBUG.EXE调试程序的单步命令调试程序的单步命令T就利就利用单步中断实现对程序的单步调试用单步中断实现对程序的单步调试7

38、3内部中断服务程序 编写内部中断服务程序与编写子程序类似 利用过程定义伪指令PROC/ENDP 第1条指令通常为开中断指令STI 最后用中断返回指令IRET 通常采用寄存器传递参数 主程序需要调用中断服务程序 调用前,需要设置中断向量 利用INT n指令调用中断服务程序74例1 内部中断服务程序 编写80H号中断服务程序 功能:显示以“0”结尾字符串的功能 利用显示器功能调用INT 10H 字符串缓冲区首地址为入口参数 DS:DX(段地址:偏移地址)传递参数数据段intoffdw ?;用于保存原中断服务程序的偏移地址intsegdw ?;用于保存原中断服务程序的段基地址intmsgdb A I

39、nstruction Interrupt !db 0dh,0ah,0;字符串(以0结尾)例1保存中断向量mov ax,3580h;获取系统的原80H中断向量int 21hmov intoff,bx;保存偏移地址mov intseg,es;保存段基地址例1获取中断向量(获取中断向量(DOS功能调用功能调用INT 21H)功能号:功能号:AH35H入口参数:入口参数:AL中断向量号中断向量号出口参数:出口参数:ES:BX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)设置中断向量push dsmov dx,offset new80h;取新的中断向量mov ax,seg new80hmov

40、ds,axmov ax,2580h;设置本程序的80H中断向量int 21hpop ds例1设置中断向量(设置中断向量(DOS功能调用功能调用INT 21H)功能号:功能号:AH25H入口参数:入口参数:AL中断向量号中断向量号DS:DX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)调用中断服务程序mov dx,offset intmsg;设置入口参数DS:DXint 80h;调用80H中断服务程序,显示字符串例1;80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX缓冲器首地址new80hproc;过程定义sti;开中断push ax;保护寄存器push b

41、xpush si例8.1进入中断服务程序显示字符串mov si,dxnew1:mov al,si ;获取欲显示字符cmp al,0;为“0”结束jz new2mov bx,0;采用ROM-BIOS调用显示一个字符mov ah,0ehint 10h;调用中断10H显示一个字符inc si ;显示下一个字符jmp new1例8.1退出中断服务程序new2:pop si;恢复寄存器pop bxpop axiret;中断返回new80h endp;中断服务程序结束例8.1主程序结束mov dx,intoff;恢复系统的原80H中断向量mov ax,intseg;注意先设置DX,后设置DS入口参数mov

42、 ds,ax;因为先改变了DS,就不能准确取得intoff变量值mov ax,2580hint 21hmov ax,4c00h;程序终止int 21h例8.1A Instruction Interrupt !832. 外部中断 外部中断是由于8088外部提出中断请求引起的程序中断 利用外部中断,微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件 外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt) 内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception)84 非屏蔽中断 通过非屏蔽中断请求信号向微处理器提出的中断请求,微处

43、理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断(并非无法屏蔽,参见教材P179) 8088的非屏蔽中断的向量号为2,非屏蔽中断请求信号为NMI 非屏蔽中断主要用于处理系统的意外或故障。例如: 电源掉电前的数据保护 存储器读写错误的处理85 可屏蔽中断 外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断 8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器 8088通常需要配合中断控制器8259

44、A共同处理可屏蔽中断 可屏蔽中断主要用于主机与外设交换数据IF控制可屏蔽中断的响应控制可屏蔽中断的响应86中断标志IF的状态 IF0:可屏蔽中断不会被响应 关中断、禁止中断、中断屏蔽 系统复位,使IF0 任何一个中断被响应,使IF0 执行指令CLI,使IF0 IF1:可屏蔽中断会被响应 开中断、允许中断、中断开放 执行指令STI,使IF1 执行指令IRET恢复原IF状态明确明确IF标志的状态是关键标志的状态是关键中断源的识别 8088系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码 。 溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值 软件中断的类型码由指令

45、给出 可屏蔽中断的类型码由PIC给出 CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。中断向量表(IVT) 存放各类中断的中断服务程序的入口地址(段和偏移)中断向量 表的地址位于内存的00000H003FFH,大小为1KB,共256个中断向量 每个中断向量占用4 Bytes,低字为段内偏移,高字为段基址 根据中断类型号获得中断服务程序入口的方法: (n为中断类型号) 中断向量在IVT中的存放地址4n中断向量表的初始化 初始化将中断服务程序的入口地址放入向量表 例:中断类型码为48H的中断处理子程序的名字为int4

46、8h,编写程序段将该中断处理子程序的入口地址放入向量表。中断向量表的初始化 CLI MOV AX,0 MOV DS,AX MOV SI,48H*4 MOV AX,OFFSET int48h MOV SI,AX MOV AX,SEG int48h MOV SI+2,AX STI8086/8088 CPU的中断响应过程 内部中断响应过程 无INTA*周期中断类型码固定或由指令给出响应过程主要步骤: PUSH FLAG IF=0 PUSH CS PUSH IP 取中断向量送入IP和CS中断响应过程(续) 外部中断响应过程非屏蔽中断,与内部中断响应过程类似 可屏蔽中断 INTA#(1),PIC进行优先

47、级排队判优处理 INTA#(2),PIC把中断类型码放到DB上,CPU读入 PUSH FLAG IF=0 PUSH CS PUSH IP 取中断向量送入IP和CS与内部中断一样8088系统中各中断的优先级 优先级从高到低顺序如下: 内部中断 NMI INTR 单步中断NYNYNNNNNYY执行指令执行完否?取指令IF=1?内部中断?NMI?INTR?TF=1?类型码=0255类型码=2类型码=1中断响应,读回类型码FLAG入栈TEMPTFTF=TF=0CS、IP入栈计算向量表地址高字CS低字IP执行中断服务程序NMI?TEMP=1?转入中断服务程序恢复CS和IP恢复FLAGS返回被中断的程序Y

48、YYYNIRET指令的操作8086/8088的中断处理流程NMI、INTR、单步和除法错中断同时产生时的中断处理过程DIVTF=1IF=1INTRNMIPUSH FLAGS、CS、IPCLEAR IF & TF,中断入口CS:IP除法错NMI(IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中断入口CS:IPNMI中断处理程序除法错中断处理程序(IF、TF = 0) 返回执行下条指令识别出INTR(IF、TF = 1) 返回INTR仍然有效继续单步执行程序INTR中断处理程序INTRPUSH FLAGS、CS、IPCLEAR IF & TF,中断入口CS:IP单

49、步 (IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中断入口CS:IP单步中断处理程序(IF、TF = 0) 返回(IF、TF = 1) 返回DMA传输 前面三种I/O方式都需要CPU作为中介: 外设 CPU 内存 两个含义:1)软件:外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式);2)硬件:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。 缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒)解决:DMA传输 DMA传输: 外设 内存 外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者;

50、 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。 优点:数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒)几个基本概念 总线控制权、mater、slave DMAC编程周期:slave DMAC控制总线进行数据传输周期:master DMA的数据传输形式:基本的:MEMI/O扩充的:MEMMEM I/O I/ODMA传送原理示意图 系统总线CPUDMAC存储器外设接口AENIOWMEMWMEMRIORMEMWMEMRIOWIORAENHOLDHLDADRQDACKAENIOWIO

51、RMEMWMEMR 外设发出DMA请求 DMAC向CPU申请总线 CPU完成当前总线周期后响应,并释放总线控制权 DMAC得到总线控制权,并发出DMA响应信号 由DMAC发出各种控制信号,控制外设与存储器之 间的数据传送 数据传送完后,DMAC撤销HOLD信号 CPU释放HLDA信号,并重新控制总线动画演示DMA控制器的工作过程1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出“DMA传送请求”信号(DRQ);2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线;3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个动作:一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK;DMA控制器的工作过程(续)5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论