"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

внимательны и не забудьте сохранить изменяемые регистры.

;---в сегменте данных
MINUTES DW 0 ;хранит число минут до звонка
ALARMCOUNT DW 0 ;хранит счетчик времени для звонка

;---установка ожидаемого значения счетчика времени суток
CALL REQUEST_MINUTES ;запрос числа минут до звонка
MOV AX,MINUTES ;пересылка в AX
MOV BX,1092 ;число импульсов счетчика в минуте
MUL BX ;умножаем - результат в AX

;получаем текущее значение счетчика
MOV AH,0 ;номер функции чтения счетчика
INT 1AH ;читаем значение, младший байт в DX
;складываем оба значения
ADD AX,DX
MOV ALARMCOUNT,AX ;получаем нужное значение счетчика

;---заменяем вектор пустого прерывания
PUSH DS ;сохраняем сегмент данных
MOV AX,SEG ALARM ;берем сегмент процедуры ALARM
MOV DS,AX ;помещаем его в DS
MOV DX,OFFSET ALARM ;берем смещение процедуры
MOV AL,1CH ;номер изменяемого вектора
MOV AH,25H ;функция изменения вектора
INT 21H ;меняем вектор
POP DS ;восстанавливаем сегмент данных
;
;---дальше продолжается программа
;
;---в конце программы возвращаем вектор прерывания
MOV DX,0FF53H ;оригинальные значения для
MOV AX,0F000H ;прерывания 1CH
MOV DS,AX ;помещаем сегмент в DS
MOV AL,1CH ;номер изменяемого вектора
MOV AH,25H ;номер функции
INT 21H ;восстанавливаем вектор

;---процедура выдачи звукового сигнала
ALARM PROC FAR ;создаем длинную процедуру
PUSH AX ;сохраняем изменяемые регистры
PUSH CX
PUSH DX

;---читаем счетчик времени суток
MOV AH,0 ;номер функции чтения счетчика
INT 1AH ;читаем значение счетчика

;---сравниваем с требуемым значением