第 7 章 输入和输出.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
形成物理地址 mov ax,es mov cl,4 rol ax,cl ;段地址左移4位 mov ch,al ;高位存入CH and al,0f0h add ax,bx ;加段内偏移地址 jnc j33 inc ch ;物理地址形成 j33: push ax ;保存AX DMA设定子程序 通道2起始地址 out 04h,al ;写入地址寄存器 mov al,ah out 04h,al mov al,ch and al,0fh out 81h,al ;写入页面寄存器 DMA设定子程序 计算传送字节数 mov ah,dh ;取扇区数,计算传送的字节数 sub al,al ;AX为扇区数乘256 shr ax,1 ;AX为扇区数乘128 push ax ;暂存AX mov bx,6 call GET-PARM ;调用参数子程序 mov cl,ah ;出口参数:AH=0/1/2/3 pop ax ;恢复AX shl ax,cl ;AX为DMA传送的字节数 DMA设定子程序 通道2传送字节数 dec ax ;字节数减1 push ax ;保存 out 05h,al ;写入字节数寄存器 mov al,ah out 05h,al sti ;开中断 DMA设定子程序 设置出口参数 pop cx ;弹出传送的字节数 pop ax ;弹出物理地址的低16位地址 add ax,cx ;相加,根据结果建立标志CF pop cx ;恢复CX mov al,02h ;允许通道2进行DMA响应 out 0ah,al ret ;返回 DMA设定子程序 DMA传送过程结束的判断: 硬件中断方式 IN AL, 21H OUT 43H, AL 无条件传送流程 查询传送流程 中断传送流程 DMA传送流程 1. 现行地址寄存器 保持DMA传送的当前地址值 每次传送后该寄存器的值自动加1或减1 这个寄存器的值可由CPU写入和读出 基地址寄存器 存放初始值 2. 现行字节数寄存器 保持DMA传送的剩余字节数 每次传送后,该寄存器的值减1 这个寄存器的值可由CPU写入和读出 该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数 基字节数寄存器 存放初始值 传送N个字节,初始值为N-1 读写通道寄存器 CPU与8237A之间通过8位数据总线交换信息,8237A的通道寄存器均为16位 需要两次读写操作才能实现CPU与8237A之间的一个完整数据的交换 8237A内含一个高/低触发器,用来控制读写通道寄存器的高、低字节 高/低触发器 该触发器为0,控制读写低字节 该触发器为1,控制读写高字节 软、硬件复位后,触发器为0 每次读写通道寄存器,自动改变触发器状态。如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器 清除高/低触发器软件命令(A3A2A1A0=1100)将使高/低触发器清零 3个软件命令 清除高/低触发器软件命令 A3A2A1A0=1100,使高/低触发器清零 主清除命令 写地址A3A2A1A0=1101(写什么不论),可使高/低触发器清零 还使命令、状态、请求、临时寄存器清零 使屏蔽寄存器置为全1(禁止DMA请求) 主清除命令与硬件的RESET信号具有相同的功能 清屏蔽寄存器命令 写地址A3A2A1A0=1110 (写什么不论) ,可使4个屏蔽位都清零(允许DMA请求) 5. 模式寄存器 存放相应通道的方式控制字 选择某个DMA通道的工作方式 其中用最低2位选择哪个DMA通道 请看方式字的格式 方式字格式 D7 D6 D5 D4 D3 D2 D1 D0 00 请求模式 01 单字节模式 10 数据块模式 11 级联模式 0 地址增量(加1) 1 地址减量(减1) 0 禁止自动初始化 1 允许自动初始化 00 DMA校验 01 DMA写 10 DMA读 11 非法 ×× 若D7D6=11 00 通道0 01 通道1 10 通道2 11 通道3 6. 命令寄存器 存放8237A的命令字 设置8237A芯片的操作方式 影响每个DMA通道 复位时使命令寄存器清零 设置D2=1才使8237A可以作为DMA控制器 请看命令字的格式 命令字格式 D7 D6 D5 D4 D3 D2 D1 D0 0 DACK低有效 1 DACK高有效 0 DREQ高有效 1 DREQ低有效 0 滞后写 1 扩展写 × 若D3=1 0 固定优先权 1 循环优先权 0 正常时序 1 压缩时序 × 若D0=1 0 允许DMAC工作 1 禁止DMAC工作 0 允许通道0地址改变 1 禁止通道0地址改变 × 若D0=0 0 禁止存储器之间传送 1 允许存储器之间传送 7. 请求寄存器

文档评论(0)

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

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

1亿VIP精品文档

相关文档