4.7.3. Параллельный порт

Параллельные порты используются в первую очередь для подключения прин­теров, хотя встречаются и другие устройства, например переносные жесткие диски, которые могут присоединяться к этим портам. Базовые средства DOS и BIOS для работы с параллельными портами аналогичны соответствующим средствам для работы с последовательными портами: DOS инициализирует стандартное устрой­ство PRN, соответствующее первому порту LPT1, которое может быть переопреде­лено командой MODE, и предоставляет прерывание для вывода в это устройство.

Функция DOS05h: Вывод символа в стандартное устройство PRN Вход:   АН = 05h

DL = символ

Кроме того, можно пользоваться функцией записи в файл или устройство, поместив в ВХ число 4, соответсвующее устройству PRN. BIOS, в свою очередь,

предоставляет базовый набор из трех функций для работы с принтером.

INT 17h, АН -

Вход:

Выход:

АН AL DX АН

00: Вывести символ в принтер

=

символ

= номер параллельного порта (00 - LPT1, 01 - LPT2, 02 - LPT3) = состояние принтера: бит 7: принтер не занят бит б: подтверждение

бит 5: нет бумаги

бит 4: принтер в состоянии online

бит З: ошибка ввода-вывода бит G: тайм-аут

INT17h, АН= 01: Выполнить аппаратный сброс принтера Вход:   АН = Olh

DX = номер порта (OOh - G2h)

Выход: АН = состояние принтера

INT 17h, АН - 02: Получить состояние принтера Вход:    АН - 02h

DX = номер порта (00h - 02h) Выход: АН = состояние принтера

Например, чтобы распечатать содержимое экрана на принтере, можно напи­сать такую программу:

; prtscr.asm

;   Распечатать содержимое экрана

на принтере.

start:

main_loop

.model

tiny

 

 

.code

 

 

 

..186

 

Для команды push

 

org

100h

Начало СОМ-файла.

 

mov

ah,1

 

 

mov

dx,0

Порт LPT1.

 

int

17h

принтер.

 

cmp

ah,90h

Если принтер не готов,

 

jne

printer.error

; выдать сообщение об ошибке.

 

push

0B800h

Иначе:

 

pop

ds

; DS = сегмент видеопамяти в текстовом

реж

xor

si,si

SI = О,

 

mov

cx,80*40

; СХ = число символов на экране. •

 

eld

 

Строковые операции вперед.

 

P: lodsw

 

; AL - .символ, АН - атрибут,  SI = SI +

2.

mov

ah,0

АН - номер функции.

 

int

17h

; Вывод символа из AL на принтер.

 

loop

main_loop

 

 

ret

 

Закончить программу.

 

printer_error:

mov mov

int ret

msg end

dx, offset msg

ah, 9 21h

Адрес сообщения об ошибке в

Вывод строки на экран.

db

start "Принтер на LPT1 находится в состоянии offline или

Чтобы распечатать экран в текстовом режиме на LPT1, достаточно всего лишь одной команды INT 05h, что в точности эквивалентно нажатию клавиши PrtScr.