Ассемблер и программирование для IBM PC



       

ГЛАВА 19. ПЕЧАТЬ - часть 7


Прерывание BIOS INT 17H обеспечивает три различные операции, специфицированные содержимым регистра AH:

AH=0: Данная операция выполняет печать одного символа на три принтера по номерам 0,1 и 2 (стандартное значение - 0).

MOV AH,00 ;Запрос функции печати MOV AL,char ;Символ, выводимый на печать MOV DX,00 ;Выбор принтера Э 0 INT 17H ;Вызов BIOS

Если операция не может распечатать символ, то в регистре AH устанавливается значение 01.

AH=1: Инициализация порта печатающего устройства:

MOV AH,01 ;Запрос на инициализацию порта MOV DX,00 ;Выбор порта Э 0 INT 17H ;Вызов BIOS

Данная операция посылает на принтер символ "прогон страницы", поэтому ее можно использовать для установки положения "верх страницы". Большинство принтеров выполняют данную установку автоматически при включении.

AH=2: Чтение состояние порта принтера:

MOV AH,02 ;Функция чтения состояния порта MOV DX,00 ;Выбор порта Э 0 INT 17H ;Вызов BIOS TEST AH,00101001B; Принтер готов? JNZ errormsg ;Нет - выдать сообщение об ошибке

Назначение функций AH=1 и AH=2 состоит в определении состояния принтера. В результате выполнения этих функций биты регистра AH могут устанавливаться в 1:

Бит Причина 7 Не занято 6 Подтверждение от принтера 5 Конец бумаги 4 Выбран 3 Ошибка ввода/вывода 0 Таймаут

Ассемблер для IBM PC. Глава 19 8

Если прринтер включен, то операция возвращает шест.90 или двоичное 10010000 - принтер "не занят" и "выбран" - это нормальное состояние готовности. В случае неготовности принтера устанавливаются бит 5 (конец бумаги или бит 3 (ошибка вывода). Если принтер выключен, то операция возвращает шест.B0 или двоичное 10110000, указывая на "конец бумаги". Выполняя программу при выключенном принтере, BIOS не выдает сообщение автоматически, поэтому предполагается, что программа должна сама проверить и отреагировать на состояние принтера. Если программа не делает этого, то единственной индикацией будет мигающий курсор на экране дисплея. Если в этот момент включить принтер, то некоторые выходные данные могут быть потеряны. Следовательно, прежде чем использовать функции BIOS для печати, следует проверить состояние порта принтера и, если будет обнаружена ошибка, то выдать соответствующее сообщение. (Функции DOS выполняют эту проверку автоматически, хотя их сообщение "Out of paper" относится к различным состояниям). После включения принтера, вывод сообщений об ошибке прекращается и принтер начинает нормально работать без потери данных. В процессе работы принтер может выйти за страницу или быть нечаянно выключен. Поэтому в программах печати следует предусмотреть проверку состояния принтера перед каждой попыткой печати.




Содержание  Назад  Вперед