Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава14.DOC
Скачиваний:
14
Добавлен:
14.04.2019
Размер:
565.76 Кб
Скачать

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

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

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

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

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

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

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

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

  • вывести на печать один символ: 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 (поэтому возможна печать строки и в обратном направлении).

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

text db 50 dup(' ')

...

mov AH, 40H

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

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

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

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

int 21H

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

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

  • инициализация параметров последовательного порта: AH = 0;

  • послать в порт один символ (если к порту подсоединен принтер, то и печать): AH = 1 и др.

  • прерывание 21Н DOS, AH = 4 (номер последовательного порта записывается в регистр DX):

  • вывести на печать один символ: AH = 4. ASCII-код символа предварительно помещается в регистр DL;

  • далее аналогично прерыванию 21Н DOS, AH = 5 для принтера параллельного типа и др.

Программирование работы с файлами

Файл — выделенная по какому-либо признаку поименованная совокупность информационных записей, хранящихся на диске. Каждой записи в пределах файла присваивается порядковый (тем самым уникальный) номер.

Запись идентифицируется своим адресом:

адрес_записи = имя_файла:номер_записи.

Файловая система поддерживает два типа доступа к записям файла:

  • последовательный метод доступа;

  • прямой метод доступа.

Механизм доступа к файлу и его записям при программировании также имеет два варианта:

  • доступ к файлу с использованием специальной таблицы — управляющего блока файла (FCB);

  • доступ к файлу по идентификатору (ASCIIZ) и логическому номеру.

Использование FCB для обращения к файлу позволяет реализовать и произвольный и последовательный методы организации доступа, но часто оказывается довольно сложным, поэтому на практике, если не требуется выполнять детализированные процедуры с отдельными дорожками и секторами диска, чаще применяется обращение к файлу по идентификатору.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]