Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

Int 10h, можно управлять вертикальным размером курсора: биты 4-0 в

регистре CH для верхней линии сканирования, а биты 4-0 в регистре CL - для

нижней. Можно установить любой pазмер курсора по вертикали: от 0 до 13 для

монохромных и EGA монитоpов и от 0 до 7 для большинства цветных мониторов.

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

линии сканирования:

MOV AH,01 ;Установить размер курсора

MOV CH,00 ;Верхняя линия сканирования

MOV CL,13 ;Нижняя линия сканирования

Int 10h ;Вызвать bios

В результате выполнения этих команд курсор превратится в сплошной

мигающий прямоугольник. Можно установить любой размер курсора между

верхней и нижней границами, например, 04/08, 03/10 и т.д. Курсор сохраняет

свой вид, пока программа не изменит его. Использование размеров 12/13 (для

моно) и 6/7 (для цвета) переводит курсор в его нормальный вид.

AH=02: Установка позиции курсора. Эта функция устанавливает курcор в

любую позицию на экране в соответствии с координатами cтроки и столбца.

Номер страницы обычно равен 0, но может иметь значение от 0 до 3 при 80

столбцах на экране. Для установки позиции курсора необходимо занести в

регистр AH значение 02, в регистр BH номер страницы и в регистр DX

координаты строки и столбца:

MOV AH,02 ;Установить положение курсора

MOV BH,00 ;Страница 0

MOV DH,строка ;Строка

MOV DL,столбец ;Столбец

Int 10h ;Вызвать bios

AH=03: Чтение текущего положения курсора. Программа может определить

положение курсора на экране (строку и столбец), а также pазмер курсора,

следующим образом:

MOV AH,03 ;Определить положение курсора

MOV BH,00 ;Установить страницу 0

Int 10h ;Вызвать bios

После возврата регистр DH будет содержать номер строки, а регистр DL

- номер столбца. В регистре CH будет верхняя линия cканирования, а в

регистре CL - нижняя.

AH=04: Чтение положения светового пера. Данная функция используeтся в

графическом режиме для определения положения светового пеpа.

AH=05: Выбор активной страницы. Новая страница устанавливается для

цветных текстовых режимов от 0 до 3. Для режима 40 х 25 возможно

устанавливать до 8 страниц (от 0 до 7), а для режима 80 х 25 - до 4

страниц (от 0 до 3).

MOV AH,05 ;Установить активную страницу

MOV AL,страница ;Номер страницы

Int 10h ;Вызвать bios

AH=06: Прокрутка экрана вверх. Когда программа пытается выдать текст

на строку ниже последней на экране, то происходит переход на верхнюю

строку. Даже если с помощью прерывания будет специфициpован нулевой

столбец, все равно предполагается новая строка, и нижние строки на экране

будут испорчены. Для решения этой проблемы используется прокрутка экрана.

Ранее код 06 использовался для очистки экрана. В текстовом режиме

установка в регистре AL значения 00 приводит к полной прокрутке вверх

всего экрана, очищая его пробелами. Установка ненулевого значения в

регистре AL определяет количество строк прокрутки экрана вверх. Верхние

строки уходят с экрана, а чистые строки вводятся снизу. Следующие команды

выполняют прокрутку всего экрана на одну строку:

MOV AX,0601H ;Прокрутить на одну строку вверх

MOV BH,07 ;Атрибут: нормальный, черно-белый

MOV CX,0000 ;Координаты от 00,00

MOV DX,184FH ; до 24,79 (полный экран)

INT 10H ;Вызвать BIOS

Для прокрутки любого количества строк необходимо установить

соответствующее значение в регистре AL. Регистр BH содержит атрибут для

нормального или инвертированного отображения, мигания, установки цвета и

т.д. Значения в регистрах CX и DX позволяют прокручивать любую часть

экрана. Ниже объясняется стандартный подход к прокрутке:

1. Определить в элементе ROW (строка) значение 0 для установки

строки положения курсора.

2. Выдать текст и продвинуть курсор на следующую строку.

3. Проверить, находится ли курсор на последней строке (CMP

ROW,22).

4. Если да, то увеличить элемент ROW (INC ROW) и выйти.

5. Если нет, то прокрутить экран на одну строку и, используя ROW

переустановить курсор.

AH=07: Прокрутка экрана вниз. Для текстового режима прокрутка экрана

вниз обозначает удаление нижних строк и вставка чистых строк сверху.

Регистр AH должен содержать 07, значения остальных регистpов аналогичны

функции 06 для прокрутки вверх.

AH=08: Чтение атрибута/символа в текущей позиции курсора. Для чтения

символа и байта атрибута из дисплейного буфера, как в текстовом, так и в

графическом режиме используются следующие команды:

MOV AH,08 ;Запрос на чтение атр./симв.

MOV BH,00 ;Страница 0 (для текстового реж.)