使用8237A可编程DMA控制器实验目的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用8237A可编程DMA控制器实验目的
1、掌握8237A可编程DMA控制器和微机的接口方法。
2、学习使用8237A可编程控制器,实现数据直接快速传送的编程方法
1、实验内容
实验原理图如图5-26(见下页)所示,本实验学习使用8237A可编程DMA控制器进行RAM到RAM的数据传送方法。
实验中规定通道0为源地址,通道1为目的地址,通过设置0通道的请求寄存器产生软件请求,8237A响应这个软件请求后发出总线请求信号HRQ,图中8237HRQ直接连到8237A的HLDA上,相当于HRQ作为8237A的总线响应信号,进入DMA操作周期。
在8237A进行DMA传送时,当字节计数器减为0时,8237A的/EOP 引脚输出一个负脉冲,表示传送结束。/EOP可以作为系统的外部中断信号,通过8259A控制器使CPU 判断DMA传递是否结束。本实验中未用/EOP信号。
图中RAM 6264的地址为8000~9FFF,实验要求将RAM 6264中地址为8000~ 83FFH 的1KB数据传送到地址为9000H~93FFH的区域中去。为了验证传送的正确性,你可在源地址(8000H~83FFH)区首末几个单元填充标志字节,传送完再检查目的地址区的相应单元的标志字节是否与填入的一样。
2、实验步骤
(1)、将DMA扩展实验板按信号线的对应关系插入DVCC-8086H的Z5插座。
(2)、将DMA扩展实验板上的8237CS信号插孔和DVCC?8086H 的译码输出插孔00H-01FH相连。
(3)、打开DVCC-8086H电源,DVCC-8086H系统显示"DVCC -86H"。
(4)、运行实验程序
在系统显示"DVCC-86H"状态下,按任意键,系统显示命令提示符"-" 。
按GO键,显示器显示"1000 XX"。
输入F000 :B8C0 。
按EXEC键,显示器显示"8237-1"。
待数据传送结束,显示器显示"8237 good"。
CODE SEGMENT
ASSUME CS:CODE
DMA EQU 00H CONTPORT EQU 00DFH
DA TAPORT EQU 00DEH
DA TA1 EQU 0500H
DA TA2 EQU 0508H
START: CALL FORMA T
MOV SI,DA TA1
CALL LEDDISP
MOV AL,00 ;RAM-RAM
OUT DMA+0DH,AL
OUT DMA+0CH,AL
MOV AL,0FFH
C16: M OV BL,AL
MOV BH,AL
MOV CX,08
mov dx,DMA
C17: O UT DX,AL
PUSH AX
OUT DX,AL
NOP
NOP
NOP
IN AL,DX
MOV AH,AL
IN AL,DX
CMP BX,AX
JE C18
HLT
C18: I NC DX
LOOP C17
INC AL
JZ C16
OUT DMA+0DH,AL
OUT DMA+0CH,AL
MOV AL,01H
OUT DMA+08H,AL
PUSH AX
MOV AL,00H
OUT DMA,AL
PUSH AX
MOV AL,80H
OUT DMA,AL
MOV AL,00H
OUT DMA+2,AL
PUSH AX
MOV AL,90H
OUT DMA+2,AL
MOV AL,0FFH
OUT DMA+1,AL
PUSH AX
MOV AL,07H
OUT DMA+1,AL
MOV AL,0FFH
OUT DMA+3,AL
PUSH AX
MOV AL,07H
OUT DMA+3,AL
MOV AL,88H
OUT DMA+0BH,AL
PUSH AX
MOV AL,85H
OUT DMA+0BH,AL
PUSH AX
MOV AL,42H
OUT DMA+0BH,AL
PUSH AX
MOV AL,43H
OUT DMA+0BH,AL
PUSH AX
MOV AL,0EH
OUT DMA+0FH,AL
PUSH AX
MOV AL,04
OUT DMA+09H,AL
MOV CX,1000H
C2: LOOP C2
C19: M OV SI,DA TA2
CALL LEDDISP
JMP C19
FORMA T: MOV BX,0
MOV WORD PTR DS:[BX+DA TA1],4006H ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],4040H ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],4F07H
ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],7F5BH ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],3F5EH
ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],5C3FH ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],4F07H
ADD BX,2
MOV WORD PTR DS:[BX+DA TA1],7F5BH RET
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+SI]
MOV DX,DA TAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
CODE ENDS
END START