Вывод на экран средствами BIOS



Средства вывода на экран реализуются драйвером BIOS, программное обращение к которому осуществляется с помощью прерывания 10h. При работе в текстовом режиме обычно используются следующие функции драйвера:

02h - установить позицию курсора;

03h - прочитать позицию курсора;

05h - установить видеостраницу;

06h - прокрутить вверх экран;

07h - прокрутить вниз экран;

08h - прочитать символ и атрибут в позиции курсора;

09h - вывести символ и атрибут в позицию курсора;

0Ah - вывести символ в позицию курсора;

0Eh - вывести символ в режиме телетайпа;

10h, подфункция 10h - переключить бит мерцание/яркость;

13h - вывести строку в режиме телетайпа.

 

Установка позиции курсора

AH = 02. Эта функция устанавливает курсор в любую позицию на экране в соответствии с координатами строки и столбца. Номер страницы обычно равен 0, но может иметь значение от 0 до 3 при 80 столбцах на экране:

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

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

MOV DH, строка   ; Номер строки

MOV DL, столбец  ; Номер столбца

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

Чтение текущей позиции курсора

AH = 03. Прикладная программа может определить положение курсора на экране (строку и столбец) следующим образом:

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

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

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

После возврата из прерывания регистр DH будет содержать номер стоки, а регистр DL - номер столбца.

Выбор активной страницы

AH = 05. В текстовом режиме с форматом экрана 80х25 устанавливается до 4 страниц (от 0 до 3), а для формата 40х25 – до 8 страниц (от 0 до 7):

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

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

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

Прокрутка экрана вверх

AH = 06. С помощью этой функции в заданном месте экрана создаются цветные прямоугольные окна заданного размера. Если в созданные ранее окна выведен какой-либо текст, то с помощью этой функции его можно прокручивать вверх. При этом верхние строки уходят с экрана, а чистые строки вводятся снизу. Для прокрутки любого количества строк необходимо установить соответствующее значение в регистре AL. Регистр BH содержит атрибут для символов.

Значения в регистрах CX и DX определяют координаты левого верхнего и правого нижнего углов сдвигаемого окна соответственно.

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

MOV AH,06h        ; Прокрутить экран вверх

MOV AL,01    ; На одну строку

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

MOV CH,00    ; Номер строки левого верхнего угла

MOV CL,00    ; Номер столбца левого верхнего угла

 MOV DH,18h   ; Номер строки нижнего правого угла

MOV DL,4Fh   ; Номер столбца нижнего правого угла

INT 10h      ; Вызов BIOS

Прокрутка экрана вниз

AH = 07. Для текстового режима прокрутка экрана вниз означает удаление нижних строк и вставку чистых строк сверху. Регистр AH должен содержать 07, значения остальных регистров аналогичны функции 06 для прокрутки вверх.

Чтение символа и атрибута в текущей позиции курсора

Для чтения символа и байта-атрибута из видеопамяти используются следующие команды:

MOV AH,08 ; Запрос на чтение символа и атрибута

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

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

Данная функция возвращает в регистре AL значение символа, а в регистре AH – его атрибут.

Вывод символа и атрибута в текущую позицию курсора

AH = 09h. Для вывода на экран символов с их атрибутами можно воспользоваться следующими командами:

MOV AH,09h    ; Функция вывода

MOV AL,символ ; Выводимый символ

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

MOV BL,атрибут ; Атрибут

MOV CX,повторение ; Число повторений

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

В регистр AL должен быть помещен выводимый символ. Значение в регистре CX определяет число повторений символа на экране. Вывод на экран последовательности различных символов требует организации цикла. Кроме того, при выводе каждого символа необходимо дополнительно передвигать курсор в следующий столбец.

Вывод символа в текущую позицию курсора

AH = 0Ah. Эта функция аналогична функции 09, с той лишь разницей, что функция 0A не устанавливает атрибут.

MOV AH,0Ah    ; Функция вывода

MOV AL,символ ; Выводимый символ

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

MOV CX,повторение ; Число повторений

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

Вывод в режиме телетайпа

AH = 0E. Для выполнения этой функции необходимо установить в регистре AH шестнадцатиричное значение 0E, в регистр AL поместить выводимый символ и номер страницы – в регистр BH. Данная функция автоматически передвигает курсор, переводит символы на следующую строку, выполняет прокрутку экрана и сохраняет текущие атрибуты.


Дата добавления: 2018-04-04; просмотров: 700; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!