一、实验目的:
1.掌握8237DMA控制器的工作原理。
2.了解DMA特性及8237的几种数据传输方式。
二、实验内容与要求:
1.将存储器1000H单元开始的连续10个字节的数据复制到地址0000H开始的10个单元中,实现8237的存储器到存储器传输。
2.I/O到存储器DMA传输实验。利用8237、8255和扩展存储器单元,设计一个DMA传输,将8255读并行接口数据传输到扩展存储器中。
3.存储器到I/O DMA传输实验。利用8237、8255和扩展存储器单元,设计一个DMA传输,将扩展存储器中数据传输到8255写并行接口。
三、实验步骤:
1.存储器到存储器DMA传输实验
将存储器1000H单元开始的连续10个字节的数据复制到地址0000H开始的10个单元中,实现8237的存储器到存储器传输。
(1)根据实验要求,参考流程图4.10编写实验程序(例程文件名为: A82371.ASM);实验接线如图所示,按图连接实验线路。
(2)编译、链接程序无误后,将目标代码装入系统。
(3)初始化首地址中的数据,通过E8000:2000命令来改变。
(4)运行程序,待程序运行停止。
(5)通过D8000:0000命令查看DMA传输结果,是否与首地址中写入的数据相同,可反复验证。
2.I/O到存储器DMA传输实验
在实验1基础上增加8255初始化为B口输入,A口输出。B口输入数据由拨动开关模拟。修改8237初始化方式,将B口所连接开关指示的数据传输到存储器相应的数据单元中。
拨动8255的B口所连开关组,设置好一个数据。运行程序,在“Memory”的地址栏输入“8000: 0642”,回车,查看DMA传输结果,是否与前面开关所设置数据相同,可反复验证。
注:本实验中,8255使用IOY1地址空间,B口的端口地址为0642H,所以,数据传输到扩展存储器偏移为0642H地址单元。对于8237来讲,实际偏移地址为0321H。
3.存储器到I/O DMA传输实验
在实验1基础上增加8255初始化为B口输入,A口输出。A口输出数据连接到数码二极管组显示。修改8237初始化方式,将存储器相应数据单元中的数据传输到A口,由数码二极管组显示。
编写实验程序,编译、链接程序无误后,将目标代码装入系统。在“Memory”窗口中,设置地址“8000: 0640H”中的数据。运行程序,待程序运行停止。查看发光二极管组显示数据,是否与前面写入的数据相同,可反复验证。
四、电路连接
1.存储器到存储器DMA传输实验
2.I/O到存储器DMA传输实验
存储器到I/O DMA传输实验(这两个实验电路是一样的)
五代码设计
1.关于地址
IOY0 EQU 0600H ;IOY0起始地址
MY8237_0 EQU IOY0+00H*2 ;通道0当前地址寄存器
MY8237_1 EQU IOY0+01H*2 ;通道0当前字节计数寄存器
MY8237_2 EQU IOY0+02H*2 ;通道1当前地址寄存器
MY8237_3 EQU IOY0+03H*2 ;通道1当前字节计数寄存器
MY8237_8 EQU IOY0+08H*2 ;写命令寄存器/读状态寄存器
MY8237_9 EQU IOY0+09H*2 ;请求寄存器
MY8237_B EQU IOY0+0BH*2 ;工作方式寄存器
MY8237_D EQU IOY0+0DH*2 ;写总清命令/读暂存寄存器
MY8237_F EQU IOY0+0FH*2 ;屏蔽位寄存器
2.关于寄存器命令字
AA1: MOV AL, 00H
MOV DX, MY8237_0 ;写通道0当前地址寄存器
OUT DX,AL
MOV AL,10H
OUT DX,AL
MOV AL,00H
MOV DX, MY8237_2 ;写通道1当前地址寄存器
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV AL,0AH
MOV DX, MY8237_1 ;写通道0当前字节计数寄存器
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV AL,0AH
MOV DX, MY8237_3 ;写通道1当前字节计数寄存器
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV AL,88H
MOV DX, MY8237_B ;写通道0工作方式寄存器
OUT DX,AL
MOV AL,85H ;写通道1工作方式寄存器
OUT DX,AL
MOV AL,81H
MOV DX, MY8237_8 ;写命令寄存器
OUT DX,AL
MOV AL,04H
MOV DX, MY8237_9 ;写请求寄存器
OUT DX,AL
MOV AL,00H
MOV DX, MY8237_F ;写屏蔽位寄存器
OUT DX,AL
可以和表格一一对应。
五、实验现象
1.存储器到存储器DMA传输实验
2.I/O到存储器DMA传输实验
运行前:
运行后:
3.存储器到I/O DMA传输实验