《第6部分输入输出技术.ppt》由会员分享,可在线阅读,更多相关《第6部分输入输出技术.ppt(93页珍藏版)》请在三一文库上搜索。
1、2019/4/4,1,第6章 输入输出技术, CPU与外设的工作速度不一致,如何使两者高效、可靠地进行数据传送,是本章讨论的问题。,输入输出的基本方法 中断概念、中断响应过程 8088中断系统、中断向量表,2019/4/4,2,输出设备:显示器、打印机等。,输入设备:键盘、鼠标、扫描仪等。,键盘、鼠标PS/2、USB 扫描仪EPP(增强并口)、USB,显示器15针D接口,也叫VGA接口。,2019/4/4,3,多种多样的外设,工作原理不同 机械、电子、机电、电磁 传送信息类型多样 数字量、模拟量、开关量 传送速度差别极大 传送方式不尽相同 串行、并行 编码方式不同 二进制、BCD码、ASCII
2、码z,2019/4/4,4,6.1 概述,为什么需要I/O接口(电路)?,微机的外部设备多种多样,1)I/O设备的功能多种多样; 2)I/O设备工作速度不同; 3)I/O设备处理的信号不同 (模拟或数字信号、并行或串行) ; 4)I/O设备所需的控制信号不同。,工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大,2019/4/4,5,输入输出(I/O)设备是计算机系统的重要组成部分,计算机通过它们与外界进行数据交换。因I/O设备种类繁多,CPU并不与I/O设备直接进行信息交流,而是通过I/O接口进行。I/O接口是连接CPU和I/O设备之间的桥梁。,输入设备和输出设备统称为外设。 I/O
3、接口电路:即I/O适配器。,6.1 概述,2019/4/4,6,6.1.1 I/O接口(电路),I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路 PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路 I/O接口的特点:通用性和可编程性,2019/4/4,7,1、接口功能,I/O接口在它连接的CPU与I/O设备之间起信息转换作用。应具备:, 接口内有特定的硬件电路供CPU直接存取,称为I/O端口; 接口应有地址译码功能; 接口可传送除基本信息(数据信息)外的各种信息。,2019/4/4,8,2、接口传递的信息,数据信息:CPU与I/O设备传递的基本信息,
4、包括数字量、模拟量、开关量和脉冲量。,接口传递的基本信息是数据信息,除此之外,还传递状态信息和控制信息。不同的信息用不同的I/O端口区分。,控制信息:CPU通过接口传递给I/O设备的信息,用以控制I/O设备的工作,如启动、停止等。,状态信息:反映I/O设备当前工作状态的信息,如输出设备是否空闲,输入设备是否数据准备好等。,2019/4/4,9,6.1.2 I/O接口的典型结构,寄存器 端口,三种信息:数据信息、状态信息、控制信息。 通过数据总线DB传输。,2019/4/4,10,1. 接口电路的内部结构,CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:, 数据寄存器数
5、据端口 保存外设给CPU和CPU发往外设的数据 状态寄存器状态端口 保存外设或接口电路的状态 控制寄存器控制端口 保存CPU给外设或接口电路的命令,2019/4/4,11,2. 接口电路的外部特性,主要体现在引脚上,分成两侧信号 面向CPU一侧的信号: 用于与CPU连接 主要是数据、地址和控制信号 面向外设一侧的信号: 用于与外设连接 提供的信号五花八门 功能定义、时序及有效电平等差异较大,2019/4/4,12,6.2 I/O端口的编址,接口电路占用的I/O端口有两类编排形式,I/O端口与存储器统一编址 它们共享一个地址空间 如M6800 I/O端口单独编址 I/O地址空间独立于存储地址空间
6、 如8086/8088,2019/4/4,13,I/O端口与存储器统一编址,优点: 不需要专门的I/O指令 I/O数据存取与存储器数据存取一样灵活 缺点: I/O端口要占去部分内存空间 程序不易阅读(不易分清访存和访问外设),2019/4/4,14,I/O端口单独编址,优点: I/O端口的地址空间独立 控制和地址译码电路相对简单 专门的I/O指令使程序清晰易读 缺点: I/O指令没有存储器指令丰富 80x86采用I/O端口独立编址,2019/4/4,15,8088的I/O端口地址,8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址 8088用于寻
7、址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000H FFFFH 地址线上的地址信号用 IO / M*来区分 每个端口用于传送一个字节的外设数据 IBM PC只使用了1024个I/O地址(03FFH),2019/4/4,16,输入输出(I/O)指令,每个端口用于传送一个字节的外设数据 只限于用累加器AL或AX来传送信息。 功能: (累加器)I/O端口,2019/4/4,17,输入输出寻址方式,8086的端口有64K个,无需分段,设计有两种寻址方式 直接寻址:只用于寻址00HFFH前256个端口,操作数i8表示端口号 间接寻址:可用于寻址全部64K个端口,DX寄
8、存器的值就是端口号 对大于FFH的端口只能采用间接寻址方式,2019/4/4,18,(1)输入指令IN 格式: IN acc,PORT ;PORT端口号0255H IN acc,DX ;DX表示的端口范围达64K,例: IN AL,80H ;(AL)(80H端口) IN AL,DX ;(AL)(DX),2019/4/4,19,例:输入字量,1.直接寻址,字节量输入 in al,21h mov ah,al in al,20h,功能相同 字量数据传送实际上实现了连续的两个端口地址的字节量传送,2.直接寻址,字量输入 in ax,20h,3.间接寻址,字量输入 mov dx,20h in ax,dx
9、,2019/4/4,20,例: OUT 68H,AX ;(69H,68H)(AX) OUT DX,AL ;(DX)(AL) 在使用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器: MOV DX,220H IN AL,DX ;将220H端口内容读入AL,(2) 输出指令OUT 格式: OUT port , acc OUT DX , acc,2019/4/4,21,IN AL, PORT,指令硬件电路信号,OUT PORT, AL,2019/4/4,22,6.3 I/O的基本方式,无条件传送,查询方式 中断方式 直接存储器存取(DMA)方式 ( Direct Memo
10、ry Access ),2019/4/4,23,无条件传送(CPU与外设同步工作):外部控制过程各种动作时间是固定的,而且是已知的。,查询方式(CPU与外设不同步工作):传送前,先查询外设状态,准备好才传送,否则CPU处于等待状态。,中断方式:外设与CPU处于并行工作,一旦外设准备好,外设向CPU发中断申请,条件具备,CPU暂停原程序执行,响应中断,外设与CPU串行工作。,DMA方式: CPU不干予,由硬件实现存储器与外设之间交换数据。,2019/4/4,24,1 无条件传送方式, 特点 这种传送有前提:外设必须随时就绪 适合于简单设备,如开关、发光二极管、 LED数码管、 继电器、按键或按纽
11、等设备。 无条件传送的接口和操作均十分简单,实现方法 CPU不查询外设工作状态 与外设速度的匹配通过在软件上延时完成 程序中直接用I/O指令,完成数据传送,2019/4/4,25,输入接口设计,完成如下任务: 当开关接通时,CPU执行程序段ON; 当开关断开时,CPU执行程序段OFF;,MOV DX,0FFF7H IN AL,DX AND AL,01H JZ ON JMP OFF,2019/4/4,26,无条件传送:输入,接口电路 硬件保证: 只在CPU执行从相应端口输入数据时, 三态门处于工作状态,使输入设备的数据送上总线侧; 而CPU执行其它指令时, 三态门均处于高阻状态, 使输入设备的数
12、据线与总线侧断开,2019/4/4,27,输出接口设计,锁存器作为发光二极管与微机系统数据总线连接的中间接口,接收来自CPU的输出数据。,MOV DX,0000H MOV AL,81H OUT DX,AL,CP端出现低电平信号,锁存,MOV DX,0000H MOV AL,00H OUT DX,AL,CPU执行指令控制二极管发光,2019/4/4,28,无条件传送:输出,2019/4/4,29,例:如图示,外设为8个发光二极管,与其相连的I/O端口地址80H,欲使发光二极管全亮,执行指令:,MOV AL, 0 OUT 80H, AL,2019/4/4,30,例:无条件传送,CPU通过一个输入接
13、口采集一组开关K0K7的状态,然后通过一个输出接口控制对应的一组发光二极管LED0LED7显示出来(Ki闭合,对应LEDi亮;Ki断开,对应LEDi灭),2019/4/4,31,例:无条件传送,2019/4/4,32,MOV DX,80H IN AL,DX MOV DX,81H OUT DX,AL,;输入端口地址80H ;输入开关状态 ;输出端口地址为81H ;控制对应LED,2019/4/4,33,2. 查询方式,实现方法: 在与外设进行传送数据前,CPU先查询外设状态,当外设准备好后,才执行I/O指令,实现数据传送。,外设接口与外设有三种信息交换: (1)进行传送的数据(数据端口) (2)
14、外设的控制信号(控制端口) (3)外设的状态信息(状态端口),2019/4/4,34,查询传送的两个环节, 查询环节 寻址状态口 读取状态寄存器的标志位 若不就绪就继续查询,直至就绪 传送环节 寻址数据口 是输入,通过输入指令从数据端口读入数据 是输出,通过输出指令向数据端口输出数据,2019/4/4,35,【例6】查询方式输出数据,外设经I/O接口与系统总线相连,外设的状态信号BUSY由状态端口的D0位输出到CPU数据总线的D0,当BUSY0时,表示外设忙,不可以接收CPU输出的数据;当BUSY1时,则表示外设处于空闲状态,可以接收。,2019/4/4,36,【例6.2】查询方式输出数据,外
15、设的状态端口为0333 H,其中D0 = 1时,表示外设准备好; 外设的数据端口为0333 H。编程将CL中的数据输出到外设。,2019/4/4,37,流程图,;设置端口地址 ;读外设状态 ;外设忙否? ;状态寄存器最低位为0则忙 ;字符在CL中 ;输出该字符,2019/4/4,38,;设置端口地址 ;读外设状态 ;外设忙否? ;状态寄存器最低位为0则忙 ;字符在CL中 ;输出该字符,START:MOV DX,333H WAIT :IN AL,DX TEST AL,01H JZ WAIT MOV AL,CL OUT DX,AL RET,当CPU需要对多个设备进行操作时,则CPU按一定顺序依次查
16、询(轮询)。所谓的优先级问题。先查询的外设将优先进行数据交换。,缺点: 不能对设备进行实时处理 查询过程大大降低CPU的效率 外设接口始终处于被动状态,CPU通过不断查询外设状态, 实现与外设的速度匹配,,2019/4/4,40,3、中断控制方式,CPU在启动外设开始某一操作之后,继续执行它本身的程序。当外设数据准备就绪,向CPU提出请求,CPU在接到请求后暂时中断原来执行的程序,转去执行外设所要求的程序(如输入或输出一个数据),待服务结束后又返回原程序继续执行。,中断请求,中断服务程序,主程序,中断请求,中断服务程序,2019/4/4,41,前面三种I/O方式都需要CPU作为中介:,两个含义
17、: 1)软件:外设与内存之间的数据传送是通过CPU执行程序来完成的(程序控制方式); 2)硬件:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。,缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒) 解决:DMA传输,2019/4/4,42,4、直接存储器存取方式(DMA),DMA(Direct Memory Access)意为直接数据访问。它是在内存的不同区域之间,或者在内存与外设端口之间直接进行数据传送,而不经过CPU中转的一种数据传送方式,可以大大提高数据的传送速度。,2019/4/4,43,(1)DMA方式与其它方式比较,2019/4/4,44
18、,(2)DMA传输的特点,外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者; 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。 优点:数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒),2019/4/4,45,DMA控制器,CPU,外设,(3)DMA传输的工作过程,2019/4/4,46,练习,对I/O端口的编址一般有 方式和 方式。PC机采用的是 方式。 在PC系列微机中,I/O指令采用直接寻址方式的I/O端口有 个。采用DX间接寻址方式可寻址的I/O端口有 个。
19、CPU在执行OUT DX,AL指令时, 寄存器的内容送到地址总线上, 寄存器的内容送到数据总线上。 数据输入/输出的几种方式是 、 、和 。,2019/4/4,47,6.4 中断传送方式,2019/4/4,48,为何计算机中要引入中断?,提高数据传输率;,避免CPU不断检测外设状态,提高CPU的利用率。,实现对特殊事件的实时响应。 如多任务系统操作系统中: 缺页中断 设备中断 各类异常 实时钟,等,2019/4/4,49,什么是中断? 与生活场景的比较,正在看书,电话铃响,接电话,继续看书,实际场景,6.4.1. 中断的基本概念,2019/4/4,50,外设准备数据,CPU执行程序,此时,CP
20、U与外设并行工作; 外设准备就绪,向CPU发中断申请,CPU暂停原程序执行,响应中断,进行数据传输。此时,CPU与外设是串行工作。,中断传送方式,2019/4/4,51,1.中断的定义,CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序.,2019/4/4,52,1000:150H,主程序 、 、 、 MOV AX, 0 ADD AX, DX MOV DI , AX 、 、 、,CPU在执行此指令时, 某中断源发申请中断; CPU在执行完该指令后,转去执行中断子程.,断点概念:,PUSH AX 、 、 IRET,
21、断点,中断服务程序,2019/4/4,53,中断源,引起CPU中断的事件中断源。 外设请求输入输出数据,报告故障等 事件掉电、硬件故障、软件错误、非法操作、定时到,中断源分为:外部中断、内部中断 内部中断:CPU内部执行程序时自身产生的中断 外部中断:CPU以外的设备、部件产生的中断,8086/8088的外部中断信号:INTR、NMI INTR可屏蔽中断请求,高电平有效,受IF标志的控制。 IF=1时,执行完当前指令后CPU对它作出响应。 NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要 响应此中断请求信号。,2019/4/4,54,2. 中断传送方式的特点,效率更高的程序传送方式,中断服
22、务程序是预先设计好的,中断请求是随机的,CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚,2019/4/4,55,6.4.2 8088的中断系统,8088的中断系统采用向量中断机制,能够处理256个中断,用中断向量号0255区别,可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理,与中断有关的控制线为:NMI、INTR、INTA*,2019/4/4,56,1.8086/8088的中断类型,2019/4/4,57,外部中断,是由于8088外部提出中断请求引起的,利用外部中断,微机系统可以实时响应外设的数据传送请求,及时处理外部意外或紧急事件
23、,外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt),内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception),2019/4/4,58, 非屏蔽中断NMI,通过非屏蔽中断请求信号NMI向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断,8088的非屏蔽中断的向量号为2,非屏蔽中断主要用于处理系统的意外或故障。例如: 电源掉电前的数据保护 存储器读写错误的处理,2019/4/4,59, 可屏蔽中断,外部通过可屏蔽中断请求信号INTR向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执
24、行结束予以响应INTA* ,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断,IF 控制可屏蔽中断的响应,IF1,允许中断;IF0,禁止中断。,8088通常需要配合中断控制器8259A共同处理可屏蔽中断,可屏蔽中断主要用于主机与外设交换数据,2019/4/4,60,内部中断,8088内部执行程序出现异常引起的 利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径 例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用,内部中断的中断向量号已定,2019/4/4,61, 除法错中断,在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则CPU
25、会自动产生一个向量号为0的内部中断,称为除法错中断 0号中断没有对应的中断指令 例如:,mov bl,0 idiv bl ;除数BL0,产生除法错中断,mov ax,200h mov bl,1 div bl ;商200H,不能用AL表达 ;产生除法错中断,2019/4/4,62,(2) 单步中断,若TF1,则在每条指令执行结束后产生1号内部中断,称为单步中断 类似0号(除法错)中断:不是由外部硬件或者软件指令产生,是由CPU对标志位TF的测试而产生的。,例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试,由CPU对状态标志寄存器中的陷阱标志TF的测试而产生的1号中断
26、。,2019/4/4,63,(3) 断点中断,例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT 3指令实现的,这是CPU执行INT指令而产生的3号中断(生成一个字节的指令代码:11001100)。,这也是8086提供给用户使用的一种调试程序手段。对较长程序,通过设置断点(插入INT指令),使程序运行一段后进入断点中断,检查程序是否达到要求。,2019/4/4,64,(4) 溢出中断,mov ax,2000h add ax, 7000h ;2000H7000H9000H,溢出:OF1 into ;因为OF1,所以产生溢出中断,由于CPU本身不能判别当前处理的数据是否带符号,
27、因此,它提供了INTO指令给用户。,在带符号运算后安排一条INTO指令,当运算后OF1,则产生4号内部中断(溢出中断),进入溢出中断服务程序进行处理。,2019/4/4,65,(5) 软件中断,在执行中断调用指令INT n时产生的一个向量号为n(0 255)的内部中断, n为一个字节的中断类型码,称为指令中断。,用INT n指令来产生中断,运行用户自行设计的一些中断服务程序,这与段间调用子程序相似。,如:系统功能调用INT 21H。,2019/4/4,66,2. 8088的中断向量表,中断向量即中断服务程序的入口地址,用32位逻辑地址表示。中断向量表是一个存储区,该存储区存放了所有的中断向量。
28、,表内容:所有中断服务程序的入口地址,即256个中断向量。,表长度:一个中断向量4个字节,256个中断向量共 25641024字节,即占用1K存储空间。,表位置:物理地址00000H (03FFH)开始,依次安排各个中断向量,向量号也从0开始,存放次序:按中断类型码从小到大依次存放。每个中断向量占用的4个单元中,小地址存放偏移地址,大地址存放段地址。,向量号为N的中断向量的物理地址N4,2019/4/4,68,中断向量地址,中断类型码,8088的中断向量表,2019/4/4,69,如果在00080H00083H这4个单元中存放的内容分别为 10H、20H、30H、40H,那么,在该系统中, 号
29、中断所对应的中断向量为 。 ,20H,4030H:2010H,问题1,2019/4/4,70,若系统中对应于中断类型码为17H的中断处理程序存放在1234:5670H开始的内存区域中,则对应于17H类型码的中断向量存放在 开始的4个字节中。这4个单元地址由低到高,每个单元中的值分别为: H、 H、 H、 H。,0000:005CH,问题2,练 习,1、中断向量的地址是( ) A.子程序入口地址 B.中断服务程序的入口地址 C.中断服务程序入口地址的地址 D.例行程序入口地址 2、在PC/XT机中,NMI的中断向量在中断向量表中的位置是( ) A.由程序指定的 B.由DOS自动分配的 C.固定在
30、0008H开始的4个字节中 D.固定在中断向量表的表首,3.某一中断源的中断类型码为45H,则该中断源的中断向量在中断向量表的位置是:,若中断向量表部分单元内容如图示,则该中断源的中断向量为:,45H400114H,3400H:1020H,即该中断服务程序的入口地址为:,35020H,4.某一中断源的中断类型码为0FH,该中断源的中断向量为:0000:2780H,如何存放到中断向量表中。,则中断向量表中从0000:003CH单元开始顺序存放: 80H,27H,00,00,2019/4/4,74,练习,5、中断矢量就是中断服务子程序的 ,在内存中占有 个存储单元,其中低地址存储单元存放的是 ,高
31、地址存储单元存放的是 。 6、PC/XT机的中断矢量表放在从 H地址单元到 地址单元,总共有 个字节。,2019/4/4,75,3. 8088的中断处理过程,中断请求,中断承认,中断源识别,断点保护,中断服务,中断返回,中断源向CPU的中断请求输入端INTR发出请求中断服务的信号。,CPU在每条指令执行后检测有无中断产生,首先检测内部中断,再检测NMI、INTR端,即按优先级的顺序检测。,根据不同的中断源得到相应的中断类型码。,指CPU在确定中断源后,响应时自动完成的操作。包括关中断、 保护断点及 形成中断入口地址,转入中断服务程序,CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务
32、子程序,以完成为相应的服务。,CPU执行完中断服务,应将在中断响应时保护的断点恢复,回到被中断的主程序,即中断返回的操作。,2019/4/4,76,1)中断请求,外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚; 中断请求信号的类型:边沿请求,电平请求 例如,NMI为边沿请求,INTR为电平请求,中断请求信号应保持到中断被处理为止;,CPU响应中断后,中断请求信号应及时撤销。,外设中断请求 PIC(8259) 8088,2019/4/4,77,(2)中断承认,在每条指令的最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断:,当前指令执行完。对
33、INTR,还应满足以下条件 当前指令是STI和IRET,则下条指令也要执行完。 当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完;,对INTR,CPU应处于开中断状态,即IF=1;,当前没有复位(RESET)和保持(HOLD)信号。,若NMI和 INTR 同时发生,则首先响应NMI。,2019/4/4,78,3)中断源识别,计算机中的中断源有很多,CPU必须识别是哪一个设备产生中断。 识别中断源有两个方法: 中断矢量法。由中断源提供中断类型号,CPU根据类型确定中断源。(8086/8088采用) 软件查询。将中断信号从数据总线读入用程序进行判别。(借助简单硬件电
34、路),2019/4/4,79,CPU在确定中断源后,响应时自动完成的操作, CPU中断响应时,要做以下工作:,4)断点保护,断点保护:CS、IP和PSW,获得中断服务程序入口地址,转入中断服务程序。,关中断,2019/4/4,80,中断标志IF的状态,IF0:可屏蔽中断不会被响应 关中断、禁止中断、中断屏蔽 系统复位,使IF0 任何一个中断被响应,使IF0 执行指令CLI,使IF0,IF1:可屏蔽中断会被响应 开中断、允许中断、中断开放 执行指令STI,使IF1,执行中断返回指令IRET恢复原IF状态,2019/4/4,81,中断服务子程序要做的工作 保护现场(PUSH regs) 开中断(S
35、TI) 允许中断嵌套 进行中断处理 关中断(CLI) 恢复现场(POP regs),5)中断处理(中断服务),CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应的服务。,中断服务子程序特点 为”远”过程(类型为FAR) 要用IRET指令返回,2019/4/4,82,6)中断返回,执行中断返回指令IRET IRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。,CPU执行中断服务程序结束时,应将在中断响应时保护的断点恢复,回到被中断的主程序,即中断返回的操作。,8086/8088的中断处理过程,查询中断的
36、顺序,决定了各种中断源的优先权: 软件中断 除法错中断 指令中断 溢出中断 非屏蔽中断 可屏蔽中断 单步中断,2019/4/4,84,4、中断调用及中断程序设计,理解中断调用指令的执行过程 INT n指令 IRET指令,2019/4/4,85,(1)INT n指令的执行过程,(1)SP=SP-2 (2)PSW (FLAGS) 入栈 (3)SP=SP-2 (4)断点地址(INT n 的下一条指令)的CS入栈 (5)SP=SP-2 (6)断点地址的IP入栈 (7)IP=0000:n4 (8)CS=0000:n4+2,2019/4/4,86,(2)可屏蔽中断的响应过程,(1) 处理器接到中断申请,处
37、理完当前指令即进入响应周期。 (2) 第二阶段即中断响应周期,在其间CPU向外部中断控制器发送两个响应脉冲信号INTA。 第一个响应脉冲通知中断控制器,已经响应外部中断请求,让中断控制器提供中断类型号。第二个响应脉冲,CPU取走中断类型号。 (3) 将标志寄存器中的内容压入堆栈保护,然后清IF和TF标志,以禁止INTR引脚以及陷进和单步中断。 (4) 将断点地址压入堆栈(CS:IP)。 (5) CPU得到中断类型号码n后,通过中断类型号与中断服务程序入口地址的关系找出该类型对应的段基地址和偏移地址,从而转入中断服务程序入口地址。完成中断响应任务。,2019/4/4,87,(3). IRET 指
38、令的执行过程,(1)IP=SS:SP (2)SP=SP+2 (3)CS=SS:SP (4)SP=SP+2 (6)FLAGS=SS:SP (7)SP=SP+2,2019/4/4,88,中断服务程序,编写中断服务程序与编写子程序类似 利用过程定义伪指令PROC/ENDP 第1条指令通常为开中断STI(允许嵌套) 最后用中断返回指令IRET 通常采用寄存器传递参数,主程序需要调用中断服务程序 调用前,需要设置中断向量 利用 INT n 指令调用中断服务程序,2019/4/4,89, 保护现场,将相关寄存器的内容压入堆栈中; 开中断为实现中断嵌套,必须设置开中断。 中断处理这是中断服务程序的核心; 关
39、中断为保证下一步恢复现场的操作不被打断; 恢复现场; 开中断使系统可以响应中断; 中断返回(IRET指令)。,中断服务子程序,0:3FFH,0:0000,从中断子程返回断点处, 靠的是执行中断子程最后的指令IRET, 从堆栈中取出断点地址给CS:IP, 继续执行被中断的程序。 故中断子程最后应安排 IRET 指令。,2019/4/4,92,6.4.3中断优先级及中断嵌套,多个中断源产生中断,CPU首先为谁服务? 中断优先级排队问题。,中断优先级控制要处理两种情况: 对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理; 对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断即允许中断嵌套。,2019/4/4,93,中断优先级的控制方法,4.中断判优(续),通常将中断判优与中断源识别合并处理。 x86系统中,该任务由中断控制器和CPU共同完成。,用软件查询哪个中断源有中断请求,先查询到的先响应。即:查询次序确定各中断优先权次序,先查询的优先权最高。,将所有的设备连成一条链,靠近CPU的设备优先级最高,越远的设备优先级别越低。,用硬件电路实现中断源的优先级排队。,与CPU配合来管理和处理中断优先级,对多个中断请求进行优先级判优。,