Автор работы: Пользователь скрыл имя, 07 Декабря 2010 в 15:19, Не определен
Программа реализована на языке “Assembler”. Для вывода графики на экран используется прямое обращение к видеобуферу. Для достижения плавности прорисовки изображения применяется синхронизация с вертикальной развёрткой монитора.
ENDP LINE
MAIN PROC
mov ax, datas
mov ds, ax ;Инициализация сегментов данных
mov ax, 0A000h ;A000h - сегмент видеобуфера
mov es, ax
mov ah, 00h ;Установка видеорежима
mov al, 13h ;Mode = 13h (320x200x256)
int 10h
MainLoop:
mov COLOR, 15 ;Рисование точки
CALL DRAWCUBE ;Рисуем куб
CALL WAITVRT ;Ждём развёртку экрана
mov COLOR, 0 ;
CALL DRAWCUBE ;Стираем куб
in al,60h ;Читаем скан-код клавиатуры
cmp al, 4bh ;Если клавиша "Left"
jne DONTROTL
mov ax, DeltaY
sub ANY, ax ;уменьшаем ANY на DeltaY
jns DONTROTD
add ANY, 360
jmp DONTROTD
DONTROTL:
cmp al, 4dh ;Если клавиша "Right"
jne DONTROTR
mov ax, DeltaY
add ANY, ax ;увеличиваем ANY на DeltaY
cmp ANY, 360
jb DONTROTD
sub ANY, 360
jmp DONTROTD
DONTROTR:
cmp al, 48h ;Если клавиша "Up"
jne DONTROTU
mov ax, DeltaX
add ANX, ax ;увеличиваем ANX на DeltaX
cmp ANX, 360
jb DONTROTD
sub ANX, 360
jmp DONTROTD
DONTROTU:
cmp al, 50h ;Если клавиша "Down"
jne DONTROTD ;
mov ax, DeltaX ;
sub ANX, ax ;уменьшаем ANX на DeltaX
jns DONTROTD ;
add ANX, 360 ;
DONTROTD:
cmp al, 01h ;если не Escape
jne MainLoop ;делаем цикл
EXIT:
mov ah, 00h ;Установка текстового видеорежима
mov al, 02h ;Mode - 02h
int 10h
mov ax, 4C00h ;Terminate
int 21h
ENDP MAIN
CODES ENDS
END MAIN