Приветствую.
В универе задали курсовую, задание следующее:
Прочитать текущее время, прибавить к нему заданный интервал (например, 5 сек.) и установить будильник на полученное время.
Начал писать, старательно изучая codenet.ru, DOSBox и TASM. Получилось следующее:
pastebin.com/XxNbhBT6 Для того, чтобы работать с таймером использую прерывание 1Ah. Функцией 02h считываю текущее время, затем добавляю 5 секунд и устанавливаю таймер функцией 06h. Тут меня и ждала самая главная трудность. В документации на codenet.ru сказано:
06H — установить сигнал часов реального времени. В указанное время вызывается пользовательская программа по вектору прерывания INT 4aH.
Немного погуглив узнал, что перехват прерывания определяется так:
lea dx, some_function
mov ah,25h
mov al,4Ah
Создал функцию, которая должна выводить строку по сигналу таймера. Но при запуске результирующего exe-шника в dosbox'e происходит следующая ситуация: сообщения о считывании времени и срабатывании таймера выводятся одновременно (т.е. 5 секунд не проходит). После этого программа повисает и приходится убивать вместе с dosbox'ом.