Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая_асм_звезда.doc
Скачиваний:
3
Добавлен:
19.09.2019
Размер:
1.85 Mб
Скачать
  1. Проектирование программного продукта

    1. Выбор графического режима и способа вывода изображения на экран

Для реализации поставленной задачи можно было выбрать разные пути решения.

Для вывода на экран изображения можно было воспользоваться одним из следующих видеорежимов EGA:

Режим 4H: 320 столбцов x 200 строк x 4 цвета

Режим 6H: 640x200x2

Режим 0FH: 640x350x21

Режим 10H: 640x350x16

Режим 12H: 640x480x16

Режим 13H: 320x200x256

Для вывода изображения можно было воспользоваться

ф ункцией 0Сh, которая в графическом режиме EGA выводит на экран пиксель цвета AL на пересечении строки с номером DX и столбца с номером CX; непосредственной загрузкой информации о пикселях в видео память.

Для данной работы был выбран режим 10h и непосредственная загрузка информации о пикселях в видео память.

С использованием программы Paint стандартного пакета Windows была создана попиксельная схема рисунка(Рис.1).

Рис.1 Попиксельная схема рисунка

    1. Модульная структура программы

Рис.2 Модульная структура программы

    1. Описание структур данных и глобальных переменных

y - ордината верхнего левого угла изображения;

x - абсцисса верхнего левого угла изображения;

sch1 - переменная размерностью 2 байта, выполняющая роль счетчика количества вызовов процедуры при обработке прерываний по времени;

sch2- переменная размерностью 1 байт, выполняющая роль счетчика секунд при обработке прерываний по времени;

old_vekt - переменная размерностью в 4 байта для сохранения стандартного вектора прерывания по времени;

color – однобайтовый массив [0..5].Выполняет роль палитры.

    1. Алгоритм

Общий алгоритм действий

Рис. 3 Общий алгоритм действий

Для реализации алгоритма были выделены отдельные смысловые участки и оформлены в виде процедур:

  1. Процедура вывода изображения на экран

Рис. 4 Процедура zvezda

zvezda proc

mov CX,33 ;kolichestvo strok

mov SI,1 ; scet strok

mov DI,0 ;schet pikseley

draw1: push CX

mov CX, 42 ;kolichestvo stolbcov

draw2: push CX

add CX,x ;vychislenie x

mov DX,y ; vychi-

add DX,SI ; slenie y

mov BL,zv[DI] ;chtenie indeksa cveta dly tecuschego piksely

mov BH,0

mov AL,color[BX] ;cvet piksely

mov AH,0ch ;funkciya vyvoda cvetnoy tochki

mov BX,0 ;videostranica

int 10h

pop CX

inc DI

loop draw2

inc SI

pop CX

loop draw1

ret

zvezda endp

  1. Процедура изменения цвета изображения

Рис. 5 Процедура change_col

change_col proc

push CX

push SI

mov CX,5

col:

mov SI,CX

cmp color[SI],15 ; 15 - max cvet

jne col2 ; net

mov color[SI],1 ; da, ustanavlivaem 1

jmp end_col

col2: inc color[SI] ; uvelichivaem na 1

end_col: loop col

pop SI

pop CX

ret

change_col endp

  1. Процедура обработки прерывания по времени

Рис. 6 Процедура new_1Ch

new_1ch proc

push ES

push DS

push AX

push CX

mov AX,data

mov DS,AX

dec sch1

cmp sch1,0 ;proshla 1 sekunda

jne met1 ;net, ->met1

mov sch1,18 ;da, vosstanavlivaem sch1

dec sch2 ; umenshaem kol-vo sekund na 1

met1: mov AX,sch1 ; proverka deli-

mov CL,9 ; mosti sch1 na 9

div CL ;

cmp AH,0

jne exit ; ne delitsy, ->exit

call change_col ;delitsy ->smena cveta

exit:

pop CX

pop AX

pop DS

pop ES

iret

new_1ch endp

Процедура замены стандартного вектора прерывания по времени на процедуру new_1Ch

Рис. 7 Процедура ch_color

ch_col proc

mov AX,251Ch

mov DX,offset new_1ch

push DS

push CS

pop DS

int 21h

pop DS

ret

ch_col endp

  1. Процедура восстановления стандартного вектора прерывания по времени

Рис. 8 Процедура old_vect

old_vect proc

push DS

lds DX,old_vekt ;vosstanovlenie vektora preryvaniya po vremeni

mov AX,251Ch

int 21h

pop DS

mov sch2,8 ;vosstsnovlenie schetchikov

mov sch1,18

ret

old_vect endp