- •Кафедра «Техническая кибернетика»
- •Содержание
- •Введение
- •Постановка задачи
- •Постановка задачи
- •Теоретические сведения
- •Проектирование программного продукта
- •Выбор графического режима и способа вывода изображения на экран
- •Модульная структура программы
- •Описание структур данных и глобальных переменных
- •Алгоритм
- •Тестирование и отладка
- •Перечень ошибок, обнаруженных в ходе отладки программы
- •Руководство пользователя
- •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 Попиксельная схема рисунка
Модульная структура программы
Рис.2 Модульная структура программы
Описание структур данных и глобальных переменных
y - ордината верхнего левого угла изображения;
x - абсцисса верхнего левого угла изображения;
sch1 - переменная размерностью 2 байта, выполняющая роль счетчика количества вызовов процедуры при обработке прерываний по времени;
sch2- переменная размерностью 1 байт, выполняющая роль счетчика секунд при обработке прерываний по времени;
old_vekt - переменная размерностью в 4 байта для сохранения стандартного вектора прерывания по времени;
color – однобайтовый массив [0..5].Выполняет роль палитры.
Алгоритм
Общий алгоритм действий
Рис. 3 Общий алгоритм действий
Для реализации алгоритма были выделены отдельные смысловые участки и оформлены в виде процедур:
Процедура вывода изображения на экран
Рис. 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
Процедура изменения цвета изображения
Рис. 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
Процедура обработки прерывания по времени
Рис. 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
Процедура восстановления стандартного вектора прерывания по времени
Рис. 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