查询传送方式,编程流程从状态端口读入状态信息N外设准备好否Y一个数据从数据端口传送
查询传送方式,编程流程: N Y 从状态端口读入状态信息 从数据端口传送一个数据 外设准备好否?
例1查询方式输入假设外设的状态端口为21CH,其中D4=1时,表示外设数据准备好外设的数据端口为218H。实现从外设读入50H个字节到内存缓冲区buffer中。地址线地址C输入外备译码21CH端口状态端口数据线数据P缓冲218H端口控制线控制数据端口电路
例1 查询方式输入 假设 外设的状态端口为21C H, 其中D4=1时,表示外设数据准备好 外设的数据端口为218 H。 实现从外设读入50H个字节到内存缓冲区buffer中。 21CH端口 状态端口 218H端口 数据端口 地址 译码 数据 缓冲 控制 电路 输 入 外 备 C P U 地址线 数据线 控制线
查询方式输入接口,参看教材图6-10PC总线IORMOV DX,218H状态端口D4-1INAL, DX数据表示外设准备好端口A15地址线O&地址~??A0译码218H锁存器输入设备数据线D7三态~缓冲器DOSTBR<D4三态状态Q缓冲器21CH端口D一+5v地址译码6&MOV DX,21CH5IORINAL, DX
查询方式输入接口, 参看教材图6-10 状态端口 D4=1 表示外设准备好 三 态 缓冲器 输 入 设 备 数 据 线 218H 数据 端口 地址 译码 地址线 状态 端口 地址 译码 锁 存 器 IOR R Q D 三 态 缓冲器 +5v D4 21CH STB PC总线 IOR A15 ~ A0 D7 ~ D0 & & MOV DX, 218H IN AL, DX MOV DX, 21CH IN AL, DX
编程从外设读入50H个字节到内存缓冲区buffer中从21CH状态端口读入外设状态信息ND4-1.外设准备好否?Y从218H数据端口读入一个字节数据N50H个数据传送结束Y
从21CH状态端口 读入外设状态信息 从218H数据端口 读入一个字节数据 Y N D4=1, 外设准备好否? N 50H个数据传送结束? Y 编程从外设读入50H个字节到内存缓冲区buffer中
查询方式输入程序段:MOV;取缓冲区首地址AX.SEGbufferAXMOVDS,DLLEAbuffer;传送个数CX,50HMOVDX.MOV21CHnext:INAL,DX;从状态端口读入状态信息ask::检测D4位TESTAL,00010000BJZask;D4=0,继续查询MOVDX,218HINAL,DX;从数据端口读入数据;送缓冲区MOV[D], ALINCDI:修改缓冲区指针;传送下一个LOOPnext
、 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 ;传送下一个 、 查询方式输入程序段: