汇编程序 第七篇 实模式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程序设计 7.1 概 述 主机与外设通过硬件接口电路或控制器相连接。 主机与外设之间交换的信息:数据信息、状态信息以及控制信息。 主机与外设之间信息交换方式:程序查询方式、中断传送方式、DMA(直接存储器存取)方式、通道方式以及I/O处理机管理方式等。IBM PC主要采取前三种方式。 设计I/O程序时,需对端口地址、控制及状态端口各位的含义熟悉。表7-1给出了IBM PC机的部分端口地址。 7.2 程序查询方式 程序查询方式使用I/O指令直接在端口级上进行信息的输入或输出。程序控制I/O方式的流程图如图7-1所示。 例1.以程序查询方式往打印机上输出字符。 打印机查询方式程序设计步骤如下: ① 设置超时值。 ② 要打印的字符送数据端口。 ③ 读状态信息。 ④ 若打印机闲转第9步;忙则继续。 ⑤ 超时值减1。 ⑥ 超时吗? ⑦ 若未超时转第3步;否则继续。 ⑧ 置错误标志,转第10步。 ⑨ 发选通命令。 ⑩ 使选通信号为低。 以程序查询方式进行输出的打印子程序。 程序7.1 子程序名PRINT ;入口: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 ;置选通为高 INC DX ;控制端口 OUT DX,AL ;输出选通信号(瞬时) JMP $+2 ;延时,保证有足够选通时间 MOV AL,0CH ;使选通信号为低 OUT DX,AL ;输出低选通信号 B7: POP AX POP DX XOR AH,48H RET PRINT ENDP 例2.? 串行通信 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 例3.一台计算机中有多个外设同时使用程序查询方式进行I/O处理的程序。 假定有三个设备要使用程序查询方式进行输入处理,它们的状态口分别为STAT1、STAT2、STAT3,子程序PROC1、PROC2、PROC3分别用于执行这三个设备的输入工作。在这些设备中,状态寄存器的bit5=1表示输入数据就绪,变量FLAG=1用于表示输入过程结束,其初始设置为0。下边分别给出具有相同优先权和不同优先权的设备查询程序。 1. 具有相同优先权的设备查询程序 程序7.3 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 PROC2 ;执行设备2数据输入 DEV3: IN AL,STAT3 ;读设备3状态 TEST AL,20H ;输入数据就绪? JZ NO_INPUT ;未就绪转 CALL FAR PTR PROC3 ;执行设备3数据输入 NO_IN

文档评论(0)

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

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

1亿VIP精品文档

相关文档