Запуск программы и ввод исходной строки
Вывод после последовательных нажатий LeftShift, Control, LeftAlt.
Вывод после последовательных нажатий RightShift, Control, RightAlt.
Выход из программы – комбинация LeftShift+Control+LeftAlt.
Задание №6
Постановка задачи: Разработать программу, которая выводит в центре экрана световую точку и изменяет ее положение с помощью клавиш-стелок.
Исходные данные: Световая точка в центре.
Результат: Возможность менять ее положение с помощью стрелок.
Для работы с видео режимом исмользуется прерывание BIOS int 10h.
Листинг программы:
masm
model small
.data
tr db 0
c1 db 0
k1 dw 160
k2 dw 100
eos db 10,13,'$'
.stack
db 256 dup ('?')
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov ah,0fh
int 10h
mov tr,al
mov ah,00h
mov al,4
int 10h
mov ah,0ch
mov bh,0
mov dx,100
mov cx,160
mov al,1
int 10h
m1:
xor ax,ax
mov ah,00h
int 16h
mov c1,al
cmp al,27
je m2
call getRight
call getLeft
call getDown
call getUp
mov ah,0ch
mov bh,0
mov dx,k2
mov cx,k1
mov al,1
int 10h
jmp m1
m2:
mov ah,00h
mov al,tr
int 10h
mov ax,4c00h
int 21h
main endp
getRight proc
cmp ah,77
jne m3
mov ah,0ch
mov bh,0
mov dx,k2
mov cx,k1
mov al,4
int 10h
inc k1
m3:
ret
getRight endp
getLeft proc
cmp ah,75
jne m4
mov ah,0ch
mov bh,0
mov dx,k2
mov cx,k1
mov al,4
int 10h
dec k1
m4:
ret
getLeft endp
getDown proc
cmp ah,80
jne m5
mov ah,0ch
mov bh,0
mov dx,k2
mov cx,k1
mov al,4
int 10h
inc k2
m5:
ret
getDown endp
getUp proc
cmp ah,72
jne m6
mov ah,0ch
mov bh,0
mov dx,k2
mov cx,k1
mov al,4
int 10h
dec k2
m6:
ret
getUp endp
end main