8086寻址-输入和输出方式.ppt
文本预览下载声明
1.现行地址寄存器 保存DMA传送的地址,每次传送后它的值自动加减1 2.现行字节数寄存器 保存DMA要传送的字节数,每次传送后它的值自动加减1 3.基地址和基字节数寄存器 自动初始化DMA的传送地址和字节数 4.命令寄存器 5.模式寄存器 6.请求寄存器 7.屏蔽寄存器 8.状态寄存器 9. 临时寄存器 10. 软件命令 清除高/低触发器 主清除命令 1 输入主清除命令 2 写入基与现行地址寄存器 3 写入基与现行字节数寄存器 4 写入模式寄存器 5 写入屏蔽寄存器 6 写入命令寄存器 7 写入请求寄存器 例:通道0,外设输入32K字节,传至内存8000H(增量传送),块连续传送,传送完不自动初始化,DREQ、DACK高电平有效,地址高4位为5 OUT 5DH,AL MOV AL,00H OUT 50H,AL MOV AL,80H OUT 50H,AL 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 外设与存储器 图7-30 存储器与存储器 图7-31 ?查询传送方式,编程流程: N Y 从状态端口读入状态信息 从数据端口传送一个数据 外设准备好否? 例1 查询方式输入 假设 外设的状态端口为21C H, 其中D4=1时,表示外设数据准备好 外设的数据端口为218 H。 实现从外设读入50H个字节到内存缓冲区buffer中。 21CH端口 状态端口 218H端口 数据端口 地址 译码 数据 缓冲 控制 电路 输入 外 备 C P U 地址线 数据线 控制线 状态端口 D4=1 表示外设准备好 三 态 缓冲器 输 入 设 备 数 据 线 218H? 数据 端口 地址 译码 地址线? 状态 端口 地址 译码 锁 存 器 IOR R Q D 三 态 缓冲器 +5v D4 21CH? STB PC总线 IOR A15 ~ A0 D7 ~ D0 MOV DX, 218H IN AL, DX MOV DX, 21CH IN AL, DX 从21CH状态端口 读入外设状态信息 从218H数据端口 读入一个字节数据 Y N D4=1, 外设准备好否? N 50H个数据传送结束? Y 编程从外设读入50H个字节到内存缓冲区buffer中 、、、 MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA DI, buffer MOV CX, 50H ;传送个数 next: MOV DX, 21CH ask: IN AL, DX ;从状态端口读入状态信息 TEST AL, 0001 0000B ;检测D4位 JZ ask ;D4=0,继续查询 MOV DX, 218H IN AL, DX ;从数据端口读入数据 MOV [DI], AL ;送缓冲区 INC DI ;修改缓冲区指针 LOOP next ;传送下一个 、、、 查询方式输入程序段: CPU必须了解外设的状态,看外设是否有空。 例2 查询方式输出 假设 外设的状态端口为21C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为219 H。 编程将缓冲区buffer的80H个字节输出到外设。 21CH端口 状态端口 219H端口 数据端口 地址 译码 数据 缓冲 控制 电路 输出 外 设 C P U 地址线 数据线 控制线 查询方式输出接口 状态端口 D0 = 0 表示外设准备好 输 出 设 备 数 据
显示全部