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