Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Рисуем пиксел в графическом режиме




Графические режимы могут быть разбиты на шесть групп в зависимости от количества бит, отводимых каждому пикселу:

1 бит/пиксел, 2 цвета, одна битовая плоскость:

CGA mode 6 разрешение 640*200

2 бит/пиксел, 4 цвета, одна битовая плоскость:

CGA mode 4 разрешение 320*200

4 бит/пиксел, 16 цветов, четыре битовых плоскости:

EGA mode 0Dh разрешение 320*200

EGA mode 0Eh разрешение 640*200

EGA mode 10h разрешение 640*350

VGA mode 12h разрешение 640*480

VESA mode 102h разрешение 800*600

VESA mode 104h разрешение 1024*768

VESA mode 106h разрешение 1280*1024

8 бит/пиксел, 256 цветов, одна битовая плоскость:

VGA mode 13h разрешение 320*200

VESA mode 100h разрешение 640*400

VESA mode 101h разрешение 640*480

VESA mode 103h разрешение 800*600

VESA mode 105h разрешение 1024*768

16 бит/пиксел, 65536 цветов, одна битовая плоскость(существуют также 32768-цветные режимы):

VESA mode 111h разрешение 640*480

VESA mode 114h разрешение 800*600

24 бит/пиксел, 16777216 цветов, одна битовая плоскость:

VESA mode 112h разрешение 640*480

Исключая 4-битные режимы пикселы в памяти располагаются на одной плоскости (plane), т.е., если координаты пиксела (x,y), то адрес, по которому располагается этот пиксел в памяти может быть вычислен как
Address = LineLength*y + Bits*x/8
где LineLength - количество байтов, занимаемых каждой строкой пикселов, а Bits - количество бит, занимаемым пикселом.

Исключениями являются режимы CGA номер 4 и 6, у которых четные и нечетные линии расположены в различных сегментах памяти.

В шестнадцатицветных режимах экранная память разделяется на 4 битовые плоскости. Каждый бит значения цвета пиксела расположен на своей плоскости. Адрес байта, хранящего пиксел с координатами x,y можно вычислить как
Address = LineLength*y + x/8
где LineLength - число байтов, занимаемых одной строкой.

Рисование пиксела с координатами x,y в 16-цветных режимах подразумевает установку бита во всех четырех плоскостях. Активная в данный момент плоскость выбирается записью в соответствующие порты видеокарты.

Режимы CGA, EGA и VGA поддерживаются всеми стандартными BIOS. Переключение в эти режимы обычно осуществляется простым вызовом функций BIOS.

Pixel$

Во всех режимах VGA следующая процедура Pixel$ может нарисовать пиксел. Нужно отметить, что процедура достаточно медленная, т.к. используются вызовы функций BIOS.

Pixel$ proc

;Рисует пиксел во всех режимах VGA.

;Входные данные: x в AX, y в BX, цвет в CX

;Выходные данные: регистры не сохраняются

mov DX,BX;строка y

xchg AX,CX;CX - колонка x, AL - цвет

sub BH,BH;0 страница

mov AH,0Ch;выводим пиксел

int 10h

ret

Pixel$ endp

Самый интересный режим VGA - это режим 13h с возможностью отображения 256 цветов и разрешением 320*200. Номер цвета 0...255 соответствуют значениям в палитре, где все цвета представлены в виде определенных сочетаний красной, зеленой и синей компонент. Следующая процедура VGApxl$ рисует пиксел в этом режиме. Она работает достаточно быстро, однако существуют еще более быстрые варианты.

;данные:

VGA_seg dw 0A000h;сегмент памяти экрана VGA

 

VGApxl$ proc

;Рисует пиксел в режиме VGA 13h.

;Входные данные: x в AX, y в BX, цвет в CX

;Выходные данные: регистры AX и BX не сохраняются

xchg BH,BL;умножаем y на 256, BL=0

add AX,BX;AX = x+256y

shr BX,1;делим 256y на два

shr BX,1;BX = 256y/4 = 64y

add BX,AX;BX = x+320y

mov AX,ES;сохраняем значение ES

mov ES,VGA_seg;сегмент памяти экрана VGA

mov ES:[BX],CL;выводим байт на экран

mov ES,AX;восстанавливаем значение регистра ES

ret

VGApxl$ endp





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 432 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2538 - | 2391 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.