ITEEDU

3、DOS功能中的打印输出

在DOS操作系统中,INT 21H提供了一种打印输出的功能调用。其具体描述如下:

05H——向连接在LPT1端口上的打印机输出一个字符

40H——向先前打开的文件写入指定数量的字节,可以把打印机看作为标准的输出文件

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。

4、BIOS中的打印输出

BIOS系统提供了中断17H来实现打印输出功能。其具体的功能如下:

00H——向指定的打印机输出一个字符

01H——初始化指定的打印机

02H——读取指定打印机的状态

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之并行口服务。

5、打印输出的举例

例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