Глава 4. Вывод на терминал.
Раздел 2. Управление курсором.
4.2.6 Создание альтернативных типов курсора.
Все прерывания операционной системы, связанные с выводом на экран, используют курсор. Вы можете изменить форму курсора с помощью техники показанной в {4.2.4} или сделать курсор невидимым {4.2.3}. Возможны альтернативные типы курсора, когда вывод на экран осуществляется с помощью метода прямого отображения в память {4.3.1}. При этом "истинный" курсор выключается, поскольку он не будет адресовать символы в определенную позицию видеобуфера. Вместо этого создается "фальшивый" курсор с помощью байта атрибутов.
Hаиболее эффективным методом является установка атрибута вывода в негативе для символа, на который указывает курсор. Для черно-белого экрана для этого атрибута следует использовать код ASCII 112. Другой способ - заставить символ, на который указывает курсор мигать. В этом случае надо просто добавить 128 к текущему значению атрибута, чтобы символ начал мигать, и вычесть 128, чтобы прекратить мигание. Третий способ - установить для символа режим подчеркивания (используя код ASCII 1). И, наконец, в программах использующих командную строку можно рассмотреть возможность использования специального графического символа, который следует за последним символом командной строки, такого как стрелки выводимые кодами ASCII 17 или 27. Отметим, что когда программа получает ввод в нескольких режимах, то Вы можете помочь идентифицировать текущий режим за счет особого типа курсора.
Hизкий уровень.
;---процедура перемещения курсора на одну позицию вправо | |
CURSOR_RIGHT: MOV BX,CURSORPOSITION | ;получение позиции |
INC BX | ;указываем на атрибут символа |
MOV AL,FORMERATTRIBUTE | ;берем сохраненный атрибут |
MOV ES:[BX],AL | ;восстанавливаем его |
INC BX | ;указываем на следующий символ |
MOV CURSORPOSITION,BX | ;сохраняем его смещение |
MOV AL,ES:[BX]+1 | ;получаем атрибут нового символа |
MOV FORMERATTRIBUTE,AL | ;сохраняем его |
MOV AL,112 | ;помещаем атрибут вывода в негативе |
MOV ES:[BX]+1,AL | ;засылаем его для следующего символа |
<~-4.2.5 Чтение/сохранение/восстановление позиции курсора.
Содержание
Раздел 3. Вывод символов на экран.-~>