- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 二、条件传送方式(查询传送方式) ?实现方法: 在与外设进行传送数据前,CPU先查询外设状态, 当外设准备好后,才执行I/O指令,实现数据传送 ?特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低 * ?查询传送方式,编程流程: N Y 从状态端口读入状态信息 从数据端口传送一个数据 外设准备好否? * 例1 查询方式输入 假设 外设的状态端口为21C H, 其中D4=1时,表示外设数据准备好 外设的数据端口为218 H。 实现从外设读入50H个字节到内存缓冲区buffer中。 21CH端口 状态端口 218H端口 数据端口 地址 译码 数据 缓冲 控制 电路 输入 外 备 C P U 地址线 数据线 控制线 * 从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 ;传送下一个 、、、 查询方式输入程序段: * 例2 查询方式输出 假设 外设的状态端口为21C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为219 H。 编程将缓冲区buffer的80H个字节输出到外设。 21CH端口 状态端口 219H端口 数据端口 地址 译码 数据 缓冲 控制 电路 输出 外 设 C P U 地址线 数据线 控制线 * 从21CH状态端口 读入外设状态信息 将一字节数据送至 219H数据端口 Y N D0=0, 外设准备好否? N 80H个数据传送结束? Y 编程将缓冲区buffer的80H个字节输出到外设 * 、、、 MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA SI, buffer MOV CX, 80H ;传送个数 next: MOV DX, 21CH ask: IN AL, DX ;从状态端口读入状态信息 TEST AL, 0000 0001B ;检测D0位 JNZ ask ;D0≠0,继续查询 MOV AL, [SI] ;从缓冲区取数 MOV DX, 219H OUT DX, AL ;从数据端口输出数据 INC SI ;修改缓冲区指针 LOOP next ;输出下一个 、、、 查询方式输出程序段: * 三、中断传送方式 ? 实现方法: 1. 当外设准备好,向CPU发出中断请求 2. CPU在满足响应中断的条件
文档评论(0)