Меню сайта

Урок 171. Текст в графических режимах

Одной из важных возможностей программыBIOS фирмы IBM является
— — — способность показывать на экране текстдаже тогда, когда цветной
— — — графический адаптер работает в графическомрежиме. — — — — — Это
— — — осуществляется с помощью таблицы образовсимволов по адресу
— — — 0FFFFH:0FA6EH. — Эта таблица содержит образы символов для первых 128
— — — символов. -Если нужно, пользователь может загрузить в вектор
— — — прерывания 01FH указатель на таблицуобразов оставшихся 128
— — — символов.

— — — — — Как видно в листинге BIOS, когда цветнаяграфическая плата
— — — находится в графическом режиме, программазаписи символа переходит
— — — к специальной части под названиемGRAPHICS_WRITE. Эта часть
— — — программы извлекает образ символа изтаблицы в ПЗУ или из таблицы
— — — пользователя и помещает точки всоответствующие места памяти
— — — дисплея. В этой программе есть несколькоинтересных мест. В режиме
— — — среднего разрешения программа BIOSрасширяет 8-битовый по ширине
— — — образ символа в 16-битовый. ПодпрограммаS21 (EXPAND_BYTE) помещает
— — — в — — — регистр AL строку образа символа ирасширяет ее до полного
— — — слова, возвращаемого в регистре AX.

— — — — — Программа записи символов должна такжеучитывать адресацию
— — — четных и нечетных полей графической платы.В подпрограмме
— — — GRAPHICS_WRITE происходит запись различныхстрок образов в байты,
— — — расположенные на расстоянии 2000H друг отдруга. Это лучше всего
— — — видно в подпрограмме записи для режима свысоким разрешением. В
— — — этом режиме BIOS может записывать символысо строками образа прямо
— — — в буфер дисплея. Но вместо использованиякоманды REP MOVSB для
— — — пересылки восьми байт используется циклдля обслуживания четных и
— — — нечетных полей. Сначала BIOS записываетчетное поле с помощью
— — — команды STOSB. Затем записывается нечетноеполе с помощью команды
— — — MOV по адресу [DI+2000H-1].

— — — — — Другая возможность программ записисимволов — запись символов
— — — на экран с помощью функции»исключающее или». Это обычный способ
— — — выдачи на экран символов, которые затемнадо удалить. Когда
— — — программа BIOS записывает символ надисплей при включенном бите
— — — XOR, он берет функцию «исключающееили» от содержимого буфера и
— — — образа символа. Обычно это дает символ вчитабельной форме, но его
— — — фактический вид зависит от фона, накотором он записывается. Но
— — — когда программа BIOS снова записываетсимвол на то же место, опять
— — — используя функцию XOR, символ исчезает, иэкран возвращается к
— — — своему первоначальному виду. Этот методпредпочтительнее того, при
— — — котором записывается символ, а затемповерх него выдается пробел.
— — — Запись пробела не восстановит экран квиду, который он имел до
— — — записи символа. Вы можете очень эффективноиспользовать эту
— — — возможность записи со стиранием в случаях,когда вам надо выдать
— — — временное сообщение на экран.

— — — — — Программа чтения символа работаетаналогично, когда дисплей
— — — находится в графическом режиме- BIOSизвлекает образ символа из
— — — дисплейного буфера, а затем сравниваетэтот образ с образами
— — — таблицы символов. Когда она находитсимвол, это отвечает, что по
— — — данному адресу находится найденный символ.Эта программа работает
— — — только в случае точного соответствия, такчто если часть другой
— — — графической картинки вторгнется в позициюсимвола, BIOS не сможет
— — — распознать символ. Более того, этапрограмма позволяет программисту
— — — считать графический режим идентичнымтекстовому режиму. Пока
— — — программа использует для взаимодействия сдисплеем BIOS, она может
— — — работать с текстом независимо от режимаработы дисплея.

— — — — — Вспомним теперь, что и программы сдвигаизображения тоже имеют
— — — специальные части для обслуживанияграфических режимов. Если вы
— — — вернетесь к соответствующей части BIOS, тообнаружите, что она
— — — определяет окна сдвига в графическомдисплее и выполняет сдвиг
— — — способом, который идентичен сдвигу втекстовом режиме. Сдвиг в
— — — графических режимах происходит несколькомедленне, чем в текстовом — — — режиме, в первую очередь из-за того, чтопрограмма должна переслать
— — — все 16000 байт, а не 2000 или 4000 байт,нужных в текстовом режиме.
— — — Это дает 4- — 8-кратное увеличение временисдвига, и оно становится
— — — заметно больше.

— — — — — Способность BIOS обрабатывать символы вграфических режимах
— — — дает большие возможности. Становитсядостаточно простым нарисовать
— — — график или картинку, а затем использоватьсимволы для пометки
— — — отдельных частей рисунка. Кроме того, выможете отвести часть
— — — экрана под графическое изображение, адругое окно использовать для
— — — текста. В это окно вы можете заноситьобычный текст с помощью
— — — программ символьного вывода, а такжесдвигать его. В других случаях
— — — вы можете записывать символы на дисплей,не обращая внимания на его
— — — текущий режим. BIOS сама определит, вкаком режиме находится
— — — дисплей, и правильно запишет символы.

Категория: Программирование на Ассемблере | Дата: 26.02.13

Меню раздела
Блок