Assembler: обработка прерываний клавиатуры

Автор Administrator   
01:08:2008 г.
Задание: Составить обработчик прерываний от клавиатуры анализирующий скэн-код нажатой клавиши и при поступлении кода "серого плюса" активизирует процедуру task, которая получает из системы текущее время и после преобразования в символьную форму выводит его на экран. Чтение времени осуществляется функцией DOS 2Сh, вывод на экран - функцией DOS 09h. Основная программа в бесконечном цикле выводит на экран некоторое сообщение функцией DOS 40h.

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


MASM
MODEL small
STACK 256
.386
.data
m1 db 0ah,0dh,' ','$'
m2 db 0ah,0dh,'Nagmite lubuu klavishy, ESC - vyhod + - vremya ','$'
.code
main:
mov ax,@data
mov ds,ax
xor ax,ax
mov dx, offset m2
mov ah,09h
int 21h
main2:
mov ah,0h
int 16h
cmp ax,011bh
jz exit
cmp al,3Dh
jz task
jmp main2
task:
mov ah,02h
int 1Ah

movzx ax, ch
mov bh, 16
div bh
mov bl,al
mov bh,ah
add bl,30h
add bh,30h
mov ah,02h
mov dl,bl
int 21h
mov ah,02h
mov dl,bh
int 21h

mov dl,':'
mov ah,2
int 21h

mov ah,02h
int 1Ah

movzx ax, cl
mov bh, 16
div bh
mov bl,al
mov bh,ah
add bl,30h
add bh,30h
mov ah,02h
mov dl,bl
int 21h
mov ah,02h
mov dl,bh
int 21h

mov dl,':'
mov ah,2
int 21h

movzx ax, dh
mov bh, 16
div bh
mov bl,al
mov bh,ah
add bl,30h
add bh,30h
mov ah,02h
mov dl,bl
int 21h
mov ah,02h
mov dl,bh
int 21h

mov dx, offset m1
mov ah,09h
int 21h
jmp main
exit:
mov ax,4c00h
int 21h
end main


  уничтожитель бумаги и шредер . Профессиональный ремонт актуаторов.