微机技术第10章DMA控制接口.ppt
第第 10 10 章章第第1010章章 DMA DMA控制接口控制接口教学重点n 8237A的工作方式的工作方式n 8237A寄存器组的作用寄存器组的作用n 8237A寄存器组的编程寄存器组的编程注意复习第注意复习第6.56.5节节10.1 DMA控制器8237An每每个个8237A芯芯片片有有4个个DMA通通道道,就就是是有有4个个DMA控制器控制器n每个每个DMA通道具有不同的优先权通道具有不同的优先权n每个每个DMA通道可以分别允许和禁止通道可以分别允许和禁止n每个每个DMA通道有通道有4种工作方式种工作方式n一次传送的最大长度可达一次传送的最大长度可达64KBn多个多个8237A芯片可以级连,扩展通道数芯片可以级连,扩展通道数10.1.1 8237A的内部结构和引脚n内部结构和外部引脚都相对比较复杂内部结构和外部引脚都相对比较复杂n应用观点,内部主要由两类寄存器组成应用观点,内部主要由两类寄存器组成n通道寄存器通道寄存器n控制和状态寄存器控制和状态寄存器首先分类展开外部引脚首先分类展开外部引脚1.请求与响应信号nDREQ0DREQ3:DMA通通道道请请求求。当当外外设设需需要要请请求求DMA服服务务时时,将将DREQ信信号号置置成成有有效效电电平,并要保持到产生响应信号。平,并要保持到产生响应信号。nHRQ:总总线线请请求求。8237A输输出出有有效效的的HRQ高高电平,向电平,向CPU申请使用系统总线。申请使用系统总线。nHLDA:总总线线响响应应。8237A接接受受来来自自CPU的的响响应信号应信号HLDA,取得了总线的控制权。,取得了总线的控制权。nDACK0DACK3:DMA通通道道响响应应。8237A使请求服务的通道产生相应的使请求服务的通道产生相应的DMA响应信号。响应信号。2.DMA传送控制信号nA0A7:地址线。输出低:地址线。输出低8位存储器地址。位存储器地址。nDB0DB7:数数据据线线。输输出出高高8位位存存储储器器地地址址;存贮器与存贮器的传送期间,用于数据传送。存贮器与存贮器的传送期间,用于数据传送。nADSTB:地地址址选选通通。DMA传传送送开开始始时时,输输出出高高有有效效,把把在在DB0DB7上上输输出出的的高高8位位地地址址锁锁存存在外部锁存器中。在外部锁存器中。nAEN:地地址址允允许许。输输出出高高有有效效,将将锁锁存存的的高高8位位地地址址送送入入系系统统总总线线,与与芯芯片片此此时时输输出出的的低低8位位地地址组成址组成16位存储器地址。位存储器地址。2.DMA传送控制信号(续)nMEMR*:存储器读。有效将数据从存储器读出:存储器读。有效将数据从存储器读出nMEMW*:存储器写。有效将数据写入存储器存储器写。有效将数据写入存储器nIOR*:I/O读。有效将数据从外设读出读。有效将数据从外设读出nIOW*:I/O写写。有效将数据写入外设有效将数据写入外设nREADY:准准备备好好。DMA传传送送的的S3下下降降沿沿检检测测到到为为低低时时,插插入入等等待待状状态态Sw,直直到到READY为为高才进入第高才进入第4个时钟周期个时钟周期S4。nEOP*:过过程程结结束束。DMA传传送送过过程程结结束束,输输出出一一个个低低有有效效脉脉冲冲。外外部部输输入入低低脉脉冲冲信信号号,则则终终结结DMA传送。传送。3.处理器接口信号nDB0DB7:数数据据线线。用用于于8237A与与微微处处理理器进行数据交换。器进行数据交换。nA0A3:地址线。用以选择芯片内部寄存器。:地址线。用以选择芯片内部寄存器。nCS*:片片选选。低低有有效效时时,微微处处理理器器与与8237A通通过数据线通信,主要完成对过数据线通信,主要完成对8237A的编程。的编程。nIOR*:I/O读。读取读。读取8237A内部寄存器。内部寄存器。nIOW*:I/O写。写入写。写入8237A内部寄存器。内部寄存器。nCLK:时钟。控制芯片内部操作和数据传输。时钟。控制芯片内部操作和数据传输。nRESET:复位。使复位。使8237A处于初始状态。处于初始状态。8237A的两种工作状态n8237A具有两种工作状态具有两种工作状态n空闲周期空闲周期:作为接口电路,受作为接口电路,受CPU控制的工作状态控制的工作状态n有效周期有效周期:作为作为DMAC控制控制DMA传送的工作状态传送的工作状态于是,引脚分成两种作用于是,引脚分成两种作用8237A引脚的两种作用与与CPU连接连接(空闲周期)的引脚(空闲周期)的引脚与外设连接与外设连接(有效周期)的引脚(有效周期)的引脚CLK、RESETA0A3、CS*、DB0DB7IOR*、IOW*HRQ、HLDAAEN、ADSTB、READY、EOP*A0A7、DB0DB7IOR*、IOW*、MEMR*、MEMW*DREQ0DREQ3、DACK0DACK310.1.2 8237A的工作时序空闲周期n8237A的任一通道都没有的任一通道都没有DMA请求时请求时n8237A由微处理器控制作为一个接口芯片由微处理器控制作为一个接口芯片nCPU可可对对8237A编程,或从编程,或从8237A读取状态读取状态n8237A采采样样CS*选选片片信信号号,该该信信号号有有效效,CPU就就要对要对8237A进行读进行读/写操作写操作n8237A还还采采样样通通道道的的请请求求输输入入信信号号DREQ,该信号有效,就进入有效周期该信号有效,就进入有效周期进入有效周期进入有效周期10.1.2 8237A的工作时序有效周期n8237A采采样样到到外外设设有有DMA请请求求,就就脱脱离空闲周期进入有效周期离空闲周期进入有效周期n8237A作作为为系系统统的的主主控控芯芯片片,控控制制DMA传送操作传送操作nDMA传传送送借借用用系系统统总总线线完完成成,其其控控制制信信号以及工作时序类似号以及工作时序类似CPU总线周期总线周期进入进入DMADMA传送时序传送时序DMA传送时序DB0DB7DACKADSTBHRQDREQCLKS1S0S0SiSiS3S2S4S3S2SiSiS4HLDAAENA0A7 MEMR(IOR)IOW(MEMW)S1状态状态输出输出16位存储器地址位存储器地址AEN输出高电平,表示输出高电平,表示DMA传送传送S2状态状态输出输出DMA响应信号和控制信号响应信号和控制信号DMA读:读:MEMR*和和IOW*有效有效DMA写:写:IOR*和和MEMW*有效有效S3和和Sw状态状态检测数据传送是否能够完成,检测数据传送是否能够完成,决定是否插入等待状态决定是否插入等待状态SwS4状态状态完成数据传送完成数据传送10.1.3 8237A的工作方式nDMA传送方式传送方式 单字节传送方式单字节传送方式 数据块传送方式数据块传送方式 请求传送方式请求传送方式 级连方式级连方式nDMA传送类型传送类型 DMA读读 DMA写写 DMA检验检验n存储器到存储器的传送存储器到存储器的传送1.DMA传送单字节方式n每次每次DMA传送时仅传送一个字节传送时仅传送一个字节n传传送送一一个个字字节节之之后后,字字节节数数寄寄存存器器减减1,地地址址寄存器加寄存器加1或减或减1,HRQ变为无效变为无效n8237A释放系统总线,将控制权还给释放系统总线,将控制权还给CPUn若若传传送送后后使使字字节节数数从从0减减到到FFFFH,则则终终结结DMA传送或重新初始化传送或重新初始化n特点:特点:n一次传送一个字节,效率略低一次传送一个字节,效率略低nDMA传送之间传送之间CPU有机会重新获取总线控制权有机会重新获取总线控制权1.DMA传送数据块方式n由由DREQ启启动动就就连连续续地地传传送送数数据据,直直到到字字节节数数寄寄存存器器从从0减减到到FFFFH终终止止计计数数,或由外部输入有效信号终结或由外部输入有效信号终结DMA传送传送nDREQ只需维持有效到只需维持有效到DACK有效有效n特点:特点:n一次请求传送一个数据块,效率高一次请求传送一个数据块,效率高n整整个个DMA传传送送期期间间CPU长长时时间间无无法法控控制制总总线线(无无法法响响应应其其他他DMA请请求求、无无法法处处理理中中断等)断等)1.DMA传送请求方式nDREQ信号有效就连续传送数据信号有效就连续传送数据nDREQ信信号号无无效效,DMA传传送送被被暂暂时时中中止止,8237A释放总线,释放总线,CPU可继续操作可继续操作nDMA通道的地址和字节数的中间值仍被保持通道的地址和字节数的中间值仍被保持nDREQ信号再次有效,信号再次有效,DMA传送就继续进行传送就继续进行n如如果果字字节节数数寄寄存存器器从从0减减到到FFFFH,或或者者由由外外部送来一个有效的信号,将终止计数部送来一个有效的信号,将终止计数n特点:特点:nDMA操作可由外设利用操作可由外设利用DREQ信号控制传送的过程信号控制传送的过程1.DMA传送级连方式n用于通过多个用于通过多个8237A级连以扩展通道级连以扩展通道n第第二二级级的的HRQ和和HLDA信信号号连连到到第第一一级级某个通道的某个通道的DREQ和和DACK上上n第第二二级级芯芯片片的的优优先先权权等等级级与与所所连连通通道道的的优先权相对应优先权相对应n第第一一级级只只起起优优先先权权网网络络的的作作用用,实实际际的的操作由第二级芯片完成操作由第二级芯片完成n还可由第二级扩展到第三级等还可由第二级扩展到第三级等2.DMA传送类型nDMA读读把数据由存储器传送到外设把数据由存储器传送到外设n由由MEMR*有有效效从从存存储储器器读读出出数数据据,由由IOW*有有效效把这一数据写入外设把这一数据写入外设nDMA写写把外设输入的数据写入存储器把外设输入的数据写入存储器n由由IOR*有有效效从从外外设设输输入入数数据据,由由MEMW*有有效效把把这一数据写入存储器。这一数据写入存储器。nDMA检验检验空操作空操作n8237A不进行任何检验不进行任何检验n外设可以进行外设可以进行DMA校验校验n存储器和存储器和I/O控制线保持无效,不进行传送控制线保持无效,不进行传送3.存储器到存储器的传送n固定使用通道固定使用通道0和通道和通道1n通道通道0的地址寄存器存源区地址的地址寄存器存源区地址n通通道道1的的地地址址寄寄存存器器存存目目的的区区地地址址,通通道道1的的字字节数寄存器存传送的字节数节数寄存器存传送的字节数n传送由设置通道传送由设置通道0的软件请求启动的软件请求启动n每传送一字节需用每传送一字节需用8个时钟周期个时钟周期n前前4个个时时钟钟周周期期用用通通道道0地地址址寄寄存存器器的的地地址址从从源源区区读读数据送入数据送入8237A的临时寄存器的临时寄存器n后后4个个时时钟钟周周期期用用通通道道1地地址址寄寄存存器器的的地地址址把把临临时时寄寄存器中的数据写入目的区存器中的数据写入目的区4.DMA通道的优先权方式n固定优先权方式固定优先权方式优先权固定优先权固定n通通道道0优优先先权权最最高高,通通道道1其其次次,通通道道2再再次次,通道通道3最低最低n循环优先权方式循环优先权方式优先权循环变化优先权循环变化n最最近近一一次次服服务务的的通通道道在在下下次次循循环环中中变变成成最最低低优先权,其他通道依次轮流相应的优先权优先权,其他通道依次轮流相应的优先权DMADMA传送不存在嵌套传送不存在嵌套5.自动初始化方式n每每当当DMA过过程程结结束束信信号号EOP*产产生生时时(不不论论是是内内部部终终止止计计数数还还是是外外部部输输入入该该信号)信号)n用用基基地地址址寄寄存存器器和和基基字字节节数数寄寄存存器器的的内内容容,使使相相应应的的现现行行寄寄存存器器恢恢复复为为初初始始值值,包括恢复屏蔽位、允许包括恢复屏蔽位、允许DMA请求请求n这样就作好了下一次这样就作好了下一次DMA传送的准备传送的准备10.1.4 8237A的寄存器n8237A共共有有10种种内内部部寄寄存存器器,对对它它们们的的操作有时需要配合操作有时需要配合3个软件命令个软件命令n8237A的的“软件命令软件命令”n不需要通过数据总线写入控制字不需要通过数据总线写入控制字n直接由地址和控制信号译码实现直接由地址和控制信号译码实现全部都用地址全部都用地址A A0 0A A3 3区分区分1.现行地址寄存器n保持保持DMA传送的当前地址值传送的当前地址值n每次传送后该寄存器的值自动加每次传送后该寄存器的值自动加1或减或减1n这个寄存器的值可由这个寄存器的值可由CPU写入和读出写入和读出基地址寄存器基地址寄存器存放存放初始值初始值2.现行字节数寄存器n保持保持DMA传送的剩余字节数传送的剩余字节数n每次传送后,该寄存器的值减每次传送后,该寄存器的值减1n这个寄存器的值可由这个寄存器的值可由CPU写入和读出写入和读出n该该寄寄存存器器的的值值减减至至0,再再减减1(从从0减减到到FFFFH)时,终止计数)时,终止计数基字节数寄存器基字节数寄存器存放存放初始值初始值传送传送N N个字节,个字节,初始值初始值为为N N1 1读写通道寄存器nCPU与与8237A之之间间通通过过8位位数数据据总总线线交交换信息,换信息,8237A的通道寄存器均为的通道寄存器均为16位位n需需 要要 两两 次次 读读 写写 操操 作作 才才 能能 实实 现现 CPU与与8237A之间的一个完整数据的交换之间的一个完整数据的交换n8237A内内含含一一个个高高/低低触触发发器器,用用来来控控制制读写通道寄存器的高、低字节读写通道寄存器的高、低字节高/低触发器n该触发器为该触发器为0,控制读写低字节,控制读写低字节n该触发器为该触发器为1,控制读写高字节,控制读写高字节n软、硬件复位后,触发器为软、硬件复位后,触发器为0n每每次次读读写写通通道道寄寄存存器器,自自动动改改变变触触发发器器状状态态。如如果果对对16位位寄寄存存器器的的操操作作用用两两次次连续读写进行,就不必清除这个触发器连续读写进行,就不必清除这个触发器n清清除除高高/低低触触发发器器软软件件命命令令(A3A2A1A01100)将使高)将使高/低触发器清零低触发器清零3个软件命令n清除高清除高/低触发器软件命令低触发器软件命令nA3A2A1A01100,使高,使高/低触发器清零低触发器清零n主清除命令主清除命令nA3A2A1A01101,使高使高/低触发器清零低触发器清零n还使命令、状态、请求、临时寄存器清零还使命令、状态、请求、临时寄存器清零n使屏蔽寄存器置为全使屏蔽寄存器置为全1(禁止(禁止DMA请求)请求)n主清除命令与硬件的主清除命令与硬件的RESET信号具有相同的功能信号具有相同的功能n清屏蔽寄存器命令清屏蔽寄存器命令nA3A2A1A01110,使使4个个屏屏蔽蔽位位都都清清零零(允允许许DMA请求)请求)5.模式寄存器n存放相应通道的方式控制字存放相应通道的方式控制字n选择某个选择某个DMA通道的工作方式通道的工作方式n其中用最低其中用最低2位选择哪个位选择哪个DMA通道通道请看请看方式字方式字的格式的格式方式字格式D7 D6D5D4D3 D2D1 D000 请求模式请求模式01 单字节模式单字节模式10 数据块模式数据块模式11 级联模式级联模式0 地地址址增增量量(加加1)1 地地址址减减量量(减减1)0 禁止自动初始化禁止自动初始化1 允许自动初始化允许自动初始化00DMA校验校验01DMA写写10DMA读读11非法非法若若D7D61100 通道通道001 通道通道110 通道通道211 通道通道36.命令寄存器n存放存放8237A的命令字的命令字n设置设置8237A芯片的操作方式芯片的操作方式n影响每个影响每个DMA通道通道n复位时使命令寄存器清零复位时使命令寄存器清零n设置设置D21才使才使8237A可以作为可以作为DMA控制器控制器请看请看命令字命令字的格式的格式命令字格式D7D6D5D4D3D2D1D00 DACK低有效低有效1 DACK高有效高有效0 DREQ高有效高有效1 DREQ低有效低有效0 滞后写滞后写1 扩展写扩展写 若若D310 固定优先权固定优先权1 循环优先权循环优先权0 正常时序正常时序1 压缩时序压缩时序 若若D010 允许允许DMAC工作工作1 禁止禁止DMAC工作工作0 允许通道允许通道0地址改变地址改变1 禁止通道禁止通道0地址改变地址改变 若若D000 禁止存储器之间传送禁止存储器之间传送1 允许存储器之间传送允许存储器之间传送7.请求寄存器n存放软件存放软件DMA请求状态请求状态n除除硬硬件件DMA请请求求外外,当当工工作作在在数数据据块块传传送方式时也可以通过软件发出送方式时也可以通过软件发出DMA请求请求n若若是是存存贮贮器器到到存存贮贮器器传传送送,则则必必须须由由软软件请求启动通道件请求启动通道0请看请看请求字请求字的格式的格式请求字格式D7 D6 D5 D4 D3D2D1 D0任意任意0 复位复位1 置位置位00 通道通道001 通道通道110 通道通道211 通道通道38.屏蔽寄存器n控控制制外外设设硬硬件件DMA请请求求是是否否被被响响应应(为为0允允许许),各个通道互相独立。,各个通道互相独立。3种方法:种方法:n单通道屏蔽字只对一个单通道屏蔽字只对一个DMA通道屏蔽位进行设置通道屏蔽位进行设置n主屏蔽字对主屏蔽字对4个个DMA通道屏蔽位同时进行设置通道屏蔽位同时进行设置n清屏蔽寄存器命令使清屏蔽寄存器命令使4个屏蔽位都清零(允许)个屏蔽位都清零(允许)n复位使复位使4个通道全置于屏蔽状态个通道全置于屏蔽状态n当当一一个个通通道道的的DMA过过程程结结束束,如如果果不不是是工工作作在在自自动动初初始始化化方方式式,则则这这一一通通道道的的屏屏蔽蔽位位置置位位,必须再次编程为允许,才能进行下次必须再次编程为允许,才能进行下次DMA传送传送请看请看屏蔽字屏蔽字的格式的格式单通道屏蔽字格式D7 D6 D5 D4 D3D2D1 D0任意任意0 清屏蔽位清屏蔽位1 置屏蔽位置屏蔽位00 通道通道001 通道通道110 通道通道211 通道通道3主屏蔽字格式D7 D6 D5 D4D3D2D1D0任意任意Di0 清通道清通道I屏蔽位屏蔽位Di1 置通道置通道I屏蔽位屏蔽位9.状态寄存器n可由可由CPU读取读取n低低4位位反反映映读读命命令令这这个个瞬瞬间间每每个个通通道道是是否否产生产生TC(为(为1,表示该通道传送结束),表示该通道传送结束)n高高4位位反反映映每每个个通通道道的的DMA请请求求情情况况(为(为1,表示该通道有请求),表示该通道有请求)n状态位在复位或被读出后,均被清零状态位在复位或被读出后,均被清零10.临时寄存器n在在存存储储器器到到存存储储器器的的传传送送方方式式下下,临临时时寄寄存存器器保保存存从从源源存存储储单单元元读读出出的的数数据据,该数据又被写入到目的存储单元该数据又被写入到目的存储单元n传传送送完完成成,临临时时寄寄存存器器只只会会保保留留最最后后一一个字节,可由个字节,可由CPU读出读出n复位使临时寄存器内容为零复位使临时寄存器内容为零10.1.5 8237A的编程n8327A芯芯片片的的初初始始化化编编程程:只只要要写写入入命命令寄存器令寄存器n可先输出主清除命令,进行软件复位可先输出主清除命令,进行软件复位n然后写入命令字然后写入命令字n命令字影响所有命令字影响所有4个通道的操作个通道的操作10.1.5 8237A的编程(续1)nDMA通道的通道的DMA传送编程:传送编程:n将将存存储储器器起起始始地地址址写写入入地地址址寄寄存存器器(如如果果采采用用地地址减量工作,则是结尾地址)址减量工作,则是结尾地址)n将将本本次次DMA传传送送的的数数据据个个数数写写入入字字节节数数寄寄存存器器(个数要减(个数要减1)n确定通道的工作方式,写入方式寄存器确定通道的工作方式,写入方式寄存器n写入屏蔽寄存器复位通道屏蔽位,允许写入屏蔽寄存器复位通道屏蔽位,允许DMA请求请求请看实例请看实例DMA通道0的刷新编程out 0dh,al;DMAC主清除命令主清除命令mov al,0out 08,al;DMAC命令字命令字mov al,0out 00,al;通道通道0的地址寄存器低字节的地址寄存器低字节out 00,al;通道通道0的地址寄存器高字节的地址寄存器高字节mov al,0ffhout 01,al;通道通道0的字节数寄存器低字节的字节数寄存器低字节out 01,al;通道通道0的字节数寄存器高字节的字节数寄存器高字节mov al,58h out 0bh,al;通道通道0模式字模式字mov al,0out 0ah,al;通道通道0屏蔽字屏蔽字IBM PC/XT10.1.5 8237A的编程(续2)n两两种种方方法法反反映映DMA过过程程结结束束(即即终终止止计计数、发生数、发生TC):):n状态寄存器的低状态寄存器的低4位位n信号(需配合信号(需配合DACK响应信号确定通道)响应信号确定通道)n应用程序处理应用程序处理DMA传送过程结束:传送过程结束:n采用软件查询状态字采用软件查询状态字n采用硬件中断在中断服务程序处理采用硬件中断在中断服务程序处理10.2 8237A的应用n8237A在在PC系列机的使用情况系列机的使用情况nDMA写传送写传送nDMA设定子程序设定子程序10.2.1 8237A在IBM PC系列机上的应用nIBM PC/XT机使用一片机使用一片8237An通道通道0:动态存贮器动态存贮器DRAM刷新刷新n通道通道1:用户使用或用户使用或SDLC卡卡n通道通道2:内存与软盘的高速数据交换内存与软盘的高速数据交换n通道通道3:内存与硬盘的高速数据交换内存与硬盘的高速数据交换nIBM PC/AT机机采用两片采用两片8237AnDMAC1包含通道包含通道03,支持支持8位数据传送位数据传送nDMAC2组组成成通通道道47,通通道道57支支持持16位数据传送,通道位数据传送,通道4用于级连用于级连1.8237A的初始化n8237A初始化写入命令字为初始化写入命令字为0,确定了:,确定了:nDREQ高高电电平平有有效效、DACK低低电电平平有有效效,固固定定优优先先权(依次为通道权(依次为通道0、17)n不进行存储器到存储器的数据传输不进行存储器到存储器的数据传输nPC机机用用DMA控控制制电电路路进进行行刷刷新新,所所以以DMA传传送送不不能能长长时时间间占占用用总总线线(不不应应超超过过15 s),一一般般只只能能使用单字节传送方式使用单字节传送方式n在在PC系系列列机机上上,用用户户如如果果使使用用DMA通通道道,要要注注意意遵遵从从上上述述系系统统要要求求。除除了了要要禁禁止止8237A工工作,用户通常不必操作命令寄存器作,用户通常不必操作命令寄存器2.高位地址的形成nDMA传传送送时时的的高高位位地地址址由由“页页面面寄寄存存器器”提提供供n页面寄存器由页面寄存器由CPU的输出指令实现写入的输出指令实现写入nDMAC1的的通通道道0通通道道3:8237A提提供供系系统统A0A15低低16位位地地址址,页页面面寄寄存存器器输输出出系系统统A16A23高高8位地址位地址nDMAC2的的通通道道5通通道道7:8237A提提供供系系统统A1A16的的16位位地地址址,而而系系统统A0被被强强迫迫为为逻逻辑辑0,页面寄存器仅输出高,页面寄存器仅输出高7位地址位地址A17A23页面寄存器不会自动增减量页面寄存器不会自动增减量高位地址在高位地址在DMADMA传送过程中不改变传送过程中不改变10.2.2 DMA写传送CLKDCLK D0D7Q +5V外设数据外设数据外设外设DMA请求请求74LS37474LS74RESETDRQ1 DACK1IOROERS通道1工作方式mov al,45h;通道通道1方式字:方式字:;单字节写传送,地址增量,非自动初始化单字节写传送,地址增量,非自动初始化out 0bh,alnop;延时延时nopout 0ch,al;清高清高/低触发器命令低触发器命令DMA写传送通道1起始地址mov al,0out 02h,al;写入低写入低8位地址到地址寄存器位地址到地址寄存器mov al,50hout 02h,al;写入中写入中8位地址到地址寄存器位地址到地址寄存器mov al,04hout 83h,al;写入高写入高8位地址到页面寄存器位地址到页面寄存器DMA写传送通道1传送字节数mov ax,2048-1;AX传送字节数减传送字节数减1out 03h,al;送字节数低送字节数低8位到字节数寄存器位到字节数寄存器mov al,ahout 03h,al;送字节数高送字节数高8位到字节数寄存器位到字节数寄存器mov al,01out 0ah,al;单通道屏蔽字:允许通道单通道屏蔽字:允许通道1的的DMA请求请求;其他工作其他工作DMA写传送通道1传送结束判断dmalp:in al,08h;读状态寄存器读状态寄存器and al,02h;判断通道判断通道1是否传送结束是否传送结束jz dmalp;没有结束,则循环等待没有结束,则循环等待;传送结束,处理转换数据传送结束,处理转换数据DMA写传送DMADMA传送过程结束的判断:传送过程结束的判断:软件查询方式软件查询方式10.2.3 DMA设定子程序n系系统统ROM-BIOS的的DMA设设定定子子程程序序:DMA通道通道2传送编程传送编程n软盘的读写利用软盘的读写利用DMA通道通道2传送数据传送数据n被被读读软软盘盘、写写软软盘盘和和软软盘盘检检验验等等软软盘盘I/O功能程序调用功能程序调用通道2工作方式push cx;保存保存CXcli;关中断关中断out 0ch,al;清高清高/低触发器命令低触发器命令push ax;延时延时pop axout 0bh,al;将将AL中的方式字写入通道中的方式字写入通道2DMA设定子程序形成物理地址mov ax,esmov cl,4rol ax,cl;段地址左移段地址左移4位位mov ch,al;高位存入高位存入CHand al,0f0hadd ax,bx;加段内偏移地址加段内偏移地址jnc j33inc ch;物理地址形成物理地址形成j33:push ax;保存保存AXDMA设定子程序通道2起始地址out 04h,al;写入地址寄存器写入地址寄存器mov al,ahout 04h,almov al,chand al,0fhout 81h,al;写入页面寄存器写入页面寄存器DMA设定子程序计算传送字节数mov ah,dh;取扇区数,计算传送的字节数取扇区数,计算传送的字节数sub al,al;AX为扇区数乘为扇区数乘256shr ax,1;AX为扇区数乘为扇区数乘128push ax;暂存暂存AXmov bx,6call GET-PARM;调用参数子程序调用参数子程序mov cl,ah;出口参数:出口参数:AH0/1/2/3pop ax;恢复恢复AXshl ax,cl;AX为为DMA传送的字节数传送的字节数 DMA设定子程序通道2传送字节数dec ax;字节数减字节数减1push ax;保存保存out 05h,al;写入字节数寄存器写入字节数寄存器mov al,ahout 05h,alsti;开中断开中断DMA设定子程序设置出口参数pop cx;弹出传送的字节数弹出传送的字节数pop ax;弹出物理地址的低弹出物理地址的低16位地址位地址add ax,cx;相加,根据结果相加,根据结果建立标志建立标志CFpop cx;恢复恢复CXmov al,02h;允许通道允许通道2进行进行DMA响应响应out 0ah,alret;返回返回DMA设定子程序DMADMA传送过程结束的判断:传送过程结束的判断:硬件中断方式硬件中断方式第第1010章教学要求章教学要求1.了解了解8237A引脚特点和工作时序引脚特点和工作时序2.掌握掌握8237A的各种工作方式的各种工作方式3.理解理解8237A内部寄存器的作用和编程内部寄存器的作用和编程4.了了解解8237A在在IBM PC系系列列机机上上的的应应用用情况情况习题习题10(第(第 242 页)页)10.1 10.2 10.3 10.6 10.9