Код |
Функция |
Параметры |
Результаты |
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 секунд.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.