Таймер в Assembler

Приветствую.

В универе задали курсовую, задание следующее:

Прочитать текущее время, прибавить к нему заданный интервал (например, 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'ом.
  • Вопрос задан
  • 7448 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вы точно после
lea dx, some_function
mov ah,25h
mov al,4Ah
вызываете int 21h?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы