Время суток - часть 2
точности нужное число раз. Это очень хороший метод, если вам нужна
задержка на определенное время. В выше приведенном примере
начальное значение константы LOOP_VALUE, равное 0FFFFH, дает время
выполнения около 250-миллисекунд.
Но предположим, что вы хотите понаблюдать за внешним событием,
и определить, сколко времени займет его наступление. Можно использовать
вариант временного цикла такого, например, вида:
MOV CX, 0
HERE:
; --- проверка возникновения события
IN AL, DX
TEST AL, MASK_BIT
LOOPNE HERE
DONE:
; --- CX содержит число итераций цикла
Таким способом вы считаете число итераций цикла, чтобы
вычислить затраченное на него время. Этот метод предполагает, что
событие возникнет до того, как содержимое регистра CX второй раз
достигнет 0. Но если вам нужно измерить что-то с точностью до
микросекунд, этот метод не удобен, так как каждая итерация цикла
требует от 10 до 20 микросекунд. Системный таймер дает лучшее
решение. Поскольку он изменяет свое значение каждые 840 наносекунд,
вы сможете определить длительность события с точностью до
микросекунды.
На Фиг. 8.5 показан пример программы, вычисляющей время события
с помощью системного таймера. В этом примере в качестве
регистрируемого события используется канал 2 таймера. В первой
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:05:19
Фиг. 8.5 Управление системным таймером Page 1-1
PAGE ,132
TITLE Фиг. 8.5 Управление системным таймером
0000 STACK SEGMENT STACK
0000 0040[ DW 64 DUP (?)
????
]
0080 STACK ENDS
0000 CODE SEGMENT
Содержание Назад Вперед