1、第7章 输入输出接口,7.1 I/O接口概述 7.2 简单IO接口芯片 7.3 CPU与外设之间的数据传输方式 7.4 DMA控制器,7.1 I/接口概述,I/O接口电路是计算机和外设之间传送信息的部件,每个外设部件都要通过相应的接口与系统总线相连,实现与CPU之间的数据交换。接口技术专门研究CPU和外设之间的数据传送方式、接口电路的工作原理和使用方法等。,7.1.1 输入/输出信息,1.数据信息 CPU和外设交换的基本信息是数据。数据信息大致可分为数字量、模拟量和开关量三种类型。 2.状态信息状态信息反映了外设当前所处的工作状态,是外设发送给CPU的,用来协调CPU和外设之间的操作。 3.控
2、制信息控制信息是由CPU发送给外设,用以控制外设工作。,7.1.2 I/O接口的主要功能,输入接口:只有当CPU从该接口输入数据时才允许选定的输入接口将数据送到总线上由CPU读取,其它时间不得占用总线 。因此一般使用三态缓冲器(三态门)。输出时,CPU通过总线将数据传送到输出接口内的数据寄存器中,然后由外设读取。在CPU向它写入新数据之前该数据将保持不变。 数据寄存器一般由锁存器实现,如74LS373。,1.对输入输出数据进行缓冲和锁存,2.对信号的形式和数据的格式进行变换,由计算机直接处理的信号为一定范围内的数字量、开关量和脉冲量,它与外设所使用的信号可能不同。所以,在输入输出时,必须将它们
3、转变成适合对方的形式。,4.提供联络信号,3.对I/O端口进行寻址,I/O接口处在CPU和外设之间,既要面向CPU进行联络,又要面向外设进行联络。联络的目的是使CPU与外设之间数据传送的速度匹配。联络的具体内容有:状态信息、控制信息和请求信息。,在一个微机系统中,通常会有多个外设。而在一个外设的接口电路中,又可能有多个端口(Port),每个端口用来保存和交换不同信息。每个端口必须有各自的端口地址以便CPU访问。因此,接口电路中应包含地址译码电路使CPU能够寻址到每个端口。,7.1.3 I/O接口的结构,数据端口:用于数据信息输入输出的端口。 状态端口:CPU通过状态端口了解外设或接口部件本身状
4、态。 控制端口:CPU通过控制端口发出控制命令,以控制接口部件或外设的动作。,7.1.4 I/O的寻址方式,1I/O端口与内存统一编址,I/O端口与内存统一编址,即I/O端口的地址和内存的地址在同一个地址空间内。所有访问内存的指令都可访问I/O端口,其缺点是占去内存部分空间且难以区分某条指令访问的是内存还是I/O端口。,2I/O端口独立编址,I/O端口有独立的地址空间,即I/O端口的地址和内存的地址不在同一个地址空间内。系统需有专门的输入/输出的指令,需要相应的控制电路和控制信号。好处是I/O端口不占用内存部分地址空间,缺点是需增加硬件电路的复杂性,并且I/O指令一般较少、不如访问内存的指令丰
5、富。,7.2 简单IO接口芯片,1.锁存器74LS373,74LS373是由8个D触发器组成的具有三态输出和驱动的锁存器,使能端G有效时,将输入端(D端)数据打入锁存器,当输出允许端 有效时,将锁存器中锁存的数据送到输出端Q;当 =1时输出为高阻。常用的锁存器还有74LS273,Intel 8282等。,74LS244是一种三态输出的缓冲器(或称单向线驱动器),74LS244逻辑电路及引脚如图所示,内部线驱动器分为两组,分别有四个输入端(1A11A4,2A12A4)和四个输出端(1Y11Y4,2Y12Y4),分别由使能端 、 控制。当 为低电平,1Y11Y4的电平与1A11A4的电平相同,当
6、为低电平,2Y12Y4的电平与2A12A4的电平相同;当 (或 )为高电平时,输出1Y11Y4(或2Y12Y4)为高阻态。常用的缓冲器还有74LS240,74LS241等。,2.缓冲器74LS244,74LS245是一种三态输出的数据收发器(或称双向线驱动器),74LS245逻辑电路及引脚如图所示,16个三态门每两个三态门组成一路双向驱动。由 、DIR两个控制端控制, 控制驱动器有效或高阻态;当 端有效时DIR控制驱动器的驱动方向,DIR=0时,驱动方向为BA;DIR=1时,驱动方向为AB。74LS245的真值表如表所示。常用的数据收发器还有74LS243、Intel 8286、Intel 8
7、287等。,74LS245真值表,3.数据收发器74LS245,7.3 CPU与外设之间的数据传输方式,微机系统与外设之间的数据传输过程在程序的控制下进行。 特点:以CPU为中心,由输入输出程序实现数据传输。 两种方式:无条件传输条件传输(查询方式),7.3.1 程序方式,1.无条件传输方式,一般用于能够确信外设已经准备就绪的场合。如读取开关的状态,LED的显示等。,【例题7.1】硬件如下图所示,不断扫描开关Si,当开关闭合时,点亮相应的LEDi,当地址为200H时, 为低电平。,分析:开关Si闭合时,输入为低电平“0”,而点亮相应LEDi,则输出为高电平“1”,输入与输出的关系相反。编写程序
8、时,若采取先读入开关状态,再分析每一位的状态,然后决定LED的亮灭,则该程序显得非常繁琐。,CODE SEGMENTASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXAGAIN: MOV AH,1 ;读键盘缓冲区字符INT 16HCMP AL,1BH ;若为“Esc”键,则退出JZ EXITMOV DX,200HIN AL,DX ;读取开关状态NOT AL ;取反OUT DX,AL ;输出控制LEDJMP AGAINEXIT: RET ;返回DOSMAIN ENDP CODE ENDSEND START,2.条件传输方式,CPU不断
9、读取并测试外设的状态,如果外设处于“准备好”状态(输入设备)或“空闲”状态(输出设备),则输入或输出数据。对于条件传输来说,一个条件传输数据的过程一般由三个环节组成: (1) CPU从接口中读取状态字; (2) CPU检测状态字的相应位是否满足“就绪”条件,若不满足,则转1; (3) 若状态位表明外设已处于“就绪”状态,则传输数据。,【例题7.2】 从终端往缓冲区输入1行字符,当遇到回车符(0DH)或超过81个字符时,输入结束,并自动加上一个换行符(0AH)。如果在输入的81个字符中没有回车符,则在终端上输出信息“BUFFER OVERFLOW”。设终端接口的数据输入端口地址为32H,数据输出
10、端口地址为34H,状态端口地址为36H。状态寄存器的D1=1,表示输入缓冲器已准备好数据,CPU可读取数据;状态寄存器的D0=1,表示输出缓冲器已空,CPU可往终端输出数据。终端接口电路具有根据相应操作对状态寄存器自动置1和清0功能。具体程序如下:,DATA SEGMENTMESS DB BUFFER OVERFLOW,0DH,0AHBUFFER DB 82 DUP(?) DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,BUFFERMOV CX,81INPUT: IN AL,36H ;读
11、状态端口TEST AL,02H ;测输入状态D1位JZ INPUT ;未“准备好”转INPUT,IN AL,32H ;读取输入字符MOV SI,AL ;输入字符存缓冲区INC SICMP AL,0DH ;输入字符为回车否?LOOPNE INPUT ;不是回车且接收字符个数未超过81,转INPUTJNE OVERFLOW ;不是回车且接收字符个数超过81,转OVERFLOWMOV AL,0AH ;是回车且接收字符个数81,存换行符MOV SI,ALJMP EXIT ;转程序结束处理 OVERFLOW:MOV CX,17 ;初始化输出字符个数LEA SI,MESS ;初始化显示字符串首址OUTPU
12、T:IN AL,36H ;读状态端口TEST AL,01H ;测输出状态D0位JZ OUPUT ;输出缓冲器未空,转OUTPUT,MOV AL,SI ;取出输出字符INC SIOUT 34H,AL ;输出字符LOOP OUTPUT EXIT: MOV AH,4CH ;返回DOSINT 21H CODE ENDSEND START,7.3.2 中断方式,程序控制传输方式的缺点是CPU和外设只能串行工作,各外设之间也只能串行工作。在中断传输方式下,当输入设备将数据准备好或输出设备可以接收数据时,便向CPU发出中断请求,使CPU暂时停止执行当前程序,而去执行数据输入输出的中断服务程序,与外设进行数据
13、传输操作,中断服务程序执行完后,CPU又返回继续执行原来的程序。利用中断方式进行数据传输,CPU不必花费大量时间在两次输入或输出过程间对接口进行状态测试和等待,从而大大提高了CPU的效率。,7.3.3 直接存储器存取(DMA)方式,DMA方式是指不经过CPU的干预,直接在外设和内存之间进行数据传输的方式。1次DMA传输需要执行1个DMA周期(相当于1个总线读或写周期)。实现DMA方式,需要专门的接口器件来控制外设接口和内存之间的数据传输,它被称为DMA控制器(DMAC)。,采用DMA方式进行数据传输时,使用系统的数据总线、地址总线和控制总线。在用DMA方式进行数据传输前,DMAC向CPU发出申
14、请使用系统总线的请求。当CPU同意并让出系统总线控制权后,DMAC接管系统总线,实现外设与内存之间的数据传输。传输完毕,将总线控制权交还给CPU。,DMA操作的基本方法有三种:,(1) CPU停机方式。指在DMA传送时,CPU停止工作,不再使用总线。该方式比较容易实现,但由于CPU停机,可能影响到某些实时性很强的操作,如中断响应等。 (2) 周期挪用方式。利用窃取CPU不进行总线操作的周期,来进行DMA传送。这一方式不影响CPU的操作,但需要复杂的时序电路,而且数据传送过程是不连续的和不规则的。 (3) 周期扩展方式。该方式需要专门时钟电路的支持,当传送发生时,该时钟电路向CPU发送加宽的时钟
15、信号,CPU在加宽时钟周期内操作不往下进行;另一方面,仍向DMAC发送正常的时钟信号,DMAC利用这段时间进DMA传送。,*7.4 DMA控制器,直接存储器存取(DMA)是一种外设与存储器之间直接传输数据的方法,适用于需要数据高速大量传送的场合。DMA数据传送利用DMA控制器进行控制,不需要CPU直接参与。Intel 8237A是一种高性能的可编程DMA控制器芯片。在5MHz时钟频率下,其传送速率可达1.6MB/s。每片8237A有4个独立的DMA通道,即有4个DMA控制器(DMAC)。每个DMA通道具有不同的优先权,都可以允许和禁止。每个通道有4种工作方式,一次传送的最大长度可达64KB。多
16、片8237A可以级连,任意扩展通道数。,7.4.1 8237A的内部结构和引脚,8237A要在DMA传送期间作为系统的控制器件,所以,它的内部结构和外部引脚都相对比较复杂。从应用角度看,内部结构主要由两类寄存器组成。一类是通道寄存器,它们是现行地址寄存器、现行字节数寄存器和基地址寄存器、基字节数寄存器,这些寄存器都是16位的寄存器。另一类是控制和状态寄存器,它们是方式寄存器(6位寄存器)、命令寄存器(8位)、状态寄存器(8位)、屏蔽寄存器(4位)、请求寄存器(4位)、临时寄存器(8位)。,需要说明的引脚:,DMA通道请求(DREQ0DREQ3):每个通道对应一个DREQ信号,用以接受外设的DM
17、A请求。 DMA通道响应(DACK0DACK3):每个通道对应一个DACK信号,是8237A对外设DMA请求的响应信号。总线请求(HRQ):当外设的I/O接口要求DMA传输时,向8237A发送DMA请求DREQ,若允许该通道产生DMA请求,则8237A输出有效的HRQ高电平,向CPU申请使用系统总线。总线响应(HLDA):当8237A向CPU发出总线请求信号后,至少再过一个时钟周期,CPU才发出总线响应信号HLDA,这样,8237A可获得总线的控制权。低4位地址线(A0A3):双向地址线。当8237A为从器件时,A0A3作为输入信号,CPU可通过它们对8237A的内部寄存器进行寻址,从而实现对
18、8237A的编程;当8237A为主器件时,A0A3作为输出信号,输出低4位地址。,数据线(DB0DB7):双向三态数据线。当8237A为从器件时,用于CPU与8237A进行数据交换;当8237A为主器件时,用于输出现行地址寄存器的高8位地址。地址选通(ADSTB):此信号有效时,把8237A现行地址寄存器中的高8位地址锁存到DMA外部地址锁存器。地址允许(AEN):此信号有效时,将8237A的外部地址锁存器中的高8位地址送到地址总线A15A8上,与芯片直接输出的低8位地址组成内存单元的偏移地址。AEN在DMA传送期间也可作为使其它处理器输出的地址无效的控制信号。,存储器读( ):三态输出信号,
19、低电平有效。有效时,所选中的存储单元的内容被读出并送到数据总线上。存储器写( ):三态输出信号,低电平有效。有效时,数据总线上的内容被写入选中的存储单元。输入输出读( ):双向三态,低电平有效。当8237A为从器件时,作为8237A的输入信号,此信号有效时,CPU读取8237A内部寄存器的值;当8237A为主器件时,作为8237A的输出信号,此信号有效时,请求DMA的I/O接口部件中的数据被读出并送往数据总线。输入输出写( ):双向三态,低电平有效。当8237A为从器件时,作为8237A的输入信号,此信号有效时,CPU往8237A内部寄存器写入信息;当8237A为主器件时,作为8237A的输出
20、信号,此信号有效时,从指定存储单元中读出的数据被写入I/O接口中。,过程结束( ):低电平有效,双向信号,在DMA传送时,当当前字节数寄存器的计数值从0减到FFFFH时(即内部DMA过程结束),从 引脚上输出一个负脉冲。若由外部输入 信号,DMA传送过程被强迫终止。不论是内部还是外部产生 信号,都会终止DMA数据传送。准备好(READY):高电平有效,输入信号。在DMA传送的第3个时钟周期S3的下降沿检测READY信号,若READY信号为低,则插入等待状态SW,直到READY信号为高才进入第4个时钟周期S4。,7.4.2 8237A的工作周期和时序,1空闲周期当8237A的任一通道无DMA请求
21、时就进入空闲周期,在空闲周期8237A始终处于SI状态,每个SI状态都采样通道的请求输入线DREQ。此外,8237A在SI状态还采样片选信号 ,当 为低电平,且4个通道均无DMA请求,则8237A进入编程状态,即CPU对8237A进行读写操作。8237A在复位后处于空闲周期。 2有效周期当8237A在SI状态采样到外设有DMA请求时,就脱离空闲周期进入有效周期,8237A作为系统的主器件时,控制DMA传送操作。由于DMA传送是借用系统总线完成的,所以,它的控制信号以及工作时序类似CPU总线周期。,8237A的DMA传送时序,(1) 当在SI脉冲的下降沿检测到某一通道或几个通道同时有DMA请求时
22、,则在下一个周期就进入S0状态;而且在SI脉冲的上升沿,使总线请求信号HRQ有效。在S0状态8237A等待CPU对总线请求的响应,只要未收到有效的总线请求应答信号HLDA,8237A始终处于S0状态。当在S0的上升沿采样到有效的HLDA信号,则进入DMA传送的S1状态。 (2) 典型的DMA传送由S1,S2,S3,S4四个状态组成。在S1状态使地址允许信号AEN有效。自S1状态起,一方面把要访问的存储单元的高8位地址通过数据线DB0DB7输出,另一方面发出一个有效的地址选通信号ADSTB,利用ADSTB的下降沿把在数据线上的高8位地址锁存至外部的地址锁存器中,且在整个DMA传送期间保持不变。同
23、时,地址的低8位由地址线A0A7输出。,(3) 在S2状态,8237A向外设输出DMA响应信号DACK。在通常情况下,外设的请求信号DREQ必须保持到DACK有效。即自S2状态开始使“读写控制”信号有效: 如果将数据从存储器传送到外设,则8237A输出 有效信号,从指定的存储单元读出一个数据并送到系统数据总线上,同时8237A还输出 有效信号将系统数据总线的这个数据写人请求DMA传送的外设中。 如果将数据从外设传送到存储器,则8237A输出 有效信号,从请求DMA传送的外设读取一个数据并送到系统数据总线上,同时8237A还输出 有效信号将系统数据总线的这个数据写人指定的存储单元。 由此可见,D
24、MA传送实现了外设与存储器之间的直接数据传送,传送的数据不进人8237A内部,也不进人CPU。,(4) 在8237A输出信号的控制下,利用S3和S4状态完成数据传送。若存储器和外设不能在S4状态前完成数据的传送,则只要设法使READY信号变低,就可以在S3和S4状态间插入SW等待状态。在此状态,所有控制信号维持不变,从而加宽DMA传送的周期。 (5) 在数据块传送方式下,S4后面应接着传送下一个字节。因为DMA传送的存储器区域是连续的,通常情况下地址的高8位不变,只是低8位增量或减量。所以,输出和锁存高8位地址的S1状态不需要了,直接进人S2状态,由输出低8位地址开始,在读写信号的控制下完成数
25、据传送。这种过程一直继续到把规定的数据个数传送完。此时,一个DMA传送过程结束,8237A又进入空闲周期,等待新的请求。,7.4.3 8237A的工作方式和传送类型,18237A工作方式 (1) 单字节传送方式单字节传送方式是8237A每传送一个字节之后就释放总线。传送一个字节之后,字节计数器减1,地址寄存器加1或减1,HRQ变为无效。这样,8237A释放系统总线,将控制权还给CPU。当字节计数器从0减到FFFFH,产生终止计数信号,使 变为低电平,从而结束DMA传输。单字节传送方式的优点是保证在二次DMA操作之间CPU有机会获得至少一个总线周期的总线控制权,达到CPU与DMA控制器并行工作的
26、状态。,(2) 数据块传送方式在这种方式下,8237A由DREQ启动,连续传送数据,当字节计数器从0减到FFFFH,产生终止计数信号,使 变为低电平,或者由外部输人有效的 信号,终止DMA传送。在数据块传送方式中,要求DREQ保持到DACK变为有效时即可,且一次DMA操作最多传送64KB。数据块传送方式的特点是:一次请求传送一个数据块,效率高;但在整个DMA传送期间,CPU无法控制总线。 (3) 请求传送方式与数据块传送方式类似。但当DREQ信号变为无效时,则暂停DMA传送;当DREQ再次变为有效时,DMA传送继续进行,直至字节计数器从0减到FFFFH,或由外部送来一个有效 信号。,(4) 级
27、连方式8237A可以多级级联,扩展DMA通道。第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上,第二级芯片的优先权与所连接的通道相对应。 2DMA传送类型 (1) 读传输:是指从指定的存储器单元读出数据写入到相应的I/O设备。DMA控制器发出 和 信号。 (2) 写传输:是指从I/O设备读出数据写入到指定的存储器单元。 DMA控制器发出 和 信号。 (3) DMA传送:是一种伪传送操作,用于校验8237A的内部功能。它和读传输和写传输一样产生存储器地址和时序信号,但存储器和I/O的读写控制信号无效。,(4) 存储器到存储器的传送:使用此方式8237A可实现存储器内部不同区域
28、之间的传输。这种传送类型仅适用于通道0和通道1,此时通道0的地址寄存器存源数据区地址,通道1的地址寄存器存目的数据区地址,通道1的字节数计数器存传送的字节数。传送由设置通道0的DMA请求(设置请求寄存器)启动,8237A按正常方式向CPU发出HRQ请求信号,待HLDA响应后传送就开始。每传送一个字节需用8个状态,前4个状态用于从源存储器中读取数据并存放于8237A中的数据暂存器,后4个状态用于将数据暂存器的内容写入目的存储器中。,7.4.4 8237A的寄存器,1基地址寄存器用于保存DMA传送的起始地址,不能被CPU读出。 2现行地址寄存器保存DMA传送的当前地址,每次传送后这个寄存器的值自动
29、加1或减1。这个寄存器的值可由CPU写入和读出。其初值就是基地址寄存器内容。 3基字节数寄存器用于保存每次DMA操作需要传送数据的字节总数,不能被CPU读出。 4现行字节数寄存器保存DMA还需传送的字节数,每次传送后减1。这个寄存器的值可由CPU写入和读出。当这个寄存器的值从0减到FFFFH时,产生终止计数信号,使 变为低电平。,5方式寄存器存放相应通道的方式控制字,用于设置某个DMA通道的工作方式。,若8237A被设置为允许自动预置功能,则当DMA传送结束 有效时,现行地址寄存器和现行字节数寄存器会从基地址寄存器和基字节数寄存器中重新取得初值,从而又可以进入下一个数据传输过程。,5命令寄存器
30、存放8237A的命令字,用于设置8237A的操作方式。,当D0=1时选择存储器到存储器的传送方式,此时,通道0的地址寄存器存放源地址,通道1的地址寄存器和字节计数器存放目的地址和计数值。若D1也为“1”,则整个存储器到存储器的传送过程始终保持同一个源地址,以便实现将一个目的存储区域设置为同一个值。D3:决定是压缩时序还是普通时序。8237A工作于压缩时序时,进行一次DMA传输需2个时钟周期,而工作于普通时序时,进行一次DMA传输需3个时钟周期。D4:决定4个通道的优先级方式。一种是固定优先级方式,即通道0的优先级最高,通道3的优先级最低。另一种是循环优先级方式,即某通道进行一次传输以后,其优先
31、级降为最低。,D5:决定是否扩展写信号。关于扩展写信号说明如下:如果外部设备的速度较慢,必须用普通时序工作,若普通时序仍不能满足要求,就要在硬件上通过READY信号使8237A插入SW状态。有些设备是用8237A送出的 或 信号的下降沿产生READY信号响应的,而这两个信号是在S4状态才送出的。为使READY信号早点到来,将这两个信号扩展到S3状态开始有效。 7请求寄存器除可利用硬件提出DMA请求外,还可通过软件发出DMA请求。,8屏蔽寄存器 用于控制每个通道的DMA请求是否有效。对屏蔽寄存器的写入有2种方法: (1) 单通道屏蔽字,实现对某一通道DMA屏蔽标志的设置。 (2) 综合屏蔽字,实
32、现对4个通道DMA屏蔽标志的设置。,9状态寄存器状态寄存器的各位分别表示各通道是否有DMA请求及是否终止计数。,10暂存器在存储器到存储器的传送方式下,暂存器用于保存从源存储单元读出的数据。,7.4.5 8237A的软件命令,1复位命令 复位命令也叫综合清除命令,它的功能和RESET信号相同。复位命令使命令寄存器、状态寄存器、请求寄存器、暂存器以及先后触发器清0,而使屏蔽寄存器置位。 2清除先后触发器命令 先后触发器是用来控制DMA通道中地址寄存器和字节计数器的初值设置的。由于8237A只有8位数据线,所以,一次只能传输一个字节。而地址寄存器和字节计数器都是16位的,这些寄存器都要通过2次传输
33、才能完成初值设置。为了保证能正确设置16位初值,应先发出清除先后触发器命令,写入低8位数据后,先后触发器自动置1,写入高8位数据后,先后触发器自动复位为0。 3清除屏蔽寄存器命令 使4个屏蔽位都清0,即4个通道的DMA请求都被允许。,7.4.6 8237A的应用,18237A在IBM PCXT上的应用IBM PC/XT机使用一片8237A。通道0用来对动态存储器刷新;通道2和通道3分别用于软盘和硬盘驱动器与内存之间的数据传输;通道1用作同步数据链路通信(SDLC)卡与存储器之间的数据传输,若系统不使用该通信卡,则可供用户使用。根据系统板I/O译码电路所产生的DMA片选信号,DMAC的端口地址范
34、围是00H1FH,DMAC的A3A0脚同系统地址线A3A0相连,A4未参加译码,取A40时的地址000FH为DMAC的端口地址。8237A只提供16位地址,系统的高4位地址由附加逻辑电路(页面寄存器)提供,以形成整个微机系统需要的所有存储器地址。系统分配给页面寄存器的端口地址为80H83H。,【例题7.3】在PC/XT机中,利用8237A通道0输出存储器地址进行DRAM的刷新操作,其DMA传送程序如下: ;,MOV AL,0 OUT 0DH,AL ;复位命令 MOV AL,0 ;命令字:固定优先权,DREQ高有效、DACK低有效、 OUT 08H,AL ;滞后写、正常时序 MOV AL,0 O
35、UT 00H,AL ;写入通道0的地址寄存器低字节 OUT 00H,AL ;写入通道0的地址寄存器高字节 MOV AL,0FFH OUT 01H,AL ;写入通道0的字节数寄存器低字节 OUT 01H,AL ;写入通道0的字节数寄存器高字节 MOV AL,58H ;通道0方式字:单字节传送、DMA读、地址增量、自动初始化 OUT 0BH,AL MOV AL,0 ;通道0屏蔽字:允许DREQ0提出申请 OUT 0AH,AL,2DMA写传输,【例题7.4】假设采用PC/XT机中DMA通道1,传送2KB外设数据,内存起始地址为45000H。其程序如下:,MOV AL,45H ;通道1方式字:单字节D
36、MA写传送,地址增量,非自动初始化OUT OBH,ALOUT 0CH,AL ;清先后触发器MOV AL,0OUT 02H,AL ;写入低8位地址到地址寄存器MOV AL,50HOUT 02H,AL ;写入中8位地址到地址寄存器MOV AL,04HOUT 81H,AL ;写入高4位地址到页面寄存器MOV AX,2047 ;AX传送字节数减1OUT 03H,AL ;送字节数低8位到字节数寄存器MOV AL,AHOUT 03H,AL ;送字节数高8位到字节数寄存器MOV AL,01HOUT 0AH,AL ;单通道屏蔽字:允许通道l的DMA请求 ;其他工作 DMALP:IN AL,08H ;读状态寄存器AND AL,02H ;判断通道1是否传送结束JZ DMALP ;没有结束,则循环等待 ;传送结束,处理转换数据,