Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP_MET_2.DOC
Скачиваний:
13
Добавлен:
02.05.2019
Размер:
689.66 Кб
Скачать

1.5.Графические видеорежимы

      1. Работа со стандартными графическими режимами

Функция 0 прерывания BIOS 10h позволяет переключаться не только в текстовые режимы, описанные ранее, но и в некоторые графические. В этом разделе рассматриваются стандартные видеорежимы, т. е. поддерживаемые всеми современными видеоадаптерами (см. табл. 3).

Старые видеоадаптеры CGA поддерживают графические режимы с номерами от 4 до 6, адаптеры EGA дополнительно могут работать с режимами 0Dh - 10h. Видеорежимы 11h, 12h и 13h поддерживаются адаптерами, начиная с VGA. Дальнейшее развитие видеоадаптеров (Super VGA) не ограничивалось жесткими рамками стандартов, поэтому каждый производитель мог по-своему улучшать стандартный VGA-режим.

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

INT 10h, АН = 0Ch Вывести точку на экран

Ввод: АН = 0Сh

ВН = номер видеостраницы (игнорируется для режима 13h, поддерживающего только одну страницу)

DX = номер строки (координата точки по оси Y)

СХ = номер столбца (координата точки по оси X)

AL = номер цвета (для режимов 10h и 11h, если старший бит 1, номер цвета точки на экране будет результатом операции «исключающее ИЛИ»)

Вывод: Никакого

Так называемые строки и столбцы в графическом режиме представляют собой наборы точек, имеющих одинаковое значение координаты по оси Y и Х соответственно. Строки нумеруются сверху вниз, столбцы — слева направо, что соответствует координатным осям следующего вида (см. рис. 2):

Рис. 2. Координатные оси адресуемой плоскости экрана

Таблица 3. Основные графические режимы

Номер режима

Разрешение

Число цветов

Адаптер

Сегментный адрес видеопамяти

4h

320х200

4

CGA

0B800h

5h

320х200

4

CGA

0B800h

6h

640х200

2

CGA

0B800h

0Dh

320х200

16

EGA

0A000h

0Eh

640х200

16

EGA

0A000h

0Fh

640х350

3

EGA

0A000h

10h

640х350

4 или 16

EGA

0A000h

11h

640х480

2

VGA

0A000h

12h

640х480

16

VGA

0A000h

13h

320х200

256

VGA

0A000h

INT 10h, АН = 0DhСчитать точку с экрана

Ввод: АН = 0Dh

ВН = номер видеостраницы (игнорируется для режима 13h, поддерживающего только одну видеостраницу)

DX = номер строки

СХ = номер столбца

Вывод: AL = номер цвета

Рассмотрим пример вывода на экран горизонтального отрезка:

mov ax, 0013h ; переведем экран в графический режим

int 10h

; подготовимся к выводу точки

mov al, 0Eh ; желтым цветом

mov bh, 0 ; (видеостраница - 0)

mov cx, 100 ; Х-координата начала отрезка

mov dx, 100 ; Y-координата

next: mov ah, 0Ch ; функция вывода

int 10h ; вывод

inc cx ; увеличим Х-координату очередной точки

cmp cx, 220 ; сравним с максимальным значением

jbe next ; пока меньше либо равно, повторять цикл

По окончании работы с графическим режимом обычно требуется вернуть исходный режим (обычно текстовый режим 3). Определить номер текущего видеорежима можно, прочитав значение байтовой ячейки по адресу 0040h:0049h.

Вывод цветного изображения на экран в режиме 13h также можно выполнять простым копированием соответствующих данных в видеопамять. В этом видеорежиме каждый байт области памяти, начинающейся с адреса A000h:0000h, соответствует одной точке на экране, а значение, которое может принимать этот байт (0 - 255), соответствует номеру цвета этой точки (цвета, которые соответствуют этим номерам, могут быть перепрограммированы с помощью видеофункции 10h BIOS).

В видеорежимах 11h и 12h каждый бит соответствует одной точке на эк­ране, так что простым копированием в видеопамять можно получить только черно-белое изображение (для вывода цветного изображения в режиме 12h необходимо перепрограммировать видеоадаптер).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]