Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание к лабе #2 / kg_lr02 / Методичка к ЛР #2.doc
Скачиваний:
23
Добавлен:
04.04.2013
Размер:
260.61 Кб
Скачать

О

Set320x200x256;

ClearPage(0);

ClearPage(1);

for i:=0 to 255 do ; вывод 256 цветов в 0 строке

begin

PutPixel(I,1,I,0);

PutPixel(I,1,I,1);

end;

x:= ; начальные координаты

y:=

Page:=0; ; активная страница

DrawPenta(X,y,с,k,0); ; начальный пятиугольник

SetPage(Page);

цикл i:=1 до <кол-во шагов>

x:= ; изменение координат

y:=

Page:=1-Page; ; изменение активной страницы

k:=k(i) ; k – функция от i

DrawPenta(X,y,с,k,Page);

SetPage(Page); ; установка активной страницы

DrawPenta(...,1-Page); ; стирание предыдущ. Пятиуг.

; На скрытой странице, т.Е.

; Рисование черным цветом

Конец цикла

Asm ; возврат в текстовый режим

mov ax, 3

int 10h

end;

сновная программа на псевдокоде.

Задание 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;

иже приводится фрагмент программы на Pascal’е, в котором производится запись всех регистров таблицы цветов. Считается, что таблица регистров для записи предварительно подготовлена.

Чтение нескольких регистров таблицы цветов (регистров ЦАП).

Используется функция 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;

иже приводится фрагмент программы на Pascal’е, в котором производится считывание всех регистров таблицы цветов.

23