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

ADD CX,DX ;добавляем второе значение
MOV DX,CX ;результат храним в DX

;---процедура перевода времени в обычный формат
FIGURE_TIME: ;делим на 18.2 секунды и т.д.


.h3 2.1.7 Управление работой в реальном времени.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

При операциях в реальном времени программа выполняет инструк-
ции в указанный момент времени, а не при первой возможности.
Такого рода операции обычно ассоциируются с роботехникой, но
имеется множество других приложений. Имеется выбор подхода к
операциям в реальном времени. Для программ, которые не должны
ничего делать в промежутке между инструкциями, требующими времен-
ной привязки, можно просто периодически проверять счетчик времени
суток, ожидая наступления нужного момента. Такой подход практи-
чески сводится к набору пустых циклов, описанных в [2.1.5].
Второй подход более сложен. Он используется, когда программа
постоянно занята какой-либо работой, но она должна в определенные
моменты времени прерывать свои операции для выполнения определен-
ной задачи. В этом случае расширяют прерывание таймера, которое
выполняется 18.2 раза в секунду. Когда это прерывание происходит,
дополнительный код проверяет новое значение счетчика времени
суток и если наступил определенный момент времени, запускает
нужную процедуру. Этот процесс показан на рис. 2-3. Приведенные
здесь простые примеры показывают, как создать в своей программе
будильник, который устанавливается пользователем и подает звуко-
вой сигнал, когда подошло время. (Более сложный пример низкого
уровня в [2.2.6] исполняет музыку, в то время когда процессор
занят другими делами.)

Высокий уровень.

Бейсик обеспечивает примитивный контроль над операциями в
реальном времени посредством оператора ON TIMER(n) GOSUB. Когда
программа встречает этот оператор, то она начинает отсчитывать n
секунд. Тем временем выполнение программы продолжается. Когда n
секунд прошло, то программа переходит на подпрограмму, начинаю-
щуюся с указанного номера строки, выполняет ее и возвращает уп-
равление на то место, откуда была вызвана подпрограмма. После
этого отсчет снова начинается с нуля и подпрограмма будет вызвана
снова еще через n секунд.
ON TIMER не будет функционировать, до тех пор пока он не раз-
решен оператором TIMER ON. Оператор TIMER OFF запрещает его рабо-
ту. В тех случаях, когда отсчет времени должен продолжаться, но
переход на подпрограмму должен быть задержан, надо использовать
оператор TIMER STOP. В этом случае отмечается, что n секунд прош-
ло, но переход на подпрограмму будет выполенен только после того,