1计算机组成原理及汇编语言主讲老师:汤丹2第八章、输入/输出及中断系统1.输入/输出接口概述2.PC机I/O端口布局3.中断系统4.DMA控制器5.可编程接口芯片及应用3第一节、输入输出接口概述输入/输出(I/O)是指微处理器与外界交换信息,即通信。外部设备的特点:(1)品种繁多:有机械式、机电式和电子式等;(2)工作速度一般要比微处理器慢得多,而且速度的分布也相当宽;(3)信号类型与电平种类不只一种,既有数字电压信号,也有连续的电流信号或其它的模拟信号。而且信号电平的高低大小很不统一,范围广,离散性大;(4)信息的结构格式复杂。常见的例子有电传打字机、盒式磁带机与软盘驱动器等。这些设备之间的信息格式也各不相同,这就增加了接口设计的复杂性。4I/O端口电路的组成:(1)数据缓冲寄存器(2)控制寄存器(3)状态寄存器(4)数据总线和地址总线缓冲器(5)端口地址译码器(6)内部控制逻辑(7)联络控制逻辑5信息交换方式61.程序查询方式由CPU查询外设的运行状态,直接利用I/O指令控制数据的传送过程。程序查询方式是在程序控制下进行信息传送的,通过查询状态信息,同步CPU和外设的操作。特点:·接口电路简单;·主机与设备串行工作,效率低;·对突发事件不能响应。72.中断传送方式当外设数据准备完毕时向CPU发出中断请求,CPU响应中断时完成数据的传送过程。外设提交中断请求时,CPU才会响应中断,CPU的其它时间可以处理正常的事务。·中断:计算机在执行正常程序的过程中,出现某些异常事件或某种请求时,处理机暂停执行当前程序,转而执行更紧急的程序,并在执行结束后,自动恢复执行原先程序的过程。·特点:·硬件结构较查询方式复杂些,服务开销时间较大;·主程序与设备并行运行,CPU效率较高;·具有实时响应的能力。83.直接存储器存取(DMA)方式这种传送方式是由外围设备(或DMA控制)来控制的,它能直接在外围设备与存储器之间进行数据传送,而不需要CPU的干预,适用于进行大量的高速数据传送。94.通道方式CPU将部分权力下放给通道,由通道实现对外设的统一管理,并负责外设与内存间的数据传送。特点:·CPU效率更高;·硬件开销更大。105.外围处理机方式外围处理机(PPU)方式是通道方式的进一步发展。由于PPU基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小计算机。在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务。从某种意义上来讲,这种系统已变成分布式的多机系统。11第二节、PC机I/O端口布局I/O端口寻址方式选择出选中的I/O接口芯片(称为片选)选择出该芯片中的某一寄存器(称为字选)121.独立的I/O寻址方式又称独立编址方式。I/O设备的地址空间和存贮器地址空间是两个独立的空间。CPU使用专门的IN(输入)和OUT(输出)等I/O指令来实现数据传送。工作时,CPU对指令进行译码(例如:给出M/IO信号),区分是存储器读写操作还是I/O读写操作。•优点:不占用存储器地址空间;•缺点:需专门的I/O指令。132.存储器映像编址方式把每一外设端口视为一个存储单元,统一编排地址,即外设和存储存储器使用的是同一个地址空间。这样,就可利用访内指令去访问I/O端口,而不需要专门的I/O指令。CPU采用存贮器读写控制信号(如MEMR、MEMW),并经地址译码控制来确定是访问存贮器还是访问I/O设备。•优点:简化指令系统,无需专门的I/O指令;•缺点:I/O端口地址占用了一部分存储器地址空间;I/O指令码长,执行速度慢。143.I/O端口地址分配I/O接口硬件分类(1)系统板上的I/O芯片(2)I/O扩展槽上的接口控制卡I/O端口地址分配I/O端口地址选用的原则(1)凡是被系统配置所占用了的地址一律不能使用;(2)未被占用的地址(计算机厂家申明保留的地址除外),用户可以使用;(3)一般,用户可使用300~31FH地址,为了避免与其他用户开发的插板发生地址冲突,最好采用地址开关。15第三节中断技术1.中断的基本概念2.8088CPU的中断系统3.可编程中断控制器8259A4.中断程序设计163.1中断的基本概念1.什么是中断2.中断源和中断优先权3.中断服务程序4.断点和中断现场5.硬件中断和软件中断171、什么是中断在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。18中断服务程序1中断服务程序2非预料事件1CPU执行流程非预料事件2192、中断源和中断优先权引起中断的因素很多,将发出中断申请的外设或内部原因,称为中断源给每个中断源指定一个优先权,称为中断优先权当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序,依次响应。203、中断服务程序处理中断源,完成其所要求功能的程序,称中断服务程序(中断例行程序、中断子程)。CPU执行流程中断服务程序1中断服务程序2非预料事件2非预料事件121非预料事件是指事件发生的时间无法预知,即中断源何时产生中断不确定,是随机的。但事件的性质及处理方法则是已知的,确定的,即中断服务程序是事先编写好的,只是何时执行未知。中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。224、断点和中断现场断点:是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址。中断现场:是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。231000:150H、、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、PUSHAX、、、、IRETCPU在执行此指令时,某中断源发申请中断;CPU在执行完该指令后,转去执行中断子程地址1000:150H为断点断点概念:24早期中断概念的引入,是为解决CPU与外设间的速度匹配问题,提高CPU的工作效率。中断源主要是由外部硬件产生。当今的中断技术,不再限于外部硬件产生中断(称硬件中断或外中断),还可由CPU内部产生(如被零除操作),或者由程序预先安排,即由指令调用中断服务程序。(称软件中断或内中断)5、硬件中断和软件中断251000:150H、、、、、、、、、、MOVAH,01INT21HCMPAL,0Dh、、、、、、、、、、PUSHAX、、、、IRET用指令调用中断程序软件中断用指令调用中断程序263.28088CPU的中断系统一、8088CPU的中断分类二、8088CPU的中断优先权三、8088CPU响应中断的过程四、8088CPU如何获取中断类型号27一、8088CPU的中断分类按中断源的不同,中断分为内中断和外中断。1、内中断(软中断)指CPU执行某些特殊操作或由INT指令引起的中断①被零除操作或OF=1时执行INTO指令引起②使用DEBUG中的单步或断点设置操作引起③执行INTn指令引起28指外部芯片通过CPU的INTR引脚或NMI引脚发出中断申请引起的中断。当INTR上有高电平信号当NMI上有上升沿信号2、外中断(硬中断)8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND最大组态(最小组态)VCCA15A16/S3A17/S4A18/S5A19/S6(HIGH)(SSO)MN/MXRDRQ/GT0(HOLD)RQ/GT1(HLDA)LOCK(WR)S2(IO/M)S1(DT/R)S0(DEN)QS0(ALE)QS1(INTA)TESTREADYRESET29可屏蔽中断由INTR引脚引起的中断,称可屏蔽中断。CPU是否响应INTR引脚上的中断请求取决于IF标志:IF=1,CPU响应INTR引脚上的中断请求IF=0,CPU不响应INTR引脚上的中断请求即当IF=0时,将INTR引脚上的中断申请屏蔽。非屏蔽中断由NMI引脚引起的中断,称非屏蔽中断。当NMI引脚上产生上升沿信号,CPU必响应此中断请求,即NMI引脚上的中断请求不受IF标志的控制,IF不能屏蔽NMI引脚上的中断请求。但在系统通电瞬间或屏蔽寄存器最高位置“0”可屏蔽NMI。将最高位置“1”又可以开放NMI。MOVDX,A0H;A0H~BFH为屏蔽寄存器MOVDX,A0HMOVAL,00HMOVAL,80HOUTDX,AL;屏蔽NMIOUTDX,AL;开放NMI30保留(ALT打印机)中断逻辑INTn指令INTO指令除法错误单步TF=1非屏蔽中断请求IR0IR6IR5IR4IR3IR2IR1IR7可编程中断控制器(PIC)8259AINTn4012CPUINTRNMI08090A0B0C0D0E0F系统定时器键盘保留(打印机)软盘串行通信接口保留(通信)彩色/图形接口8086/8088中断源31当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源。二、8088CPU的中断优先权优先级高低内中断(除零,INT指令,断点,INTO指令)非屏蔽中断可屏蔽中断低内中断(单步)32三、8088CPU响应中断的过程当中断源产生中断申请后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成下列响应中断的过程:①取中断类型号N②当前PSW的内容入栈③清IF、TF标志为0④当前CS的内容入栈⑤当前IP的内容入栈⑥取内存单元(0:N×4)字内容送IP取中断子程⑦取内存单元(0:N×4+2)字内容送CS入口地址此时CS:IP指向中断程序的入口,开始执行中断程序。保存现场33当前指令执行完的含义•CPU正在执行一条指令,执行完本条指令,响应中断;•对于带重复前缀的串指令(如REPMOVSB),执行一次重复和串指令即可响应中断;•对MOV和POP指令,处理对象为段寄存器,以及STI和IRET指令执行完本条指令后,再执行一条指令才响应中断。34内存中断向量表0:0~3FFH1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、0200h3000h、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、、、MOVBX,CX、、、、、、IRET、、、类型N中断子程某中断源发申请中断,申请执行类型号为N的中断子程响应中断前SS:SP响应中断后SS:SP堆栈执行IRET后(IP)(CS)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h0:3FFH0:035从中断子程返回断点处,靠的是执行中断子程最后的指令IRET,从堆栈中取出断点地址给CS:IP,继续执行被中断的程序。故中断子程最后应安排IRET指令。1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、0200h3000h、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、MOVBX,CX、、、IRET、、、响应中断前SS:SP响应中断后SS:SP堆栈执行IRET后(IP)(CS)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h36四、8088CPU如何获取中断类型号由前面介绍知,当中断源产生中断请求后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成响应中断的过程,共七个步骤而第一步就是获取中断类型号。不同的中断源,8088CPU获取中断类型号的方法不同。37根据8088CPU对中断的分类,各中断获取类型号的方法①CPU执行除零或OF为1执行INTO指令除零固定类型号00HOF为1执行INTO指令固定类型号04H②使用DEBUG下的单步和断点操作单步固定类型号01H断点固定类型号03H内中断③执行中断调用指令INTN由指令中给出指令中指定类型号N①非屏蔽中断引