Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
23.02.2016
Размер:
52.22 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Черкаський Державний Технологічний Університет

Кафедра комп’ютерних технологій

ЗВІТ

З курсу «Операційні системи»

Лабораторна робота №4

Перевірила: Виконав:

Федотова-Півень І.М. студент гр. КТ-101

Туровський Д.В.

Черкаси 2012

Тема: Робота зі спрайтами

Мета: Написати програмуґ. Яка в графічному режимі CGA 4 320 * 320 малює фігуру колобка розміром 16*16 точок безпосередньо в екранній області і переміщує його при натисненні курсорних клавіш. Коди управління курсором: вверх – 48h, вниз – 50h, вправо – 4Dh, вліво – 4Bh.

Структура відеопамяті в режимі CGA: починається з адресу В000h, парні лінії мають зміщення 0000h – 1F3Fh(близько 8КВ), непарні 2000h – 3F3Fh(близько 8КВ)(проміжок між ними не використовується).

Колір 00-чорний

01-голубий(зелений)

10-фіолетовий(червоний)

11-білий(жовтий)

Результати роботи:

Лістинг програми:

assume CS: CODE;, DS: Code

Code Segment

org 100h

Start: jmp start1

addr dw 0 ;адрес начальной точки спрайта

addr0 dw 0 ;Старый адрес

;16 * 16

colob db 0,5,50h,0

db 0,5fh,0f5h,0

db 5,0ffh,0ffh,50h

db 3fh,0ffh,0ffh,0fch

db 0ffh,0afh,0fah,0ffh

db 0ffh,0abh,0eah,0ffh

db 0ffh,8bh,0e2h,0ffh

db 0ffh,0ffh,0ffh,0ffh

db 3fh,0beh,0beh,0fch

db 0fh,0efh,0fbh,0f0h

db 0,0,fah,0afh,0

db 0,3fh,0fch,0

db 0,3ch,3ch,0

db 15h,3ch,3ch,54h

db 55h,54h,15h,55h

db 55h,54h,15h,55h

start1: ;Установка видеорежима

mov ah,0 ;Функция установки видеорежима

mov al,4 ;Граф. реж. CGA 320*200 точек

int 10h

mov di,addr

st2: lea si,colob

call sprit0

call sprite

;сохранение исходних координат

mov ax,addr

mov addr0,ax

;чтение клавиатуры

call kbin

cmp ah,1 ;скан - код=esc?

jnz st3 ;нет

int 20h ;выход при нажатии esc

st3: cmp ah,48h ;вверх?

jnz st4

sub addr,80*2 ;вверх на 4 строки

jmp st2

st4: cmp ah,50h ;вверх?

jnz st5

add addr,80*2 ;вниз на 4 строки

jmp st2

st5: cmp ah,4dh ;Вправо?

jnz st6

inc addr

jmp st2

st6: cmp ah,4bh ;Влево?

jnz st2

dec addr

jmp st

; ввод с клавиатури

kbin proc near

mov ah,0 ;Функция 0

int 16h ;клавиатурного прерывания

ret

kbin endp

;построение спрайта 16*16

;addr-адрес левого верхнего угла

;SI- начало спрайта

sprite proc near

;построение чёрних точек

push si

mov di,addr

mov ax,0b800h

mov es,ax

mov bp,8 ;счетчик числа строк /2

sp1: mov cx,4 ;Счетчик числа слов

rep movsb

add di,76

add si,4

dec bp

jnz sp1

;построение нечетних строк

mov di,addr

pop si

add si,4 ;переход к нечетной строке

mov ax,0ba00h

mov es,ax

mov bp,8 ;счетчик числа строк/2

sp2: mov cx,4 ;счетчик числа слов

rep movsb

add di,76

add si,4

dec bp

jnz sp2

ret

sprite endp

;стирание спрайта 16*16

addr0-координаты верхнего левого угла

sprit0 proc near

;стирание четних строк

mov di,addr0

mov ax,0b800h

mov es,ax

mov bp,8 ;счетчик числа строк/2

xor al,al

sp3: mov cx,4 ;счетчик числа слов

rep stosb

add di,76

dec bp

jnz sp3

;стирание нечетних строк

mov di,addr0

mov ax,0ba00h

mov es,ax

mov bp,8 ;счетчик числа строк / 2

sp4: mov cx,4 ;счетчик числа слов

rep stosb

add di,76

dec bp

jnz sp4

ret

sprit0 endp

code ends

END Start ;Указание точки входа в программу

Висновки: я реалізував програму, яка в графічному режимі CGA 4 320 * 320 малює фігуру колобка розміром 16*16 точок безпосередньо в екранній області і переміщує його при натисненні курсорних клавіш.

Соседние файлы в папке ОС (Отчёты) Туровский