例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

关 闭