第5章 输入输出和中断.

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

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

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

资源描述

第5章输入输出和中断第5章输入输出和中断5.1I/O设备数据传送方式5.2中断传送方式5.3BIOS中断调用方式5.4综合举例开始第5章输入输出和中断5.1I/O设备数据传送方式CPU与外设的传送方式返回本章目录第5章输入输出和中断(1)CPU与外设之间交换的信息控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。状态信息:从接口输入的状态信息表示I/O设备当前的状态。数据信息则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。第5章输入输出和中断(2)数据传送方式CPU与外设之间传输数据的控制方式有三种:即程序直接控制输入输出方式、中断方式和DMA方式。1。程序直接控制输入输出方式利用输入输出指令编程直接对端口进行数据传送操作,称为直接程序控制I/O。它适用于对一些较为简单的I/O设备的控制。根据不同的设备对象可以分为以下两种具体处理方法。第5章输入输出和中断a。无条件传送这是最为简单的输入输出方式。它不用考虑I/O设备的状态,任何时候CPU都可根据程序运行的需要,通过执行一条输入或输出指令传送数据。换句话说,CPU假定外设随时处于就绪或空闲的状态。第5章输入输出和中断b。查询传送一般说来,CPU与外部设备以不同的速度工作。当CPU与外设不同步时,很难确保CPU在执行输入输出操作时外设一定处于就绪或空闲状态。对于输入的情况,若输入设备尚未就绪时就发IN指令,将读入无效的数据,对于输出的情况,若在输出设备“忙”时发OUT指令,将会造成输出数据的丢失。在这种情况下,为保证数据传输正确进行,在每次传输动作启动之前,CPU必须先对外设进行状态查询。第5章输入输出和中断2。中断方式为了协调外部设备与CPU的工作,一般采用一种更常用的传送方式,即中断传送方式。当外设准备好时,外设向CPU发出中断请求,CPU转入中断处理程序,完成输入输出工作。第5章输入输出和中断3。DMA方式DMA方式即直接存储器存取方式(DirectMemoryAccess)是适用于超高速、大流量数据传输设备的I/O传送方式。对于磁盘机、磁带机、CRT显示器、高速模数转换器等高速设备,其数据传输率几乎与CPU指令执行时间为同一个数量级。无论用查询方式还是中断方式,在成组交换数据时,都有可能造成数据丢失,而DMA方式利用硬件DMA控制器实现I/O设备直接与内存储器进行成批数据交换,由于CPU只启动而不干预DMA传送过程,可以实现非常高的数据传输率。第5章输入输出和中断DMA方式的工作过程为:每次DMA传输前,DMA控制器向CPU发总线请求信号,CPU接到DMA请求后,向DMA控制器发应答信号,并让出总线控制权。DMA控制器接管总线使用权,进入DMA传输过程。在传输过程中,由DMA控制器向地址总线发出存储器地址信号,并给出存储器读写命令,将数据写入指定存储单元或由指定存储单元送往外设。然后由DMA控制器修改地址指针(+1)和字节计数器(-1),并检查传送是否结束。所有字节传送完成后,向CPU发回结束信号,并交还总线控制权。DMA控制器一般包括数据寄存器、状态和控制寄存器、地址寄存器、字节计数器等端口。在进行DMA传输之前,应对这些端口进行初始化编程。有关DMA的初始化编程方法,涉及到DMA控制器的硬件实现细节,将在《接口技术》课程中介绍。第5章输入输出和中断CPU打印机控制器打印机DBSTBBUSYCBDBAB图5.3打印机连接示意图【例5.3】向打印机输出字符。第5章输入输出和中断图5.4[例5.3]程序流程图第5章输入输出和中断源程序:┆MOVBX,OFFSET,BUFFER;置缓冲区偏移量MOVCX,CHRTL;置输出字符计数器BG:MOVAL,[BX];取字符MOVDX,378H;输出字符到控制器OUTDX,ALMOVDX,379H;读打印机状态第5章输入输出和中断WT:INAL,DXTESTAL,80H;判‘忙’否?JZWT;忙,重查询MOVDX,37AHMOVAL,0DH;形成选通信号OUTDX,AL;令打印机打印字符MOVAL,0CH;准备复位选通信号OUTDX,AL;复位选通位INCBX;指向下一输出字符LOOPBG┆第5章输入输出和中断存储器外部设备CPUDMA请求DMA响应HOLDHLDADMA控制器图5.5DMA控制器与CPU关系图第5章输入输出和中断5.2中断传送方式5.2.1概述5.2.28086/8088的中断系统返回本章目录第5章输入输出和中断5.2.1概述1.中断、中断源中断:当CPU正在执行程序时,由于程序的预先安排或内外部事件的发生,CPU中断现行的程序,而转到为预先安排的事件或内外部事件服务的程序中去,处理完事件后,CPU又返回执行原来的程序,这叫做中断。这些引起中断的事件称为中断源。2.中断的作用(1)CPU与外设并行工作(2)实现实时控制(3)突发事件处理第5章输入输出和中断3.中断源种类及中断类型(1)中断源的种类l硬件故障l输入/输出设备l外部事件(2)中断类型根据是否可屏蔽,分为不可屏蔽中断和可屏蔽中断。根据位置不同分为内中断和外中断。根据产生中断的原因,又分为软件中断和硬件中断。第5章输入输出和中断4.中断优先级和中断嵌套IBM-PC规定中断的优先级次序为:优先级高内中断(语法错,INT0,INT)非屏蔽中断(NMI)可屏蔽中断(INTR)低单步中断第5章输入输出和中断图5.7中断嵌套程序执行过程。↓↓主程序高级中断程序更高级中断程序高级中断程序低级中断程序第5章输入输出和中断5.中断处理过程微型机在运行程序的过程中,若出现中断申请时,CPU及时地择优响应,立即停止现行程序的执行,并保护现场,接着进行相应的中断服务。服务完毕之后,立即恢复被中断的现场,返回被中断程序的断点,继续往下执行。中断处理大致包括如下过程:中断请求、中断响应、中断处理及中断返回。返回本节第5章输入输出和中断5.2.28086/8088的中断系统1.中断源8086/8088系统设有如下的中断源:l外部中断:包括可屏蔽中断INTR和不可屏蔽中断NMI。l内部中断:包括除法错中断、溢出中断、软中断、和单步中断。其中断源间的关系如图5.8所示。第5章输入输出和中断图5.88086/8088的中断源第5章输入输出和中断(1)内部中断内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:l除数为0中断——类型0中断l单步中断——类型1中断l断点中断——类型3中断l溢出中断——类型4中断l中断指令——指令INTn中断第5章输入输出和中断(2)外部中断l不可屏蔽中断:常用于紧急故障处理或紧迫事件处理中。l可屏蔽中断:可屏蔽中断的设置主要是为了实现多中断的处理和中断嵌套的应用。第5章输入输出和中断2.中断向量和中断向量表IBMPC系列及其兼容机共能支持256种类型的中断,系统给每一种中断都安排一个中断类型号,中断类型号依次为0~0FFH。每种类型的中断都由相应的中断处理程序来处理,为了方便CPU能快速的转入对应的中断处理程序,系统用一张表来保存这些中断处理程序的入口地址,该表就称为中断向量表。该表的每一项保存一个中断处理程序的入口地址,它相当于一个指向中断处理程序的指针,所以就被称为中断向量。中断向量表如图所示,它被安排在内存最低端的1K字节空间中。其中每个中断向量占用四个字节,前两字节保存中断处理程序入口地址的偏移,后两个字节保存中断处理程序入口地址的段值。按照上述中断向量表的结构和存放地址,根据中断向量号(或中断类型号)可计算出中断向量所在存储单元的地址。若中断向量号为n,则中断向量所在单元的开始地址是4*n。图5.98086/8088系统的中断向量表第5章输入输出和中断3.设置中断向量用指令来为中断类型N设置中断向量:MOVAX,0MOVES,AXMOVBX,N*4;中断入口地址MOVAX,OFFSETINTHANDMOVES:WORDPRT[BX],AX;设置中断处理程序INTHAND的入口地址MOVAX,SEGINTHANDMOVES:WORDPRT[BX+2],AX第5章输入输出和中断┆INTHAND:;中断处理程序┆IRET【例5.4】使用DOS功能调用存取中断向量。┆MOVAL,NMOVAH,35H;调用DOS功能35H第5章输入输出和中断INT21HPUSHES;保存原中断向量PUSHBXPUSHDSMOVAX,SEGINTHANDMOVDS,AX;置用户定义的中断处理程序INTHAND的入口地址(段地址和偏移地址)MOVDX,OFFSETINTHANDMOVAL,NMOVAH,25H;设置新的中断向量第5章输入输出和中断INT21HPOPDSPOPDX;恢复原中断向量POPDSMOVAL,NMOVAH,25HINT21HRETINTHAND:;中断处理程序┆IRET第5章输入输出和中断4.中断过程当中断发生时,由硬件自动完成下列动作:(1)取中断类型号N。(2)标志寄存器(PSW)内容入栈。(3)当前代码段寄存器(CS)内容入栈。(4)当前指令计数器(IP)内容入栈。(5)禁止外部中断和单步中断(IF=0,TF=0)。(6)从中断向量表中取4*N的字内容送IP,取4*N+2的字内容送CS。(7)转中断处理程序。第5章输入输出和中断图5.10中断响应过程第5章输入输出和中断5.8259A可编程中断控制器例如,只允许打印机中断,可设置如下中断字:MOVAL,01111111BOUT21H,AL如果系统要新增设打印机中断,则可用下列指令实现:INAL,21HANDAL,01111111BOUT21H,AL结束外中断用下面的指令:MOVAL,20HOUT20H,AL第5章输入输出和中断6.中断处理程序图5.11中断屏蔽寄存器和中断命令寄存器第5章输入输出和中断下面是主程序为中断所做的准备工作和硬件(包括CPU和外设接口)自动完成的动作。(1)设置中断向量。(2)设置设备的中断屏蔽位。(3)设置CPU的中断允许位IF(开中断)。(4)外设接口送中断请求给CPU。第5章输入输出和中断(5)当前指令执行完成后,CPU送响应信号给外设接口。(6)CPU接收中断类型号。(7)当前的PSW,CS和IP保存入栈。(8)清除IF,TF。(9)中断向量送IP和CS。第5章输入输出和中断编写中断处理子程序的步骤,请注意与子程序编写的一些不同之处。(1)保存寄存器内容。(2)如允许中断嵌套,则开中断(STI)。(3)处理中断。(4)关中断。(5)送中断结束命令(EOI)给中断命令寄存器。(6)恢复寄存器内容。(7)返回被中断的程序(IRET)。第5章输入输出和中断【例5.5】编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“Thebellisring!”。编程如下:DATASEGMENTCOUNTDW1MESSDB‘Thebellisring!’,0DH,0AH,’$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:第5章输入输出和中断DATAMAINPROCFARSTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAL,1CH;取中断向量MOVAH,35H第5章输入输出和中断INT21HPUSHES;存原中断向量段址PUSHBX;存原中断向量偏移量PUSHDSMOVDX,OFFSETRING;新偏移量送DXMOVAX,SEGRINGMOVDS,AX;新段址送DSMOVAL,1CH第5章输入输出和中断MOVAH,25HINT21H;写入新的中断向量POPDSINAL,21H;读取中断屏蔽字ANDAL,11111110B;允许定时器中断OUT21H,ALSTI;开中断MOVDI,2000DELAY:MOVSI,3000;延时第5章输入输出和中断DELAY1:DECSIJNZDELAY1DECDIJNZDELA

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

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

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

×
保存成功