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



       

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


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

заменяется на шест.30, а к левому байту прибавляется единица. Таким образом шест.303A перекодируется в шест. 3130, т.е. в 10 в символьном представлении.

------------------------------------------------------------ ------------------------------------------------------------ Рис.19.1. Постраничная печать с заголовком.

Проверка на конец страницы до (но не после) печати имени гарантирует, что на последней странице будет напечатано по крайней мере одно имя под заголовком.

ПЕЧАТЬ ASCII-ФАЙЛОВ И ТАБУЛЯЦИЯ ------------------------------------------------------------

Табуляция, обеспечиваемая, например, видеоадаптерами, заключается в замене одного символа табуляции (код 09) несколькими пробелами при выводе так, чтобы следующая позиция была кратна 8. Таким образом, стандартные позиции табуляции являются 8, 16, 24 и т.д. Многие принтеры, однако, игнорируют символы табуляции. Поэтому, такая программа, как DOS PRINT, предназначенная для печати ASCII файлов (например ассемблерных исходных текстов) проверяет каждый символ, посылаемый на принтер. И, если обнаруживается символ табуляции, то программа выдает несколько пробелов до позиции кратной 8. Программа, приведенная на рис.19.2, выводит на экран запрос на ввод имени файла и, затем, печатает содержимое указанного файла. Эта программа в отличие от приведенной на рис.17.3 (вывод файлов на экран) осуществляет замену выводимых символов табуляции на соответствующее число пробелов. В результате символ табуляции в позициях от 0 до 7 приводит к переходу на позицию 8, от 8 до 15 - на 16 и т.д. Команды, реализующие данную логику, находятся в процедуре G10XFER после метки G60. Рассмотрим три примера обработки символа табуляции:

Текущая позиция печати: 1 9 21 Двоичное значение: 00000001 00001001 00010101 Очистка трех правых битов: 00000000 00001000 00010000 Прибавление 8: 00001000 00010000 00011000 Новая позиция: 8 16 24

В программе организованы следующие процедуры:

С10PRMP Запрашивает ввод имени файла. Нажатие только клавиши Return приводит к завершению работы программы. E10OPEN Открывает дисковый файл по указанному имени. G10XFER Контролирует конец сектора, конец файла, конец области вывода, символы "перевод строки" и табуля ции. Пересылает обычные символы в область вывода.




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