621无条件传送方式 是最简单的I/o控制方式,CPU可以随时根据需要,无条件地 读写I/O端口。 外设要求:简单,数据变化缓慢。外设被认为始终处于就绪状 态。始终准好数据或者始终准备好接收数据 Eg:输入数据时,IN指令。 数据总线 数据 送出地址,译码后选通三态缓 三态 来自 缓冲器 地址译码器}≠地址总线 冲器,将数据传送至数据总线 外设 数据总线 锁存器 图6.3无条件传送的输入方式 地址译码器}≠地址总线 到外设 CE g:输出数据时,OUT指令。 M/IO WR 送出地址,译码后选通锁存器, 图6.4无条件传送的输出方式 将数据送至外设
11 6.2.1 无条件传送方式 ➢ 是最简单的I/O控制方式,CPU可以随时根据需要,无条件地 读写I/O端口。 ➢ 外设要求:简单,数据变化缓慢。外设被认为始终处于就绪状 态。始终准备好数据或者始终准备好接收数据。 Eg:输入数据时,IN指令。 送出地址,译码后选通三态缓 冲器,将数据传送至数据总线。 Eg:输出数据时,OUT指令。 送出地址,译码后选通锁存器, 将数据送至外设
无条件程序控制方式 VCC 根据按键转向相应的服务程序。 START: MOV DX INPORT INAL,DX;读入按键状态 TEST AL,0H;判断最低位按键 JNZK1;最低位按键没闭合,转 ;处理K0的程序 74LS244 JMP EXIT KI: TEST AL 02H JNZK2;次低位按键没闭合,转 GG 处理K1的程序 JMP EXIT 12
12 无条件程序控制方式 根据按键转向相应的服务程序。 START: MOV DX,INPORT IN AL,DX;读入按键状态 TEST AL,01H;判断最低位按键 JNZ K1;最低位按键没闭合,转 …………………;处理K0的程序 JMP EXIT K1:TEST AL,02H; JNZ K2;次低位按键没闭合,转 …………..处理K1的程序 JMP EXIT …………………
622程序查询方式条件传送方式) 使用无条件传送方式,很难读取状态端口 保证传送的时候数据一定是 准备好了的。所以采用程序 READY 查询方式更优 读写数据端口 特点:利用查询方式进行数据输 入输出的过程中,CPU将大量时状态端口复位 间耗费在读取和检测外设状态上 真正用于传送数据的时间很少 传送完 这样大大降低了CPU的效率。 查询控制的程序流程
13 6.2.2 程序查询方式(条件传送方式 ) READY? 读取状态端口 读/写数据端口 Y N 状态端口复位 传送完? 查询控制的程序流程 使用无条件传送方式,很难 保证传送的时候数据一定是 准备好了的。所以采用程序 查询方式更优 特点:利用查询方式进行数据输 入输出的过程中,CPU将大量时 间耗费在读取和检测外设状态上, 真正用于传送数据的时间很少, 这样大大降低了CPU的效率
程序查询方式的输入接口电路 M/O RD 地址总线 数据 地址译码 锁存器 三态数据去数据 缓冲器 数据端口 AoA 总线DB 译码 输入 (8) 装置 状态 +5 信息 状态端口 缓冲器Read 译码 地址 选通信号 译码 RD 输入装置输入数据,同时给出上升沿信号给触发器和锁存器。 IN指令读入状态-测试状态--IN指令读入数据
程序查询方式的输入接口电路 输入装置输入数据,同时给出上升沿信号给触发器和锁存器。 IN指令读入状态---测试状态----IN指令读入数据
查询式输入程序段 在查输入的过程中,读入的数据是8位或16位,而读入的状态位是1位 设状态口的地址为 PORT S1,输入数据口的地址为 PORT I,传送数据的 总字节数为 COUNT_1,则查询式输入数据的程序段为 MOⅴBX,0;初始化指针 数据端口(8位)D MOV CX, COUNT 1;字节数输 8位 MOV DX. PORT S1 状态端口位) AL,DX;读入状态位 (输入) READ SI: N TEST AL,0IH;数据准备好否 图6.6查询式输入的数据和状态信息 JZ READ S1;否,循环检测 MOV DX. PORT N AL,DX;已准备好,读入数据 MOV|BX],AL;存到内存缓冲区中 NCBX;修改地址指针 LOOP READ S1;未传送完,继续传送
查询式输入程序段 在查询输入的过程中,读入的数据是8位或16位,而读入的状态位是1位, 设状态口的地址为PORT S1,输入数据口的地址为PORT_IN,传送数据的 总字节数为COUNT 1,则查询式输入数据的程序段为: MOV BX, 0;初始化指针 MOV CX, COUNT 1;字节数 MOV DX, PORT_S1 READ S1 : IN AL, DX ;读入状态位 TEST AL, 01H;数据准备好否? JZ READ S1 ;否,循环检测 MOV DX, PORT_IN IN AL, DX ;已准备好,读入数据 MOV [BX], AL; 存到内存缓冲区中 INC BX;修改地址指针 LOOP READ S1;未传送完,继续传送