Программирование работы с принтерами

При работе с печатающими устройствами могут быть использованы прерывания: 14Н и 17Н BIOS и 21Н (AH = 4 и 5) DOS. Следует различать программирование для печатающих устройств параллельного типа (информация передается на принтер побайтово по 8-битовой шине) и печатающих устройств последовательного типа (информация передается по одному проводу последовательно по 1 биту), подсоединяемых к любому последовательному порту микропроцессора.

Печатающие устройства параллельного типа

l прерывание 17Н BIOS (номер принтера предварительно указывается в регистре DX):

l послать 1 символ в устройство печати: AH = 0. ASCII-код символа предварительно должен быть помещен в регистр AL. В регистре AH после завершения вывода символа возвращается признак успешности результата;

l инициировать принтер (посылка в порт служебных кодов): AH = 1;

l получить состояние принтера (в регистре AH): AH = 2.

l прерывание 21Н DOS, AH = 5:

l вывести на печать один символ: AH = 5. ASCII-код символа предварительно записывается в регистр DL. Фрагмент программы печати символа C (ASCII-код символа C равен 43h):

mov AH, 5

mov DL, 43H

int 21H

Если необходимо отпечатать строку, то следует, используя это же прерывание, организовать вывод символов в цикле, каждый раз помещая в регистр DL ASCII-код очередного символа, а в конце строки и код CR возврата каретки (ASCII-код = 13) и/или LF — перевода строки (ASCII-код = 10). Фрагмент программы печати строки: «Я печатаю»:

text db 'Я печатаю', 13

...

mov SI, 0; обнуляем смещение адреса символа в строке

mov AH, 5

print: mov DL, text[SI]

; помещаем в DL очередной символ из строки text

int 21H

inc SI; увеличиваем смещение адреса символа в строке на 1

cmp DL, 13

; сравниваем очередной символ с кодом возврата каретки

jne print

Печатающее устройство имеет свой буфер, где накапливает поступающие символы, пока не дождется символа CR или LF (поэтому возможна печать строки и в обратном направлении).

l Вывести на печать текстовый файл: AH = 40h. Используются функции расширенного управления файлами MS DOS по файловому указателю. Пример фрагмента программы для вывода на печать текстового файла, содержащего 50 байтов:

text db 50 dup(' ')

...

mov AH, 40H

mov BX, 4; указание устройства вывода

mov CX, 50; указание числа выводимых байтов

mov DX, offset text; указание начального адреса

; поля памяти, содержащей текст

int 21H


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: