Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 31

Код

Функция

Параметры

Результаты

0

Чтение системного времени

Нет

AL — признак переполнения

0 — нет переполнения

CX — старшая часть счетчика

DX — младшая часть счетчика

1

Установка системного времени

Нет

AL — сбрасывается в 0

CX — старшая часть счетчика

DX — младшая часть счетчика

oldcount DW  0

       . . .

;--- Получаем начальное значение счетчика

       MOV   AH,0       ;Номер функции

       INT   1AH

       MOV   oldcount,DX ;Сохраняем начальное значение

;--- Процесс, длительность которого измеряется

;--- Вычисление длительности процесса

       MOV   AH,0

       INT   1AH        ;Новое значение счетчика

       MOV   BX,oldcount ;Считываем старое значение

       CMP   BX,DX      ;Проверка на переполнение

       JG    over       ;Обработка переполнения

       SUB   DX,BX      ;Иначе определяем разность

       JMP   time       ;и переводим ее в обычный вид

;--- Обработка переполнения

over:  MOV   CX,0FFFFH  ;Помещаем в СХ макс. число

       SUB   CX,BX      ;Вычитаем первое значение

       ADD   CX,DX      ;Добавляем второе значение

       MOV   DX,CX      ;Результат сохраним в DX

;--- Перевод времени в обычный формат

time:

Рисунок 4.5

Для выполнения необходимой задержки, следует подсчитать требуемое число импульсов счетчика времени и добавить его к текущему значению. При этом программа должна постоянно считывать значение счетчика и сравнивать его с сохраненным. Для задержек меньше 14 секунд удобно использовать значение только младшего байта. Два младших байта позволяют выполнять задержки до одного часа. На рисунке 4.6 приведен фрагмент программы формирования задержки в 5 секунд.