例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 | ||||