8237A再次请求总线使用权进行下一字节的传送。
18. 8237A单字节DMA传送与数据块DMA传送有什么不同?
答:单字节传送方式下,8237A每传送完一个字节数据就释放总线,传送下一字节时再请求总线的控制权。块传送方式下8237A必须把整个数据块传送完才释放总线。
19. 8237A什么时候作为主模块工作,什么时候作为从模块工作?在这两种工作模式
下,各控制信号处于什么状态,试作说明。 答:8237A取得总线控制权后,开始进行DMA传送过程,此时8237A作为主模块工作。8237A在被处理器编程或读取工作状态时,处于从模块工作状态。
8237A处于从模块时,若CS#=0、HLDA=0说明它正被编程或读取状态,IOR#与IOW#为输入,A0~A3为输入。8237A处于主模块时,输出地址信号A0~A15 (低8位经A0~A7输出,高8位经DB0~DB7输出)。8237A还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信号供DMA传送过程使用。
20. 说明8237A初始化编程的步骤。
答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),确定信号有效电平、优先级方式、通道工作允许等。(3)写模式字(B号地址),确定某通道传送方式、传送类型、地址寄存器变化方式等。(4)置0先/后触发器。(5)设置地址寄存器、字节数寄存器的初值。(6)清除某通道屏蔽位,允许8237A响应其DMA请求。
21. 8237A选择存储器到存储器的传送模式必须具备那些条件?
答:必须使用8237A内部的暂存器作为数据传送的缓冲器。8237A通道0的地址寄存器存放存储器的源地址、通道1的地址寄存器存放存储器的目的地地址、字节计数器存放传送的字节数,建立通道0的软件DMA请求来启动这一传输过程。
21. 利用8237A的通道2,由一个输入设备输入一个32KB的数据块至内存,内存的首
地址为34000H,采用增量、块传送方式,传送完不自动初始化,输入设备的DREQ和DACK都是高电平有效。请编写初始化程序,8237A的首地址用标号DMA表示。 答:设存储器页面寄存器内容已被置为3。8237A初始化程序如下: MOV AL, 06H ;屏蔽通道2 MOV DX, DMA+0AH ; OUT DX, AL ;
MOV AL, 80H ;写通道2命令字:DREQ、 MOV DX, DMA+08H ;DACK高电平有效,正常
DUT DX, AL ;时序、固定优先级、允许8237A工作等。 MOV AL, 86H ;写通道2模式字:块传 MOV DX,DMA+0BH ;输、写传输、地址增、 OUT DX, AL ;禁止自动预置等。 MOV DX,DMA+0CH ;置0先/后触发器 OUT DX,AL ;
MOV AL,00H ;设通道2基地址为4000H MOV DX,DMA+04H ; OUT DX,AL ; MOV AL, 40H ; OUT DX, AL ;
MOV AL, 0FFH ;设通道2基字节数为 MOV DX, DMA+05H ;7FFFH (32767D) OUT DX, AL ; MOV AL, 7FH ; OUT DX, AL ;
MOV AL,02H ;清除通道2屏蔽。 MOV DX, DMA+0AH ; OUT DX, AL ;
MOV AL, 06H ;通道2发DMA请求 MOV DX,DMA+09H ; OUT DX,AL ;

