汇编程序 第七章 实模式IO程序设计.pptVIP

  • 3
  • 0
  • 约 88页
  • 2017-08-10 发布于湖北
  • 举报
第七章 实模式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)

1亿VIP精品文档

相关文档