lwstar
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1544回复:0

各位大侠,救命呀!怎样向DMA控制器的请求寄存器端口发送请求命令

楼主#
更多 发布于:2001-07-10 22:26
我在《虚拟设备驱动程序开发起步于进阶>>(人民邮电出版社)看到一个有关开发DMA的例程,其中有关测试该VXD的应用程序要向控制器的请求寄存器发请求命令。我在调试时出现一下错误F:\vtools\hello\testdlg\testdlgDlg.cpp(255) : error C2443: operand size conflict
我后来查有关DMA的资料才发现,DMA的请求寄存器是四位的,不能按常规的OUT方法来发请求命令。望高手出手相救。
我的测试程序如下

#define IO_DMA_BASE_ADDR 0X0000//DMA控制器的端口基地址                        
#define ADDR_DMA_CHANNEL3 IO_DMA_BASE_ADDR+6//通道3的地址寄存器段口号
#define COUNT_DMA_CHANNEL3 IO_DMA_BASE_ADDR+7//通道3的字节计数器端口号
#define MODE_DMA_CHANNEL3 IO_DMA_BASE_ADDR+11//DMA的模式寄存器端口号
#define REQ_DMA_CHANNEL3 IO_DAM_BASE_ADDR+9//DMA的请求寄存器端口号
#define MASK_DMA_CHANNEL3 IO_DMA_BASE_ADDR+10//DMA的屏蔽寄存器端口号
#define BUFFER_SIZE 65536

void main()
{
    _asm
{
mov dx,ADDR_DMA_CHANNEL3
mov al,0x12
out dx,al//写地址寄存器的低字节
mov al,0x34
out dx,al//写地址寄存器的高字节
mov dx,COUNT_DMA_CHANNEL3
mov al,0x10
out dx,al//写字节的计数器的低字节
mov al,0x00
out dx,al//写字节计数器的高字节
mov al,0x0b
mov dx,MODE_DMA_CHANNEL3
out dx,al//设置通道3的模式为读模式
mov al,0x03
mov dx,MASK_DMA_CHANNEL3
out dx,al//去除通道3的屏蔽寄存器的屏蔽位
mov al,0x07
mov dx,REQ_DMA_CHANNEL3
   out  dx, al//设置通道3的请求寄存器,产生DAM请求
}
}


lwstar
游客

返回顶部