在DOS操作系统中,INT 21H提供了一种打印输出的功能调用。其具体描述如下:
05H——向连接在LPT1端口上的打印机输出一个字符
40H——向先前打开的文件写入指定数量的字节,可以把打印机看作为标准的输出文件
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。
BIOS系统提供了中断17H来实现打印输出功能。其具体的功能如下:
00H——向指定的打印机输出一个字符
01H——初始化指定的打印机
02H——读取指定打印机的状态
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之并行口服务。
例8.7 在每页的开始处打印“Assember Language”字符串,并空一行才打印其它内容。
解:
.MODEL SMALL .DATA Title1 DB 0CH, "Assember Language", 0DH, 0AH, 0AH Count EQU $ - Title1 .CODE .STARTUP …… MOV AH, 1 MOV DX, 0 INT 17H ;初始化连接在LPT1上的打印机 …… MOV CX, Count ;待打印的字符个数 XOR BX, BX again: MOV AH, 5H MOV DL, Title1[BX] INT 21H ;调用DOS功能打印字符 INC BX LOOP again …… ;可在此打印其它任意字符 .EXIT 0 END
例8.8 当打印机不能正常打印(非硬件故障)时,提示使用者其原因,以便解决打印问题。
解:
.MODEL SMALL .DATA MSG1 DB "Time Out$” MSG2 DB "I/O Error$” MSG3 DB "Out of Paper$” TOut EQU 01H IOErr EQU 08H OPaper EQU 20H .CODE .STARTUP …… MOV AH, 1 MOV DX, 0 INT 17H ;初始化连接在LPT1上的打印机 …… MOV AH, 2 MOV DX, 0 INT 17H ;读取LPT1打印机的状态字节 TEST AL, TOut or IOErr or OPaper JNZ ErrMsg …… ErrMsg: TEST AL, TOut JZ next1 LEA DX, MSG1 ;Time Out JMP disp next1: TEST AL, IOErr JZ next2 LEA DX, MSG2 ;I/O Error JMP disp next2: LEA DX, MSG3 ;Out of Paper disp: MOV AH, 9H INT 21H …… .EXIT 0 END