(精)微机原理第6章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2. 编程举例 编写8237A初始化程序 要求:用通道0,由外设(磁盘)输入32K字节的一个数据块,传送至内存8000H开始的区域(增量传送),采用块连续传送方式,传送完不自动初始化,外设的DREQ和DACK都为高电平有效。假设高4位地址为5。 各控制字如下所示: 方式控制字 (84H) 屏蔽字 (00H) 命令字 (A0H) 程序如下: OUT 5DH,AL ;输出主清除命令(复位) MOV AL, 00H OUT 50H, AL ;输出基和现行地址的低8位 MOV AL, 80H OUT 50H, AL ;输出基和现行地址的高8位 MOV AL, 00H OUT 51H, AL MOV AL, 80H OUT 51H, AL ;给基和现行字节数赋值 MOV AL, 84H OUT 5BH, AL ;输出方式字 MOV AL, 00H OUT 5AH, AL ;输出屏蔽字 MOV AL, 0A0H OUT 58H, AL ;输出命令字 地址低字节 总 清 地址高字节 字数低字节 字数高字节 方 式 字 屏 蔽 字 命 令 字 其他通道参数 例 PC机系统的BIOS芯片中编写了对8237A的初始化和测试程序。 MOV A L, 04H ; AL ← 04H( OUT DMA+08H,AL ; 命令寄存器 ← AL,禁止DMAC工作 OUT DMA+0DH,AL ;软件复位命令,使8237A进入空闲周期 MOV AL, 0FFH ; AL ← 0FFH,准备作赋“1”检测 C16: MOV BL, AL ;将赋值信息保存在BX,以便后面比较 MOV BH, AL ;BH ← AL MOV CX, 8 ;预置读写次数 MOV DX, DMA ;将通道起始地址送DX C17: OUT DX, AL ;将全“1”信息送指定通道寄存器(低8位) OUT DX, AL ;将全“1”信息送指定通道寄存器(高8位) IN AL, DX ;AL ← DX,将刚写入的低8位字节读出 MOV AH, AL ;AH ← AL,将读出的低8位字节保存在AH IN AL, DX ;将刚写入的高8位字节读出 CMP BX, AX ;比较读出的16位字节 JE C18 ;若比较结果一致则转至C18 HLT ;若比较结果不一致则暂停 C18: INC DX ;通道地址加1,指向下一个通道寄存器 LOOP C17 ;若CX未减到0,回到C17;否则转入下一条指令 INC AL ;原AL中数值为FFH,加1后即为00H JE C16 ;回到C16,进行赋“0”检测 例6.4 用0通道输入16KB的数据块,传送至内存8000H开始的区域(增量传送),连续传送方式,传送完毕不自动预置,DREQ为低电平有效,DACK为高电平有效。8237A端口地址为00H~0FH,其初始化程序为: OUT 0DH, AL ; 软件复位命令,使8237A进入空闲周期 MOV AL, 00H ; AL ← 00H OUT 00H, AL ; 基地址和当前地址寄存器 ← 地址低8位 MOV AL, 80H ; AL ← 80H OUT 00H, AL ; 基地址和当前地址寄存器 ← 地址高8位 MOV AL,

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档