每次输一个字,就认为状态完成,CPU就会取走数据寄存器的内容
此时模拟打印三个字符
假设此时三个字符在主存,CPU先从主存读一个字符放到CPU的寄存器中,此时是读主存操作.
CPU向打印机发出打印的命令字,此时需要先经过打印机驱动程序的处理将打印的命令字放到CPU寄存器里面了,用OUT指令将命令字送到IO端口控制寄存器中(OUT指令首先通过地址线发送要写的IO端口,然后再通过控制线发送要写的操作,然后命令字再通过数据线传到控制寄存器中)
IO控制逻辑单元再通过从控制寄存器传过来的命令信号传到外设界面控制逻辑通过控制线给打印机发出对应的控制信号
打印机接收到命令启动打印机,工作完成后,通过状态线传给IO接口显示已经完成。IO控制逻辑单元会将该状态信号传给状态寄存器中Rn+1.(之前这个寄存器本来存放命令字,但由于命令字已经发给IO控制逻辑并处理了不需要了,所以此时放状态信号没问题)
当OUT指令将打印字发给控制寄存器之后,CPU会一直检查状态寄存器是否变成已经变成完成的信号(就是通过IN不断将状态寄存器的内容通过数据线输入到CPU的寄存器里 CPU再来检查该寄存器的值是否是完成信号)
当检查到发现是完成信号时,CPU再通过地址线指明此次操作的端口是数据缓冲寄存器和控制线指明此次是写操作,同时从寄存器中存储要打印的字符的数据传到数据线上。然后将要打印的字符成功写到该数据缓冲寄存器中
然后数据缓冲寄存器内的数据传到IO控制逻辑,再通过IO控制逻辑传到外设界面控制逻辑,再通过数据线传到打印机,同时也会通过控制线发出相应的控制信号。
打印完成后,通过状态线给IO接口反映打印已完成的信号,接口再把已完成的信号传给状态寄存器
CPU检查到打印机完成工作后,再向数据缓冲寄存器写第二个要打印的字符,流程和打印a一样
当最后一个打印的字符打印完后,打印机向接口发出已完成的信号,接口再将该信号传给状态寄存器,同时CPU内部可以通过计数器计数打印的字符数量是否达成,当发现此时打印都完成了,并且检测到最后一次打印信号已经完成,CPU会给打印机发出停机命令字字(当然得先通过驱动程序)给控制寄存器
IO控制逻辑(IO接口)再将该停机控制信号发送给外设界面控制逻辑再通过控制总线发送给打印机,然后打印机停止
传送参数:计数器计数多少算全传完,传送的数据
CPU和IO设备串行工作即工作相互依赖
慢速IO设备对CPU程序查询方式影响不大
快速IO设备对CPU程序查询方式影响较大
CPU其实可以用定时查询(查询时间不占全部,查询和程序执行穿插进行)和独占查询
下图中的上面的程序查询方式是独占查询方式