网站空间与服务器的区别优化精灵
- DMA的基本概念
DMA是用硬件实现不再通过CPU的,计算机内存储器与I/O设备之间的直接数据传送技术。该硬件称为DMA控制器(简称DMAC),用来控制数据的输入和输出,复杂性堪比CPU。
DMA方式可实现:
- 数据存储器RAM→I/O端口的DMA读传送
- I/O端口→数据存储器RAM的DMA写传送
- 数据存储器RAM→数据存储器RAM的存储单元传送。
- 8237A主要特性
物理特性:使用单一的+5V电源,单相时钟,40条引脚,双列直插式封装。
具有4个独立的通道:每个通道都具有64K存储器寻址能力,一次传送的最大长度可达64K字节。可以在存储器和外设之间传送数据,也可以在存储器之间进行传送。
独立性:每一通道的DMA请求都可以分别允许和禁止。每一通道的DMA请求的优先权,可由编程规定为固定方式或旋转方式。
4种工作方式:单字节传送方式、数据块传送方式、请求传送方式、级联方式。
级联能力:可以用级联的方式扩展通道数,最多可达16个DMA通道。
复位:有一条结束DMA传送的输入信号来结束DMA传送或重新初始化:
- 8237A内部结构
- 存储器地址寄存器
- 传送字节数寄存器
- 控制与状态寄存器
- 数据缓冲寄存器
- 8237A初始化编程
- 输出主清除命令,使8237A处于复位状态,以接收新命令
- 写入工作方式寄存器,以确定8237A工作方式和传送类型;
- 写入命令寄存器,以控制8237A的工作;
- 根据所选通道,输入相应通道当前地址寄存器和基地址寄存器的初始值;
- 输入当前字节计数器和基字节数寄存器的初始值;
- 写入屏蔽寄存器
- 写入请求寄存器,便可由软件启动DMA传送。否则,经过(1)~(6)步编程后,由硬件控制通道DREQ启动DMA传送的过程
【例8-1】初始化8237A。对PC系列的DMA控制器8237A进行测试。测试程序对4个通道的8个16位寄存器先后写入全“1”和全“0”,再读出比较其是否一致。若不一致,则出错,停机。(设程序中的变量DMA地址是00H)
;检测前,禁止DMA控制器工作
MOV AL, 04H ;命令字,禁止8273A工作
OUT DMA+08, AL ;命令字送命令寄存器
OUT DMA+0D,AL ;命令字送清除屏蔽寄存器MOV AL, 0FFH ;全“1”检测
BEG:MOV BL, AL ;暂存AX到BX
MOV BH, AL ;
MOV CX, 8 ;循环测试8个寄存器
MOV DX, DMA ;FF写入0~3号通道的基地址或字节数寄存器
LP1:OUT DX, AL ;写入低8位
OUT DX, AL ;再写入高8位
- 8237A程序设计
目录