"Роберт Джордайн. Справочное пособие программиста - 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 ;номер изменяемого вектора 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 ;читаем значение счетчика ;---сравниваем с требуемым значением |
|
|