第12章 输入输出与中断

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

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

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

资源描述

第十二章输入输出与中断12.1输入输出指令12.2中断指令12.3外同步指令和空操作指令12.4CPU与外设间的数据传送12.5中断系统概述12.68086/8088的中断系统12.78256A中断控制器及其程序设计12.8中断程序设计方法12.9IBMPC的BIOS调用及DOS功能调用12.1输入输出指令1.IN输入指令指令汇编格式:INacc,port操作:acc←(port)将指定端口的内容(字或字节)传送到累加器AX或AL中。受影响的标志位:无2.OUT输出指令指令汇编格式:OUTport,acc操作:port←acc将累加器AX或AL的内容传送到指定端口。受影响的标志位:无12.2中断指令1.INT中断指令指令汇编格式:INTn操作:SP←SP-2,(SP,SP+1)←FIF←0,TF←0SP←SP-2,(SP,SP+1)←CSSP←SP-2,(SP,SP+1)←IPCS←(n*4+2,n*4+3)IP←(n*4,n*4+1)受影响的标志位:IF,TF说明:n称为中断类型号,必须是0~255之间的立即数。8086/8088在其内存的前1K字节(地址为00000H~003FFH)建立了一个中断向量表。表中内容分为256项,对应于类型号0~255,每一项占用4个字节单元,用来存放相应类型的中断服务程序的入口地址,高两个字节存放服务程序的入口地址的段地址部分。低两个字节存放偏移地址部分。其结构如下:类型0的中断服务程序入口地址类型1的中断服务程序入口地址类型2的中断服务程序入口地址::类型255的中断服务程序入口地址00000H00003H003FCH003FFH00008H0000BH00004H00007H0000CH003FBH2.INTO溢出中断指令指令汇编格式:INTO操作:如果OF=1,则产生一个中断类型为4的软件中断;否则,不产生任何操作。即:如果OF=1,则SP←SP-2,(SP,SP+1)←FIF←0,TF←0SP←SP-2,(SP,SP+1)←CSSP←SP-2,(SP,SP+1)←IPCS←(4*4+2,4*4+3)IP←(4*4,4*4+1)受影响的标志位:IF,TF说明:INTO指令一般用在算术运算指令后面,在有溢出的情况下,启动一个溢出中断服务程序。3.IRET中断返回指令指令汇编格式:IRET操作:IP←(SP,SP+1),SP←SP+2CS←(SP,SP+1),SP←SP+2F←(SP,SP+1),SP←SP+2受影响的标志位:所有状态标志位。说明:IRET指令是任何中断服务程序的最后一条要执行的指令,它使CPU从中断服务程序返回被中断程序的断点处继续执行。12.3外同步指令和空操作指令8086/8088CPU提供了一种与外部设备同步和使用协处理器(8087或8089)为其完成其本身不能完成的工作的指令。1.HLT停机指令指令汇编格式:HLT操作:使CPU处于暂停状态(动态停机)。受影响的标志位:无说明:CPU执行HLT指令后,就停止执行后续指令,只有当产生中断请求信号(发生中断)或有复位信号(RESET线变成低电平)时,才能退出暂停状态。中断信号产生后,CPU停止执行HLT指令,而去执行中断服务程序,执行IRET后,CPU返回被中断程序的断点处,执行HLT的后续指令。2.WAIT等待指令指令汇编格式:WAIT操作:CPU进入等待状态,检测TEST信号线,当此信号线为低电平时,退出等待状态,执行WAIT的后续指令。受影响的标志位:无说明:CPU执行WAIT后,只有当TEST信号变成低电平时,才能执行WAIT的后续指令。除此之外,任何情况也不能使CPU停止执行WAIT指令(退出等待状态)。3.ESC交权指令指令汇编格式:ESCext_op,src操作:如果src是寄存器操作数,则将其内容放置在数据总线上,如果src是存储器操作数,CPU则从存储器中取出操作数放置在数据总线上。受影响的标志位:无说明:ESC指令称为换码指令,它使协处理器能够从8086/8088的指令流中获得一个操作码和一个操作数。指令中exp_op为操作码,是一个6位二进制的数据,src是3.4节介绍的寻址方式3~8中的任何一种方式。4.LOCK锁定指令指令汇编格式:LOCK操作:在执行某指令期间保持一个总线锁定信号(LOCK引线变为低电平)。受影响的标志位:无说明:LOCK指令是一个封锁前缀,它可以加在任何指令的前面,使CPU在执行该指令期间保持一个总线锁定信号。在多处理机系统中用其实现对共享资源的存取控制。例如,在重复数据串传送指令前面加上一个封锁前缀(LOCKREPMOVS),将阻止系统中其它处理器在重复数据串执行的整个过程中对存储器进行存取。5.NOP空操作指令指令汇编格式:NOP操作:无受影响的标志位:无说明:空操作指令NOP使CPU不进行任何操作,但要花费3个时钟周期,然后执行其后续指令,一般用于编制软件延时程序或用纠错程序调试程序时抹掉多余的指令。12.4CPU与外设间的数据传送12.4.1输入输出接口CPU外部设备数据寄存器状态寄存器控制寄存器端口地址数据控制信号数据状态信号控制信号I/O接口12.4.2CPU与外设之间的接口信号2.状态信息它用来反映外设接口电路或外设的状态,CPU可根据这些状态信息决定对外设的操作或控制。3.控制信息用于控制输入输出设备装置的启动或停止,设备的工作方式等。以上三种不同性质的信息通过不同的端口传送,每个端口都有自己的地址,CPU寻址的是端口地址,而不是笼统的外设。1.数据信息这是CPU和外设之间真正要交换的信息。12.4.3CPU与外设间的数据传送方式(1)无条件I/O方式;(2)查询I/O方式;(3)中断I/O方式;(4)DMA(直接存储器存取)方式。1.无条件传送当外设的数据传送是定时的,且时间是已知的情况下,CPU定时取入数据,而当CPU去取数据时,数据肯定已准备好;或CPU定时发送数据,外设肯定已准备好接收数据,这时采用无条件传送。无条件传送是最简单的数据传送方式。例如:开关量和模拟量的输入输出等2.查询传送方式在外设比CPU工作速度低得多的情况下,在输入时,CPU要查询外设是否就绪(准备好输入数据),若就绪,才能读入数据;在输出时,则不断查询外设是否空闲(准备好接收数据),若空闲,则CPU输出一个数据。例如,从外部设备端口输入并存入内存一组数据,设SR为状态寄存器,其第7位为就绪位,DR为数据寄存器,则程序段如下::MOVCX,0050HMOVBX,0200HWAIT:INAL,SRTESTAL,80HJZWAITINAL,DRMOV[BX],ALINCBXLOOPWAIT:3.中断传送所谓中断传送方式就是,当CPU与外设交换数据时,无须连续不断地查询外设的状态,而是在需要时,由外设主动地向CPU提出请求,让CPU为其服务。在输入时,当外设数据就绪时,外设向CPU提出中断请求,CPU接到该请求后,暂停当前程序的执行,转去执行相应的中断服务程序,完成所需的数据输入,然后再返回去执行原来中断了的程序;在输出时,当外设空闲时,外设向CPU提出中断请求,CPU接到该请求后,暂停当前程序的执行,转去执行相应的中断服务程序,完成所需的数据输出,然后再返回去执行原来中断了的程序。采用中断传送方式,可以大大提高系统的输入输出效率,节省大量的CPU时间。12.5中断系统概述中断:当CPU正在执行某程序时,由于外界事件的需要向CPU发出申请,CPU暂停现行程序的执行而转去处理临时发生的事件,处理完后再返回到被中断程序的断点处,继续向下执行,这个过程称为中断。在中断过程中执行的事件处理程序称为中断服务程序。(1)一般的输入输出设备。如键盘、打印机、通信接口等。(2)数据通道中断源。如磁盘。(3)实时时钟。(4)故障源。(5)为调试程序而设置的中断源。12.5.1中断请求与中断源I/O设备或者事件需要CPU中断处理时,必须向CPU发出中断请求信号。该信号作为CPU的输入,当CPU收到该信号时,可引起中断。引起中断的原因,或者说发出中断请求信号的源称为中断源。通常,中断源有以下几种:12.5.2中断系统的功能(1)实现中断与返回(2)能实现优先级排队(3)能实现中断嵌套12.5.3中断响应1.CPU响应中断的条件(1)有中断请求信号。(2)中断请求没有被屏蔽。(3)CPU的中断是开放的。(4)CPU在现行指令执行完毕时,响应中断。(1)关中断。(2)保存断点。(3)保护现场。(4)给出中断服务程序入口,并转入该服务程序。(5)恢复现场。(6)从中断返回。2.中断响应时及中断响应期间CPU应做的工作12.68086/8088的中断系统非屏蔽中断请求中断逻辑INTn(指令)INTO(指令)除法错误单步中断(TF=1)8259APIC可屛蔽中断请求NMIINTR12.6.1外部中断8086/8088CPU有两种中断请求输入,即非屏蔽中断请求输入和可屏蔽中断请求输入。用户不能禁止的中断称为非屏蔽中断,这种中断一旦出现,CPU必须立即响应,所以非屏蔽中断总是用于处理紧急事件。用户能控制的中断称为可屏蔽中断,用户可通过软件禁止可屏蔽中断的中断源发中断请求信号,或者关闭中断而对发出的请求不作响应。1.可屏蔽中断(1)为可屏蔽中断设置的指令。(2)8259A中断控制器。用来对可屏蔽中断源进行管理,其主要任务是接收外部设备的中断请求,然后根据优先级的高低和预先规定的排优规则决定哪个设备能够申请中断,由8259A向CPU发中断请求信号。当CPU响应此请求并给出中断应答之后,8259A还要把一个中断方式码通过数据总线交给CPU,供CPU识别是谁发出的中断请求。每个8259A有8个中断请求输入端,因此单个8259A可以处理8级中断。在不增加任何硬件线路的情况下,通过级连8259A最多可以管理64级中断。8259AINTAINTIR0IR1IR2IR3IR4IR5IR6IR7SP/EN到8086INTACAS0CAS1INTCAS2IR0IR1IR2IR3IR4IR5IR6IR7SP/EN到8086IR0INTAIR1IR2INTIR3IR4CAS0IR5CAS1IR6CAS2IR7SP/ENIR0INTAIR1IR2INTIR3IR4CAS0IR5CAS1IR6CAS2IR7SP/EN8259A:::中断请求输入(最多64条)8259A8259A(3)CPU对可屏蔽中断的响应。当外设通过8259A向CPU提出申请,且CPU的IF=1时,CPU就挂起正在处理的任务,进行中断响应和处理。整个过程如下:①响应中断;②读取8259A送来的方式码;③将标志寄存器F的内容压栈;④清除中断允许标志位IF和陷阱标志位TF;⑤将代码段寄存器CS和指令指针IP的内容压栈;⑥根据方式码找到服务程序入口,且调用服务程序;⑦执行用户中断服务程序;⑧将保存在栈中的IP和CS的内容从栈中弹回到IP和CS;⑨将保存在栈中的标志寄存器F的内容从栈中弹回到标志寄存器F;⑩从中断返回。以上过程的①~⑦由硬件自动完成,⑧~⑩执行IRET指令实现。2.非屏蔽中断这类中断不能被屏蔽,即使在关中断的情况下(IF=0),在执行完当前指令后,CPU也会立即响应。非屏蔽中断的方式码规定为2。响应非屏蔽中断的过程如下:①将标志寄存器F的内容压栈;②清除中断允许标志位IF和陷阱标志位TF;③将代码段寄存器CS和指令指针IP的内容压栈;④根据方式码(=2)找到服务程序入口,且调用服务程序;⑤执行非屏蔽中断服务程序;⑥将保存在栈中的IP和CS的内容从栈中弹回到IP和CS;⑦将保存在栈中的标志寄存器F的内容从栈中弹回到标志寄存器F;⑧从中断返回。以上过程的①~⑤由硬件自动完成,⑥~⑧执行IRET指令实现。12.6.2内部中断(1)方式0——除法错中断(2)方式1——单步中断(3)方式3——断点中断(4)方式4——溢出中断(5)用户定义的软件中断:利用INT指令产生的。所有的内部中断都具有下述特点:1)中断向量码或者包含在指令中,或者是预定的;2)除单步中断外,内

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

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

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

×
保存成功