____________________________________________________________
Пятая функция обслуживания (функция с кодом 4) предназначена для
считывания местоположения, указанного световым пером ( для систем, имеющих
световое перо). В результате выполнения фиксируется факт подключения
светового пера; если световое перо подключено, то фиксируется также
положение указанной точки. Положение задается как в терминах символов, так
и в терминах пикселей (этот вопрос подробно обсуждается в следующей главе,
посвященной графике).
Регистр AH предназначен для индикации подключения светового пера:
если AH=1, то световое перо подключено, в противном случае (AH=0),
световое перо не используется. Положение объекта, вычлененного с помощью
светового пера формируется либо в виде содержимого регистров CH, BX
(положение пикселя). Поскольку величина, соответствующая (горизонтальной)
позиции пикселя может превышать 255, то для нее отводится полное слово
(регистр BX).
Ниже приводятся сведения о составе и содержимом регистров.
____________________________________________________________
Номер функции Параметры
обслуживания
____________________________________________________________
AH = 4 DH = номер строки символов
DL = номер позиции (столбца)символа
CH = номер строки пикселей
(0 - 199)
BX = номер позиции (столбца) пикселя
____________________________________________________________
Световое перо не относится к числу наиболее распространенных
аппаратных средств для IBM/PC. Это своего рода сдерживающий фактор,
поскольку может использоваться только с дисплеями, обладающими очень малым
временем послесвечения люминофора, т.е. такими дисплея, у которых
светимость точки быстро падает после перемещения луча развертки в
следующую точку экрана. Такие дисплеи быстро утомляют оператора. Поэтому
хорошие дисплеи не нуждаются в световом пере. Для монохромного дисплея
фирмы IBM применяется фосфорный дисплей с длительным послесвечением,
облегчающий восприятие изображений. Можно считать, что световое перо
получит ограниченное распространение (в основном для специальных
приложений) в сфере персональных компьютеров.
Шестая функция обслуживания (функция с кодом 5) используется для
установки (подключения) активной страницы в многостраничном текстовом
режиме цветного графического дисплея. Номер страницы задается в регистре
AL. Для 40-позиционных режимов номера страницы лежат в диапазоне 0 - 7, а
для 80 позиционных режимов - в диапазоне 0 - 4. По умолчанию номер
страницы принимается равным 0. Эта страница помещается в самом начале
памяти дисплея, а каждая последующая страница с интервалом в 2К (для 40
позиционных режимов) или через 4К (для 80 позиционных режимов). Большему
номеру страницы соответствуют ячейки памяти с большими адресами.
____________________________________________________________
Номер функции Параметры
обслуживания
____________________________________________________________
AH = 5 AL = номер новой страницы дисплея
(0 - 3 для режимов 2 и 3, 0 -
7 для режимов 0 и 1)
____________________________________________________________
Две следующих функции обслуживания /функции с кодами 6 и 7/
используются для реализации режима "прокрутки" (скроллинга) информации на
экране дисплея. Использование компьютера IBM/PC в режиме "прокрутки"
представляет собой одну из интереснейших возможностей отображения
информации, однако лишь немногие программы, используют эту возможность. В
режиме "прокрутки" можно перемесить содержимое экрана вверх или вниз на
любое число строк. При этом отображаемые символы смещаются за пределы
экрана вверх или вниз, а освободившаяся часть экрана заполняется пустыми
строками. Особенность этого режима отображения состоит в том, что в роли
экрана может выступать произвольная прямоугольная область экрана (окно),
на которую распространяется "прокрутка"; остальные участки экрана остаются
неизменными. Выделив несколько окон, можно организовать в каждом из них
режим "прокрутки". Возможности обработки данных здесь огромные, остается
лишь недоумевать, почему большинство программ их редко используют.
Функция с кодом 6 предназначена для "прокрутки" вверх, а функция с
кодом 7 предназначена для "прокрутки" вниз. И в том, и в другом случае
следует специфицировать два противоположных угла окна - верхний левый и
нижний правый. Спецификация задается в терминах строк и столбцов. Следует
также задать число перемещаемых строк; это число может совпадать с
размером окна. И последний обьект спецификации - атрибут отображения строк
заполнителей. Таким образом, имеется возможность управлять цветом окна.
Если планируется использование техники работы с окнами, то имеет смысл
выделить окно путем приписывания ему атрибута отображения, отличного от
атрибута отображения всего остального экрана. С помощью механизма
прокрутки текст сообщения не может быть помещен в новые строки окна - для
этого следует принять специальные меры.
Число перемещаемых строк указывается в регистре AL. Если AL=0, то все
окно заполняется пустыми строками (то же самое происходит, если число
перемещаемых строк превышает размеры окна). Положение и размер окна
указываются в регистрах CX и DX: в CH указывается верхняя строка, а в DH -
нижняя; в CL указывается левая позиция (столбец, а в DL - правый. Атрибуты
изображения пустых строк указываются в регистре BH. Ниже приводятся общие
сведения о составе и содержимом регистров.
____________________________________________________________
Номер функции Параметры
обслуживания
____________________________________________________________
AH = 6 AL = количество сдвигаемых строк
CH = номер строки верхнего левого
угла окна
CL = номер позиции (столбца) верхнего
левого угла окна
DH = номер строки нижнего правого угла
окна
DL = номер позиции (столбца) нижнего
правого угла окна
BH = атрибуты изображения пустых
строк
____________________________________________________________
"Прокрутка" содержимого окна как правило выполняется в два этапа. Как
только новая строка подготовлена к записи в окно, осуществляется вызов
функции обслуживания с кодом 6 (или 7) для перемещения текущего
содержимого окна. После этого в новую строку заносится нужная информация.
Для этого используются функции обслуживания "установка курсора" и "запись
символа". Ниже приводится пример, иллюстрирующий излагаемые положения.
DEBUG; вызов программы-отладчика DEBUG
A
INT 10; вызов Ассемблера
[Return]; выход из Ассемблера
R AX; извлечение содержимого регистра AX для просмотра
и изменения
06 03; установка функции обслуживания с кодом 6, количество
сдвигаемых строк 3
R CX; извлечение содержимого регистра CX для просмотра
и изменения
050A; установка верхнего левого угла: строка 5, столбец 10
R DX; извлечение содержимого регистра DX для просмотра
и изменения
1020; установка правого нижнего угла: строка 16, столбец 32
D 0 L 180; заполнение экрана
G 100 102; выполнение прерывания 10, стоп.
Следующие три функции обслуживания предназначены для манипулирования
символами. С помощью этих функций осуществляются операции ввода-вывода без
непосредственного обращения из пользовательских программ к области
памяти,в которой хранится закодированный образ экрана дисплея. В связи с
уже упоминавшимся ранее аспектами вывода информации на экран дисплея путем
прямой модификации содержимого памяти, хранящей копию изображения, здесь
следует заметить, что использование этих функций делает программы
пользователя более мобильными и менее зависимыми от особенностей Вашего
компьютера. Рассмотрим эти функции более подробно.
Девятая функция обслуживания (функция обслуживания с кодом 8)
осуществляет считывание символа и атрибута, соответствующих текущей
позиции курсора. Как и в случае некоторых других функций обслуживания,
здесь следует указать номер используемой страницы (несмотря на то, что
страница применяется только к текстовому режиму цветного графического
дисплея). Функция обслуживания 8 работает как в графическом, так и в
текущем режимах; более детальные сведения, касающиеся отображения символов
в графическом режиме приведены в следующей главе. Заметим лишь, что
поскольку в графическом режиме атрибут изображения отсутствует (это
понятие применимо лишь к текстовому режиму, либо к монохромному дисплею),
то его считывание не осуществляется.
Особенность этого режима состоит в том, что одни и те же таблицы
изображения символов, используемые для их записи, используются также и в
случае их распознавания путем сличения. Распознование осуществимо даже в
случае создания своего собственного набора графических символов.
Код символа ASCII заносится в регистр AL. Если символ не
соответствует кодам ASCII, то в графическом режиме в регистр заносится 00.
Атрибуты изображения заносятся в регистр AH. Страница изображения
указывается в регистре BH. Для работы в графическом режиме установку
страницы осуществлять не следует.
____________________________________________________________
Номер функции Параметры
обслуживания
____________________________________________________________
AH = 8 BH = активная страница изображения
(для графического режима не требуется)
AL = символ ASCII, считанный из позиции,
указанной курсором
AH = атрибут текстового символа
____________________________________________________________
Функция обслуживания с кодом 9 предназначена для записи символа (или
нескольких его копий) и атрибута. Символ задается в регистре AL, а атрибут
текстового режима или цвет графического режима заносится в регистр BL.
Количество копий символов помещается в регистр CX.
Для текстовых режимов в регистре BH должна быть указана страница
изображения; графические режимы этого не требуют.
Символ и его атрибуты цвета записываются столько раз, сколько
требуется (начиная с текущей позиции курсора). Курсор при этом не
перемещается, запись производится в последующие позиции экрана. В
текстовом режиме при дублировании символов может быть организован переход
на следующую строку. В графическом режиме такая возможность отсутствует.
Описываемая функция обслуживания весьма полезна как в одиночном так и
групповом режимах. Групповой режим часто используется для оперативного
вывода пробелов или других повторяющихся символов (например,
горизонтальных линий). Если требуется сформировать символ в единственном
экземпляре, то следует установить счетчик в CX равным 1. Если его значение