Глава 2. Таймеры и звук.

Раздел 1. Установка и чтение таймера.

2.1.6 Операции запрограммированные во времени.

Программа определяет время для выполнения определенной операции в точности так же, как и человек: берется начальное показание счетчика времени суток и затем сравнивается с последующими пока- заниями. Можно получать значения в формате часы-минуты-секунды, но слишком хлопотно вычислять разницу между такими показаниями, поскольку система счета не десятичная. Лучше прямо читать счетчик времени суток BIOS, измерять продолжительность в 1/18 секунды, а затем уже переводить ее в обычный формат чч:мм:сс.

Средний уровень.

Прерывание 1AH имеет две функции для установки (AH = 1) и получения (AH = 0) счетчика времени суток. Для чтения счетчика надо просто выполнить прерывание с AH = 0. При возврате значение счетчика содержится в CX:DX, причем младшее слово в CX. AL содержит 0, если счетчик не переходил через границу 24 часов с момента последней установки. Для установки счетчика поместите два слова в те же регистры, а в AH - 1. В приведенном примере измеряются промежутки времени в пределах часа. При этом нужны только два младших байта счетчика. Hо в этом случае необходимо проверять, что не было перехода через границу, когда начальное значение было больше, чем следующее.
;---в сегменте данных
OLDCOUNT DW 0 ;храним начальное значение счетчика
;---получаем начальное значение счетчика
MOV AH,0 ;номер функции
INT 1AH ;получаем значение счетчика
MOV OLDCOUNT,DX ;сохраняем начальное значение
.
(здесь идет процесс, длительность которого измеряется)
.
;---позднее вычисляем длительность процесса
MOV AH,0 ;номер функции
INT 1AH ;получаем значение счетчика
MOV BX,OLDCOUNT ;считываем старое значение
CMP BX,DX ;проверяем на переполнение
JG ADJUST ;обработка переполнения
SUB DX,BX ;иначе берем разность
JMP SHORT FIGURE_TIME ;и переводим ее в обычный вид
;---обработка переполнения
ADJUST: MOV CX,0FFFFH ;помещаем в CX максимальное число
SUB CX,BX ;вычитаем первое значение
ADD CX,DX ;добавляем второе значение
MOV DX,CX ;результат храним в DX
;---процедура перевода времени в обычный формат
FIGURE_TIME: ;делим на 18.2 секунды и т.д.


<~-2.1.5 Задержка программных операций.
Содержание
2.1.7 Управление работой в реальном времени.-~>

Сайт управляется системой uCoz