.586 ;Будут использоваться дополнительные команды
assume CS:code,ds:data
code segment use 16
main proc
mov AX,data ;Настроим DS наш
mov DS,Ax ;сегмент данных
;Сохраним исходный вектор 4Ah
mov AX,354Ah
int 21h
mov word ptr old_4a,BX
mov word ptr old_4a+2,ES
;Установим наш обработчик прерываний 4Ah
mov AX,254Ah
push DS ;Сохраним DS
push CS ;Настроим DS на сегмент
pop DS ;команд
mov DX,offset new_4a: DS:DX->new_4a
int 21h
pop DS ;Восстановим DS
;Установим будильник
movAH,02h ;Чтение текущего времени
int 1Ah
call add_time ;Прибавим 1 секунду
mov AH,06h ;Установим будильник на это время
int 1Ah
;Остановим программу, чтобы наблюдать прерывания
mov AH,01h ;Функция ввода с клавиатуры
int 21h
;Завершим программу, прибрав за собой
mov AH,07h ;Сброс будильника