2.2.2 Считываем положение и размер курсора
INТ 10h, АН = 03 - Считать положение и размер курсора
Ввод: | АН = 03 ВН = номер страницы |
Вывод: | DH, DL = строка и столбец текущей позиции курсора СН, CL = первая и последняя строки курсора |
Возвращает текущее состояние курсора на выбранной странице (каждая страница использует собственный независимый курсор).
2.3 Вывод символов на экран
Каждый символ на экране описывается двумя байтами - ASCII-кодом символа и байтом атрибута, указывающим цвет символа и фона, а также является ли символ мигающим.
Атрибут символа:
Бит 7: символ мигает (по умолчанию) или фон яркого цвета (если его действие было переопределено видеофункцией 10h).
Биты 6 - 4: цвет фона. Бит 3: символ яркого цвета (по умолчанию) или фон мигает (если его действие было переопределено видеофункцией 11h).
Биты 2 - 0: цвет символа.
Цвета кодируются в битах, как показано в таблице №2.3 .
Таблица №2.3 Атрибуты символов
Обычный цвет | Яркий цвет | |
000b | черный | темно-серый |
001b | синий | светло-синий |
010b | зеленый | светло-зеленый |
011b | голубой | светло-голубой |
100b | красный | светло-красный |
101b | пурпурный | светло-пурпурный |
110b | коричневый | желтый |
111b | светло-серый | белый |
2.3.1 Считываем символ и атрибут символа в текущей позиции курсора.
INT 10h, АН = 08 - Считать символ и атрибут символа в текущей позиции курсора
Ввод: | АН = 08 ВН = номер страницы |
Вывод: | АН = атрибут символа AL = ASCII-код символа |
2.3.1 Выводим символ с заданным атрибутом на экран
INT 10h, АН = 09 - Вывести символ с заданным атрибутом на экран
Ввод: | АН = 09 ВН = номер страницы AL = ASCII-код символа BL = атрибут символа СХ = число повторений символа |
С помощью этой функции можно вывести на экран любой символ, включая даже символы CR и LF, которые обычно интерпретируются как конец строки. В графических режимах СХ не должен превышать число позиций, оставшееся до правого края экрана.
Пример работы.
Пример № 2.2.1
. model tiny | ; модель памяти, в которой сегменты кода, данных и стека объединены. |
. code | ; сегмент кода, который содержит данные. |
org 100h | ; начало СОМ-файла |
begin: | ; метка начала кода программы |
mov ah,09 | ; помещаем номер функции DOS "вывод строки (9)" в регистр АН. |
mov bh,0 | ; устанавливаем номер страницы |
mov al, < ASCII-код символа > | ; строка 12; заносим в регистр al - любой ASCII-код символа |
mov bl, 00011111b | ; атрибут символа (белый на голубом) |
mov cx,555 | ; устанавливаем в счетчик кол-во выводимых символов |
int 10h | ; вызов прерывания DOS - вызов символа; |
ret | ; функция DOS "завершить программу" |
end begin | ; метка окончания кода программы |
2.3.2 Выводим символ с текущим атрибутом на экран
INT 10h, АН = 0Ah - Вывести
Ввод: | АН = 0Ah ВН = номер страницы AL = ASCII-код символа СХ = число повторений символа |
Эта функция также выводит любой символ на экран, но в качестве атрибута символа используется атрибут, который имел символ, находившийся ранее в этой позиции.
2.3.3 Выводим символ в режиме телетайпа
INT 10h, АН = 0Eh - Вывести символ в режиме телетайпа
Ввод: | АН = 0Eh ВН = номер страницы AL = ASCII-код символа |
Символы CR (0Dh), LF (0Ah), BEL (7) интерпретируются как управляющие символы. Если текст при записи выходит за пределы нижней строки, экран прокручивается вверх. В качестве атрибута используется атрибут символа, находившегося в этой позиции.
0 комментариев