int 060 ;вызов пользовательского прерывания
l10:
pop ds, ax
cs jmp old_v ;передача управления исходному обработчику
i09_hnd:
push ax
in al, 060 ;считывание с порта 60h значение скан-кода нажатой клавиши
cmp al, 1 ;клавиша “Esc”?
mov al, 020
out 020, al ;снятие заявки на обслуживание прерывания
pop ax
je exit ;если да, то выход из программы
iret
exit:
srestv 08, old_v ;восстановление ВП системного таймера
srestv 060, old_v1 ;восстановление пользовательского ВП
srestv 09, old_v2 ;восстановление ВП клавиатуры
mov ah, 04c
int 021 ;завершение выполнения программы
Данная программа представляет собой простой бесконечный цикл. Выход из цикла и завершение программы осуществляется нажатием клавиши ESC, что проверяется в обработчике аппаратного прерывания от клавиатуры 9h.
2.8. Часы суточного времени
В начале основной программы следует применить вызов функции 2Ch прерывания DOS 21h - в РОН записывается текущее системное время.
Out8.8
include mac.inc
jmp start
old_v dd ? ;двойное слово для хранения значения вектора прерывания 08h
old_v1 dd ? ;двойное слово для хранения значения вектора прерывания 060h
cntr db 0 ;счетчик прерываний от таймера
sec db 0 ;счетчик секунд
min db 0 ;счетчик минут
hour db 0 ;счетчик часов
flag db 0
cnt db 0
maxcnt db 15
start:
chv old_v, 08, i08_hnd ;замена ВП системного таймера
chv old_v1, 060, i060_hnd ;замена пользовательского ВП
gettime hour, min, sec ;получение значения системного времени int 21h, 2Ch
l1:
test flag ;проверка на требуемость изменения отображения времени на экране
jz l2
mov es, 0b800 ;указатель на видеобуфер
mov bx, 10 ;сохранение в стек числа часов, минут и секунд
mov cx, 3
mov di, 18
mov al, hour
mov ah, 0
push ax
mov al, min
mov ah, 0
push ax
mov al, sec
mov ah, 0
push ax
; цикл преобразования и вывода чч:мм:сс
l3:
pop ax ;выгрузка из стека и преобразование в ASCII код часов, минут
mov dx, 0 ;секунд и отображение времени на экране в формате чч:мм:сс
div bx
add dl, '0'
add al, '0'
sub di, 2
cmp di, 16
je nopt
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.