给打印机设置“软开关”的实用程序

Author: 范明之 Date: 1997-01-01

  计算机中内存地址为0040:0008H-0040:000FH的八个字节存放着四个打印口的地址,若计算机只配有一个打印口LPT1,该处八个字节为:78 03 00 00 00 00 00 00,将LPT1打印口地址0378H修改为0000H,就使打印机在DOS状态下或任何软件中,都无法进行打印,打印机处于“关闭:OFF”状态;若恢复LPT1的正确地址值,打印机又正常工作,打印机处于“开启:ON”状态。
  了解以上原理后,笔者利用DEBUG编写了二个小程序:PRNOFF.COM、PRNON.COM,运行PRNOFF.COM使打印机处于“关闭”状态;若需要打印,只要“开启”打印机,运行PRNON.COM程序即可,这样便有效地控制了打印机的工作状态,达到禁止非法用户使用的目的,相当实用。
#2  一、设置打印机“关闭:OFF”程序:PRNOFF.COM
  C:\DOS>DEBUG
  -A
  81BE:0100 MOV AX,0040(置数据段地址)
  81BE:0103 MOV DS,AX
  81BE:0105 MOV SI,0008(地址偏移至0008H处)
  81BE:0108 MOV WO[SI],0000(将0040:0008H处的地址值改为0000H)
  81BE:010C MOV AH,4C
  81BE:010E INT 21
  81BE:0110
  -R CX(读取文件长度)
  CX 0000
  :10
  -N PRNOFF.COM(给程序命名)
  -W(存盘)
  Writting 00010 bytes
  -Q(退出)
  笔者将PRNOFF.COM加入AUTOEXEC.BAT中,使一开机便将BIOS中0040:0008处LPT1打印口地址修改为:0000H,计算机因联不上打印机,故不进行正常打印,打印机处于“关闭”状态。
#2  二、设置打印机“开启:ON”程序:PRNON.COM
  C:\DOS>DEBUG
  -A
  81BE:0100 MOV AX,0040
  81BE:0103 MOV DS,AX
  81BE:0105 MOV BX,0378
  81BE:0108 MOV [0008],BX(将LPT1打印口地址值复原)
  81BE:010C INT 20
  81BE:010E
  -R CX
  CX 0000
  :E
  -N PRNON.COM
  -W
  Writting 0000E bytes
  -Q
  需要打印时,运行打印机“开启”程序:PRNON.COM即可。