查询传送的两个环节(1)查询环节输入状态寻址状态端口、读取状态寄存器的标志位N就绪?若不就绪就继续香询,直至就绪Y(2)传送环节数据传送寻址数据端口,是输入,通过输入指令从数据端口读入数据是输出,通过输出指令向数据端口输出数据
查询传送的两个环节 ⑴查询环节 ➢ 寻址状态端口 ➢ 读取状态寄存器的标志位 ➢ 若不就绪就继续查询,直至就绪 ⑵传送环节 ➢ 寻址数据端口 ➢ 是输入,通过输入指令从数据端口读入数据 ➢ 是输出,通过输出指令向数据端口输出数据 输入状态 就绪? 数据传送 Y N
1.查询式输入M/IORD地址总线地址译码数据数据三态去数据数据端口锁存器Ao~A7缓冲器总线DB译码(8)Do输入装置状态信息+5状态端口RDOReady译码缓冲器(1)地址选通信号译码M/TORD图6.5查询式输入的接口电路程序段
1.查询式输入 程序段
查询式输入程序段在查询输入的过程中,读入的数据是8位或16位,而读入的状态位是1位,如图所宗。设状悉占的地址为PORTISI,输入数据口的地址为PORTIN,传送数据的总学节数为COUNT1,则查询式输入数据的序段为:MOVBX,O:初始化指针数据端口(8位)(输入)MOV CX,COUNT_1;字节数8位MOV DX, PORT S1状态端口(1位)(输入)READS1 : IN AL / DX;读入状态位"READY"(I位)TESTAL,O1H;数据准备好否?图6.6查询式输入的数据和状态信息JZ READ.S1;否,循环检测MOVDXPORTININAL,DX;已准备好,读入数据MOV[BX,AL;存到内存缓冲区中INCBX修改地址指针LOOPREAD.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;未传送完,继续传送
2.查询式输出输出数据端口地址总线地址译码器Ao~A7M/IO数据WR锁存器状态端口口数据总线DB输出地址译码器装置+5V1DOM/IOACKRRD三态缓冲器一去数据总线D“BUSY"(1)状态信息“BUSY"图6.7查询式输出的接口电路程序段
2.查询式输出 程序段
查询式输出程序段在查询输出的过程中,输出的数据是8位或16位,而读入的状态位是1位,如图所宗。设状悉口的地班为PORTS2.,输出数据口的地为PORTUT传送数据的总字节数为COUNT2,若输出的数据放在2000H开始的一段存储区中,则查询式输出数据的程序段为:数据端口(8位)MOVBX,2000H:初始化地址指针(输出)8位MOVCX,COUNT2;字节数状态端口(1位)MOV DX PORT S2(输入);读入状态位READ S2: IN AL DX“RUSY"(1位)TESTAL,80H;外设准备好否?图6.8查询式输出的数据和状态信息JNZREADS2;否,循环检测MOVAL,[BXI;从内存缓冲区中取数据MOV DX,PORT OUTOUT DXAL;输出数据;修改地址指针INC BXLOOPREADS2;未传送完,继续传送
查询式输出程序段 在查询输出的过程中,输出的数据是8位或16位,而读入的状态位是1位,如 图所示。设状态口的地址为PORT_S2,输出数据口的地址为PORT_OUT, 传送数据的总字节数为COUNT_2,若输出的数据放在2000H开始的一段存 储区中,则查询式输出数据的程序段为: MOV BX, 2000H;初始化地址指针 MOV CX, COUNT_2;字节数 MOV DX, PORT_S2 READ_S2 : IN AL, DX ;读入状态位 TEST AL, 80H;外设准备好否? JNZ READ_S2 ;否,循环检测 MOV AL, [BX];从内存缓冲区中取数据 MOV DX, PORT_OUT OUT DX, AL ;输出数据 INC BX ;修改地址指针 LOOP READ_S2 ;未传送完,继续传送