Вывод на экран средствами 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!