第八章IO程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 I/O程序设计 INT 10H/INT 21H[间接控制] 在对外设的管理与控制中,CPU时常要对设备接口进行直接控制、驱动或与之联络,此时就需要设计输入输出程序。 8.1 概 述 8.2 程序查询方式 8.3 中断传送方式 8.4 DMA方式简介 信息交换内容: 数据信息; 状态信息; 控制信息。 程序查询方式 程序查询方式使用I/O指令直接在端口级上进行信息的输入或输出。 例.以程序查询方式往打印机上输出字符。 打印机适配器包括数据端口、状态端口、控制端口,它们的端口地址分别为378H、379H、37AH。 ① 设置超时值。 ② 要打印的字符送数据端口。 ③ 读状态信息。 ④ 若打印机闲转第9步;忙则继续。 ⑤ 超时值减1。 ⑥ 超时吗? ⑦ 若未超时转第3步;否则继续。 ⑧ 置错误标志,转第10步。 ⑨ 发选通命令。 ⑩ 使选通信号为低。 以程序查询方式进行输出的打印子程序。 程序8.1 ;入口:AL=要输出的字符,出口:AH=打印机状态字节 PRINT PROC PUSH DX PUSH AX MOV BL,10 ;设置超时值 XOR CX,CX MOV DX,378H OUT DX,AL ;输出字符到数据端口 INC DX ;状态端口 B3: IN AL,DX ;读状态字节 MOV AH,AL ;状态也送入AH TEST AL,80H ;打印机忙? JNZ B4 ;不忙则转移 LOOP B3 ;继续测试 DEC BL ;超时计数器减1 JNZ B3 ;等到不忙 OR AH,1 ;置错误标志 AND AH,0F9H ;清0其它错误标志 JMP B7 B4: MOV AL,0DH ;置选通为高/最低位置1 INC DX ;控制端口 OUT DX,AL ;输出选通信号(瞬时) JMP $+2 ;延时,保证有足够选通时间 MOV AL,0CH ;使选通信号为低 OUT DX,AL ;输出低选通信号 B7: POP AX POP DX XOR AH,48H RET PRINT ENDP 例.? 串行通讯 串行口COM1的数据端口号为3F8H,状态端口号为3FDH。 bit0=1表示输入数据就绪,即已接收到一个完整的字符,并已送到接收缓冲寄存器中; bit5=1表示输出准备就绪,即发送保持寄存器为空,控制器已准备好接收新字符。 COM_I PROC FAR PUSH DX MOV DX,3FDH ;状态端口号 COM_I0: IN AL,DX ;读状态信息 TEST AL,1 ;输入数据就绪? JZ COM_I0 ;未就绪继续查询 MOV DX,3F8H ;数据端口 IN AL,DX POP DX RET COM_I ENDP COM_O PROC FAR PUSH DX PUSH AX ;保存要输出的字符 MOV DX,3FDH COM_O1: IN AL,DX ;读状态信息 TEST AL,20H ;发送保持寄存器为空? JZ COM_O1 ;不空继续查询 POP AX MOV DX,3F8H OUT DX,AL ;输出一个字符 POP DX RET COM_O ENDP 多个外设同时使用程序查询方式进行I/O处理,则存在一个优先权问题。 1.相同的优先权。 2.不同的优先权。 例.一台计算机中有多个外设同时使用程序查询方式进行I/O处理的程序。 假定有三个设备要使用程序查询方式进行输入处理,它们的状态口分别为STAT1、STAT2、STAT3,子程序PROC1、PROC2、PROC3分别用于执行这三个设备的输入工作。在这些设备中,状态寄存器的bit5=1表示输入数据就绪,变量FLAG=1用于表示输入过程结束,其初始设置为0。 下边分别给出具有相同优先权和不同优先权的设备查询程序。 ⑴ 具有相同优先权的设备查询程序 INPUT: IN AL,STAT1 ;读设备1状态 TEST AL,20H ;输入数据就绪? JZ DEV2 ;未就绪转 CALL FAR PTR PROC1 ;执行设备1数据输入 DEV2: IN AL,STAT2 ;读设备2状态 TEST AL,20H ;输入数据就绪? JZ DEV3 ;未就绪转 CALL FAR PTR PROC

文档评论(0)

aa15090828118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档