restv 060, old_v1 ;восстановление пользовательского ВП
mov ah, 04c
int 021 ;завершение выполнения программы
i060_hnd:
inc sec ;циклы проверок правильности счета времени в формате чч:мм:сс
cmp sec, 60
jne end_060 ;секунды <= 60
mov sec, 0
inc min
cmp min, 60 ;минуты <= 60
jne end_060
mov min, 0
inc hour
cmp hour, 24 ;часы <= 24
jne end_060
mov hour, 0
end_060:
mov flag, 1
iret
i08_hnd:
push ax, ds
mov ds, cs ;установка доступа к данным процедуры
inc cntr ;увеличение значения счетчика прерывании
cmp cntr, 18 ;проверка на прохождение 1 минуты (~990 мсек)
jne l10
mov cntr, 0 ;обнуление счетчика прерывании
int 060 ;вызов пользовательского прерывания
l10:
pop ds, ax
cs jmp old_v ;передача управления исходному обработчику
В результате выполнения программы в верхний левый угол экрана выводится время работы программы в формате чч:мм:сс. Выполнение программы прерывается, когда счетчик минут достигнет значения maxmin.
2.5. Маскирование доступа к клавиатуре на 15 секунд
IMR – регистр маски прерывания служит для хранения разрешения и запрета (маскирования) прерываний, доступен через порт 21h/A1h (маскирование клавиатуры – 1 в первом бите регистра IMR).
Out5.8
include mac.inc
jmp start
old_v dd ? ;двойное слово для хранения значения вектора прерывания 08h
old_v1 dd ? ;двойное слово для хранения значения вектора прерывания 060h
cntr db 0 ;счетчик прерываний от таймера
time dw 0
irq equ 1
start:
chv old_v, 08, i08_hnd ;замена ВП системного таймера
chv old_v1, 060, i060_hnd ;замена пользовательского ВП
in al, 021
or al, bit irq
out 021, al ;маскирование клавиатуры (IMR)
mov ah, 0
int 016 ;ожидание прерывания от клавиатуры
restv 08, old_v ;восстановление ВП системного таймера
restv 060, old_v1 ;восстановление пользовательского ВП
mov ah, 04c
int 021 ;завершение выполнения программы
i060_hnd:
push ax, bx, cx, ds, di, es
mov es, 0b800 ;указатель на видеобуфер
mov bx, 10
mov cx, 3
mov di, 6
mov ax, time
l1:
mov dx, 0 ;преобразование числа секунд в ASCII код и отображение
div bx ;его на экране
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.