Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Вывод на экран текста средствами BIOS
Много способов вывода текста на экран. Например, функция 09h DOS выводит текст до символа «$», или файл 40h, для которого длина выводимого сообщения. Однако возможности DOS весьма ограничены: DOS не имеет функций для изменения цвета выводимых символов и позиционирования курсора. Текст, выводимый DOS, это последовательность белых символов на черном экране. Прерывание 10h BIOS позволяет использовать все возможности видеосистемы компьютера и обладает большой скоростью.
Использование памяти BIOS
Режимы дисплея
Видеоадаптеры имеют в своем составе оперативную память, однако CPU может обратиться к ней, как к своей оперативной памяти, т.к. адаптер может поддерживать более одной страницы изображения, то не каждой странице имеется свое место для курсора. Когда BIOS переключает со страницы на страницу BIOS запоминает положение курсора на текущей странице.
Информация флагов оборудования определяет какой из адресов буфера будет использовать видеопрограмма BIOS.
5 | 4 биты 40:10 01 - цв. 40х25 10 - цв. 80х25 11 – моно?
Для монохромных в ЕS загружается 0В000h, а для цветных ОВ800h – это позволяет остальным программам BIOS работать без информации о том, какой адаптер работает в системе. Все ссылки к буферу делаются ЕS. В DOS практически нет для работы с цветным адаптером. Такие есть в BIOS. Все следующие функции запрашиваются посредством int 10h
Номер функции в АН Описание
Многие функции BIOS требуют задания атрибута выводимых символов. Атрибут символа занимает одна байта и определяет цвет символа и фона под ним, а также некоторые дополнительные характеристики изображения. Структура байта атрибутов
; Очистим экран, наложив на него черно-белое окно mov AH,06h; функция задания окна mov Al, 0; режим создания (не прокрутка)
mov BH,07h; атребут всех символов в окне – ч/б mov CH, 0; верхняя Y – коорд. mov CL, O; левая Х – коорд. mov DH, 24; нижняя Y – коорд. mov DI, 79; правая Х – коорд. Int 10h; прер. BIOS.
; Выведем на экран цветное окно mow AH,06h; функция задания окна mov Al, 0; режим создания (не прокрутки) mov BH, 1Eh; атрибут желтый по синему mov CH,5; верхняя Y – коорд. mov CI,40; левая Х – коорд. mov DH, 9; нижняя Y – коорд. mov DI, 75; правая Х – коорд. Int 10h; прер. BIOS
; Позиционируем курсор mov AH, 02h; функция позиционирования mov BH,0; видеостраница mov DH,7; строка mov DL, 45; столбец Int 10h
; Строку символов в окно без задания атрибутов (т.е. с атрибутами окна) mov CX, len1; длина строки mov BX,offset mes1; адрес строки символа mov AH,Oeh; функция выбора одного символа metka: mov Al, [Bx]; символ в Al Int 10h; сдвиг по строке Loop metka
; Строка вне окна, задевая атрибуты символов mov AH, 13h; функция вывода строки mov AL,0; режим (атрибут в В2) mov BH,0; видеостраница mov BL,04h; атрибут всех символов mov CX, len2; длина строки mov DH,16; начало позиции - строка mov DL,25; начало позиции - столбец push DS; настройка ЕS на наш сегм. pop ES; данные mov, BP offset mes2; ES:BP – выв. стр. Int 10h ; Позицируем курсор в начало посл. строки экрана mov AH, 02h; функция позиционирования mov BH,O; видеостраница mov DH,24; строка mov DL,0; столбец Int 10h
mes1 DB 16,’Cтрока, выведенная в окно’,17 len1 = $-mes1 mes2 DB 22,22,22,’Строка, выведенная вне окна’,22,22,22 len2 =$-mes2
Функция 06h в заданном месте экрана создает цветное окно. Если в созданные ранее окна выведен какой-либо текст, то c помощью этой функции этот текст прокручивается вверх (функция 07h прокручивает вниз). В Аl – число прокручиваемых строк. При этом текст, уход и край окна пропадает, а из-под противоположного края появляются пустые строки с заданными атрибутами. Для заполнения строк используются подсоединенные функции BIOS. Функция 02h – позиционирование курсора – место положения номер строки (0 – 24) и номер столбца (0…79). Восемь независимых курсоров – на каждую видеостраницу. Функция 02h – позиционирует курсор на любую страницу независимо, какая страница является активной. Для вывода на экран символов и символов строк используется функция 09h, OАh, OEh и 13h. Функция ОЕh – фильтрует упр. коды 07h (звук), 08h (возврат каретки на шаг), 10 (перевод строки) и 13 (возврат строки) – выполняя соответствующие им действия после вывода каждого символа курсор перемещается на следующую позицию, что дает возможность выводить в цикл целые строки. Атрибут, однако установить нельзя – символ приобретает атрибут той позиции, куда выводится. Функция 13h – вывод строк с указанием атрибутов как каждого символа в отдельности, так и всей строки. Четыре варианта выполняются в зависимости от Al. В режиме Al = 0 и 1 – атрибут символа указывается сразу для всей строки. В режиме 0 – курсор не смещается в процессе В режиме 1 – смещается на длину строки
В решении (2) и (3) атрибуты символов включаются в выводимую строку, в которой чередуются коды атрибутов и символов. Решение (2) отличается от (3) тем, что в 2 курсор не смещается, а в 3 смещается. В DХ- координаты начала вывода строки В СХ- длина ES:BP- адрес вывода строки Коды 17h,08h,0Ah,0Dh- как управляющие
строка вокно строка вне окна
code_seg segment assume cs:code_seg, ds:code_seg, ss:code_seg org 100h start: jmp begin line DB 2 column DB 10
sym DB 01h ; begin: ; mov AH,25h;функция заполнения вектора прерывания ; mov AL,65h; номер вектора ; mov DX,offset new_65h;смещение обработчика ; int 21h ; xor AX,AX mov ES,AX mov BX,65h shl BX,2 mov ES:[BX],offset new_65h mov ES:[BX+2],DS ; mov AL,0;режим создания окна gogo: int 65h mov AH,02h mov BH,0 mov DH,line mov DL,column int 10h
mov AH,0Ah mov AL,sym mov BH,0 mov CX,60 int 10h ; inc sym mov AL,line cmp AL,24 je follo inc line follo: mov AH,08h int 21h ; mov AL,1;режим прокрутки ; jmp gogo ; new_65h proc near mov AH,06h ; mov AL,1 mov BH,1Bh mov cx,0 mov DH,24 mov DL,79 int 10h iret ; new_65h endp code_seg ends end strart
Работа с видеобуфером.
Текстовый видеобуфер находится по адресу В800h. Рассмотрим распределение адресного пространства МП.
Первые 640Kб адресного пространства с адресами 00000h до 9FFFFh-отводятся под основную оперативную память, которую еще называют структурной. В начало этой области при начальной загрузке компьютера загружаются таблицы и программы DOS, которые занимают несколько десятков Кбайт. Оставшаяся память до 640 Кбайт свободна для загрузки любых системных или прикладных программ. В начале сеанса в память загружаются резидентные программы. Объем свободной памяти уменьшается.
Оставшиеся 384Kб адресного пространства распределяются так: E0000h-FFFFFh - основное ПЗУ BIOS. C0000h-CFFFFh - ПЗУ расширений BIOS для графических адаптеров и дисков.
Текстовый видеобуфер адаптера EGA включает 8 видеостраниц и занимает 32Кб от сегментного адреса В800h. Начинается он с видеостраницы 0, адрес которой В8000h. Объем видеостраниц 4Kб.
При включении компьютера активной (видимой) становится видеостраница 0. Выводить текст можно на любую страницу, в том числе и невидимую. Смена видеостраниц осуществляется вызовом функции 05 прерывания 10h BIOS. Любой код, записываемый в видеобуфер, сразу же отображается на экране в виде изображения цветного символа на одном из знакомест. Каждый символ занимает в буфере поле из 2-х байт. Младшие (четные) байты отводятся под коды,отображаемых символов, старшие (нечетные) байты под их атрибуты.
B800h:00 B800h:01 B800h:02 B800h:03 B800h:04…
Знакоместо 0 знакоместо 1 знаком...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 820; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.0.25 (0.076 с.) |