![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Организация видеопамяти
В текстовом режиме в видеопамяти может храниться до 4 видеостраниц или экранов с номерами от 0 до 3. Переключение видеостраниц (т.е. вывод их содержимого на экран) осуществляется средствами BIOS. Большинство программ, в то числе и DOS, работают с 0 видеостраницей. В каждой видеостранице помещается равно один экран в 25 строк по 80 символов в каждой, причем каждый символ отображается двумя байтами - байтом с кодом символа и байтом с атрибутом символа. Порядок размещения этих кодов показан на рис. 2.3. Обозначим: адрес первой ячейки - SEGM: 0000H, где SEGM-двухбайтовое значение сегмента видеопамяти; С0 и А0 -соответственно код символа в строке 0 и атрибут символа в строке 0 и т.д. Для формирования текстового изображения на экране из видеопамяти последовательно считывается информация, начиная с адреса SEGM: 0000H. Считывание осуществляется непрерывно и циклически. Этот процесс называется сканированием памяти. По коду символа из знакогенератора выбирается соответствующая матрица для формирования изображения символа на экране. Первый символ (символ с номером С0 в строке 0) появляется в левом верхнем углу экрана с атрибутом А0. Следующие 2 байта видеопамяти изображают следующий символ справа от него и т. д. Значение смещения (SM) ячейки видеопамяти для любого символа, размещаемого в произвольной позиции (NS-строка, NK-колонка) на экране определяется по формуле:
SM = 2 * (NS * 80 + NK).
Видеостраница 0 Строка 0 SEGM: 0000
Строка1
........ ........ Строка 24
Рис.2.3. Размещение информации в видеопамяти в текстовом режиме
Для видеосистем ПК разработан ряд стандартных видеорежимов. При работе в оболочке Far manadger видеосистема по умолчанию устанавливается в текстовый цветной режим № 3 с количеством цветов равным 16 и количеством знакомест 80 х 25. Это режим работы видеоадаптера CGA, для которого видеопамять имеет емкость 16 Кбайт и начинается с адреса В800: 0000. Обычно в программах, работающих напрямую с видеопамятью, регистр DS либо ES микропроцессора загружается значением сегмента видеопамяти, а остальная часть программы работает со смещениями в видеопамяти. Задание на лабораторную работу
В этой лабораторной работе необходимо написать программу, которая бы прямым доступом в видеопамять реализовала бы эффект " бегущей буквы" по экрану, например, движение буквы по верхней строке экрана. Алгоритм этой программы может быть, к примеру, следующий: 1. Инициализация ES, DI, CX. 2. Заполнение 0 страницы видеопамяти одинаковыми символами (например, кодом буквы " А" - 128 (80h) и одинаковыми атрибутами, причем такими, что бы цвет символа в них совпадал бы с цветом фона, т.е. символ был невидимым. Это легче всего сделать с помощью команды STOSW (см. приложение 2.1). Коды некоторых символов приведены в приложении 2.2. 3. У символа на строке 0 и колонке 0 меняем атрибут на любой видимый, делаем задержку, после нее изменяем атрибут у следующего символа в строке и возвращаем старое значение атрибута предыдущему символу, т.е. гасим его. Эти действия продолжаем до 79 колонки 0-й строки. 4. Выход из программы. Таким образом, просто " зажигая" и " гася" записанные в видеопамять байты символов, мы получаем эффект бегущей по экрану буквы.
Ваpианты заданий на лабоpатоpную pаботу: Ваpиант 1. Движение символа по периметру экрана, начиная с позиции (0, 0) слева напpаво. Ваpиант 2. Движение символа по периметру экрана, начиная с позиции (0, 0) сверху вниз. Ваpиант 3. Движение символа по периметру экрана, начиная с позиции (24, 79) справо налево. Ваpиант 4. Движение символа по периметру экрана, начиная с позиции (24, 0) слева напpаво. Ваpиант 5. Движение символа по периметру прямоугольника с позициями вершин (0, 40), (24, 40), (24, 79), (0, 79). Ваpиант 6. Движение символа по периметру прямоугольника с позициями вершин (10, 0), (24, 0), (24, 50), (10, 50). Ваpиант 7. Движение символа по периметру прямоугольника с позициями вершин (0, 30), (15, 30), (15, 79), (0, 79). Ваpиант 8. Движение символа по периметру прямоугольника с позициями вершин (0, 0), (0, 40), (20, 40), (20, 0).
Во время отладки программы необходимо поэкспериментировать с цветом символа и цветом фона.
Приложение 2.1
|