Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Организация видеопамяти






 

В текстовом режиме в видеопамяти может храниться до 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

C0 A0 C1 A1 ............... C79 A79

 

Строка1

C0 A0 C1 A1 .............. C79 A79

........

........

Строка 24

C0 A0 C1 A1   С79 A79

 

Рис.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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.