Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика-Лабораторный практикум.doc
Скачиваний:
8
Добавлен:
19.04.2019
Размер:
868.35 Кб
Скачать

3.3.1 Кодирование данных в текстовых режимах

Каждое знакоместо экрана кодируется двумя соседними байтами – байтом символа и байтом атрибутов. Байт символа (четный) хранит код ASCII символа, выводимого на экран, а байт атрибутов (нечетный) задает цвет символа, цвет фона и некоторые другие параметры, определяемые настройками видеоадаптера.

7

6

5

4

3

2

1

0

b

R

G

B

i

R

G

B

Рисунок 3.1 - Формат байта атрибутов

Процесс вывода символа на экран дисплея реализуется по следующей схеме:

  • Видеоадаптер обращается к области данных BIOS (таблица 3.2) и определяет номер активной страницы и координаты курсора (x,y).

  • По этим данным вычисляется адрес машинного слова, описывающего в видеопамяти знакоместо, на которое указывает курсор. Адрес (смещение относительно начала видеостраницы) рассчитывается по простой формуле: 2*(x + y * m), где x – номер столбца символов (от 0 до 39 или до 79), y – номер строки (от 0 до 24), m – число символов в строке (40 или 80), определяемое выбранным видеорежимом. Например, левое верхнее знакоместо экрана (0,0) отображается на видеопамять с адресом (смещением) 0000, а правое нижнее знакоместо (79,24) – со смещением 0F9Eh.

  • По этому адресу видеоадаптер считывают из видеопамяти байт символа и байт атрибутов.

  • Байт символа (ASCII-код) используется далее для вычисления адреса расположения соответствующей битовой матрицы в таблице знакогенератора (п.3.4), а байт атрибутов – для формирования сигнала управления цветом изображения символа.

В соответствии с рассмотренной системой кодирования символов для текстовых режимов (2 байта на 1 знакоместо) каждая страница видеопамяти для режимов №0 и №1 потребует 2000 байтов (2 * 40 * 25), а для режимов №2 и №3 - 4000 байтов (2 * 80 * 25). Фактически размер видеостраниц устанавливается кратным целой степени числа 2 – соответственно 2 Кб и 4 Кб, причем последние 48 (96) байтов в каждой странице не используются.

Видеоадаптеры CGA, EGA и VGA поддерживают 8 страниц для 0-го, 1-го, 2-го и 3-го режимов. При этом нулевая страница располагается с адреса B800:000, а последующие – со смещением в 2 или 4 Кб относительно предыдущей страницы.

3.3.2 Кодирование данных в графических режимах

В графических режимах каждый блок видеопамяти описывает один пиксел, причем размер блока определяется количеством отображаемых цветов (или градаций серого цвета). Например, в монохромных (двухцветных) режимах №6 и 11h для описания пиксела достаточно одного бита, в 4-цветных режимах №4, №5 и 0Fh – двух битов, в 16-цветных режимах №0D, №0E, №10h и №12h – четырех битов, а в 256-цветном режиме №13h для описания пиксела потребуется один байт.

Таким образом, одним байтом видеопамяти может быть описано от 1 до 8 пикселов, причем старшие биты байта отвечают за «левые» пикселы, а младшие – за «правые». Например, цвет левого верхнего пиксела экрана кодируется: в режимах №6 и 11h - старшим битом, в режимах №4 и №5 - двумя старшими битами, а в режиме №13h – всеми восемью битами нулевого байта видеостраницы.

Размер видеостраницы определяется разрешающей способностью (количеством пикселов на экране) и размером блока, описывающего один пиксел. Например, в режимах №4 и №512 (4 цвета, разрешение 320 х 200) и в режиме №6 (2 цвета, разрешение 640 х 200) для одной видеостраницы потребуется 16000 байт (фактически – 16 Кб). В этих режимах объема видеопамяти достаточно для размещения двух страниц, однако адаптеры CGA, EGA и VGA поддерживают в этих режимах одну страницу с начальным адресом B800:0000. В режиме №13h (256 цветов, разрешение 320 х 200) одна страница занимает 64 Кбайт, то есть целый банк видеопамяти, располагающийся с адреса A000:0000.