这是一个采用查询方式的打印字符程序。程序通过反复读取并测试打印机的状态来控制输出。在打印机接口中,数据寄存器的端口地址为378H,状态寄存器的端口地址为379H,控制寄存器的端口地址为37AH。它们各位的含义见动画所示。

  在例8.2打印字符的程序中,使用TEST指令对状态寄存器(I/O端口379h)的7位进行测试,如果7位为0,表示打印机处于忙状态,这时,CPU不能送出打印数据,所以程序再次循环测试,一直等到7位变为1,表明打印机空闲,程序才从数据区取出一个字符送到打印机的数据寄存器,并由控制寄存器发出一个选通信号(端口37AH的0位),控制打印机将这个字符打印输出。

  这种CPU与外部设备交换信息的方式称为查询方式或等待方式。

  造成CPU必须查询等待的主要原因是许多外设的工作速度比较低,如键盘、打印机等外部设备,它们通过按键或打印头的机械动作输入或输出一个数据,其速度是很慢的,而CPU执行指令的速度是它的几千倍乃至上万倍,所以CPU在接受或发送数据之前必须要了解外设的工作状态,看它是否已经准备好输入或输出。当外设还没有准备好以前,CPU就要等待,不能做别的操作。为了提高CPU的工作效率,可采用中断方式传送数据。关于中断,将在下一节中做详细的介绍。