除了屏幕之外,通过打印机的打印是程序输出信息的另外一种有力手段,也是实现硬拷贝的常见手段。打印机一般采用并行接口、串行接口或USB接口与计算机主机相连,通过接口接收计算机主机发出的各种打印命令和控制码,将字符或图形打印在打印纸上,完成打印功能。
打印机一般要依靠开发商提供的打印机驱动程序的驱动来实现打印的功能。特定的驱动程序使打印机能识别并处理从处理器来的信号,如换页、换行或列表符(Tab)等,也能使处理器理解打印机发出的信号,如忙或纸出界等。打印机一般具有一定容量的缓冲区,以暂存计算机发来的打印命令和控制码,提高打印的速度。
打印操作是通过DOS功能调用的5号功能和BIOS中断INT 17H实现的。DOS功能调用的5号功能接口可以将一个字符送到打印机打印,被打印的字符需要放在DL寄存器中传递给INT 21H的DOS功能调用。下面的程序段使用了DOS功能调用的5号功能在打印机上打印出“Hello,world!”字样。
在这段程序里,下面几条语句负责使用INT 21H的5号功能将DS:BX所指向的字符送往打印机打印。
和屏幕显示有所不同的是,打印机在接收到待打印字符后不一定立刻将该字符打印出来,这个待打印字符有可能会存储在打印机的打印缓冲区中,直到收到了回车换行符或换页符才真正启动打印动作,将字符打印出来。
除了DOS功能调用的5号功能之外,BIOS也提供了用来驱动和管理打印机的一组功能,这些功能都通过BIOS中断INT 17H调用。BIOS中断INT 17H的主要功能如表4-7所示。(www.xing528.com)
表4-7 INF 17H的主要功能
INT 17H提供了初始化打印机、读取打印机状态、选择某台打印机进行打印等更加强大的功能。这些功能允许程序在连接的最多三台打印机中选择一台打印机(由DX中传递的打印机号为0、1或2表示)进行打印字符、初始化打印机或读取打印机状态字节等操作。图4-5是打印机状态字节各位的含义。
图4-5 打印机状态字节
打印机忙(printer busy)表示打印机正在接收数据,或正在打印,或处于脱机状态,无法对主机的打印请求做出应答。应答位(acknowledge)表示打印机已发出一个表明它已经接收到数据的信号,但是,此时数据可能尚未真正打印。选择位(select)表示打印机是联机的。超时位(time out)表示打印机发出忙信号很长一段时间了,系统将不再给它传送数据。表示打印出错的是第5位(out of paper-无纸)或第3位(I/O错)为1。如果在打印程序中先安排指令测试打印机的状态,则BIOS操作就会返送回状态码,而DOS打印操作是自动进行状态码测试并对各种非正常状态都给出一个“无纸”的信息。
除了上面所提及的输入/输出功能之外,DOS和BIOS还为用户程序提供了更多的功能,如磁盘I/O、鼠标控制等,这些功能都可以由用户程序通过类似的方法来调用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。