- •2.2. Структура видеоадаптера.
- •2.3. Графические режимы работы видеоадаптера vga и организация видеопамяти.
- •Линейная организация видеопамяти.
- •Плоскостная организация видеопамяти.
- •2.4. Понятие палитры. Организация палитры ega, vga.
- •2.5. Видеостраницы.
- •2.7. Нестандартные режимы видеоадаптера vga.
- •2.8. Регистры контроллера элт.
- •Регистры синхронизатора.
- •2.10. Формирование изображения.
- •Постановка задачи и задания на лабораторную работу.
- •Задание 1.
- •Задание 2.
- •Приложение.
- •Int 10h ; средствами bios
- •ClearPage(0);
- •ClearPage(1);
- •PutPixel(I,1,I,0);
- •PutPixel(I,1,I,1);
- •DrawPenta(X,y,с,k,0); ; начальный пятиугольник
- •SetPage(Page);
- •DrawPenta(X,y,с,k,Page);
- •SetPage(Page); ; установка активной страницы
- •DrawPenta(...,1-Page); ; стирание предыдущ. Пятиуг.
- •; На скрытой странице, т.Е.
- •; Рисование черным цветом
- •Конец цикла
- •Asm ; возврат в текстовый режим
О
Set320x200x256; for
i:=0 to 255 do ; вывод 256 цветов в 0 строке begin end; x:= ;
начальные координаты y:= Page:=0;
; активная страница
цикл
i:=1 до <кол-во шагов>
x:= ;
изменение координат y:= Page:=1-Page; ;
изменение активной страницы k:=k(i) ;
k – функция от i
mov
ax, 3 int
10h end;ClearPage(0);
ClearPage(1);
PutPixel(I,1,I,0);
PutPixel(I,1,I,1);
DrawPenta(X,y,с,k,0); ; начальный пятиугольник
SetPage(Page);
DrawPenta(X,y,с,k,Page);
SetPage(Page); ; установка активной страницы
DrawPenta(...,1-Page); ; стирание предыдущ. Пятиуг.
; На скрытой странице, т.Е.
; Рисование черным цветом
Конец цикла
Asm ; возврат в текстовый режим
Задание 2. Для выполнения задания требуется уметь производить операции чтения/записи нескольких регистров таблицы цветовой палитры. Ниже приодятся необходимые функции BIOS.
Установка нескольких регистров таблицы цветов (регистров ЦАП).
Используется функция BIOS 10h, подфункция 12h.
Функция производит запись 18-битовой величины в несколько последовательно расположенных регистров таблицы цветов.
Регистры на входе: AH 10h
AL 12h
BX номер первого регистра таблицы цветов (0-255)
CX количество регистров для записи (1-256)
ES:DX адрес таблицы цветов
Регистры на выходе: не используются.
Таблица цветов содержит по 3 байта (по байту на каждую из компонент RGB-разложения цвета) на один регистр таблицы цветов. В каждом байте значимыми являются только 6 младших битов.
Н
var regs:Registers; RGBbuffer:
array [1..256,1..3] of byte; begin
regs.AH:=$10; regs.AL:=$12; regs.BX:=0; regs.CX:=$FF;
regs.ES:=Seg(RGBbuffer);
regs.DX:=Ofs(RGBbuffer); int($10,regs); {данные
записаны в таблицу цветов из буфера
RGBbuffer} end;
Чтение нескольких регистров таблицы цветов (регистров ЦАП).
Используется функция BIOS 10h, подфункция 17h.
Функция выполняет чтение 18-битовой значений из нескольких последовательно расположенных регистров таблицы цветов.
Регистры на входе: AH 10h
AL 17h
BX номер первого регистра таблицы цветов (0-255)
CX количество регистров для чтения (1-256)
ES:DX адрес буфера для таблицы цветов
Регистры на выходе: ES:DX данные, прочитанные из таблицы цветов.
Таблица цветов содержит по 3 байта (по байту на каждую из компонент RGB-разложения цвета) на один регистр таблицы цветов. В каждом байте значимыми являются только 6 младших битов.
Н
var regs:Registers; RGBbuffer:
array [1..256,1..3] of byte; begin regs.AH:=$10; regs.AL:=$17; regs.BX:=0; regs.CX:=$FF;
regs.ES:=Seg(RGBbuffer);
regs.DX:=Ofs(RGBbuffer); int($10,regs); {данные
прочитаны из таблицы цветов в буфер
RGBbuffer} end;