"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

32-байтных операций. В данном примере установлена задержка на 5
секунд, что соответствует 91 отсчету.

;---получение значения счетчика и установка задержки
MOV AH,0 ;номер функции для "чтения"
INT 1AH ;получаем значение счетчика
ADD DX,91 ;добавляем 5 сек. к младшему слову
MOV BX,DX ;запоминаем требуемое значение в BX

;---постоянная проверка значения счетчика времени суток BIOS
REPEAT:
INT 1AH ;получаем значение счетчика
CMP DX,BX ;сравниваем с искомым
JNE REPEAT ;если неравен, то повторяем снова,
;иначе задержка окончена

AT имеет добавочную функцию прерывания 15H, которая позволяет
осуществить задержку на указанное время. Поместите 86H в AH, а
число микросекунд задержки в CX:DX. После этого выполните преры-
вание.

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

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

100 GOSUB 500 'получаем значение счетчика
110 START = TOTAL 'сохраняем начальное значение в START
.
(далее идет процесс, длительность которого измеряется)
.
300 GOSUB 500 'получаем финальное значение
310 TOTAL = TOTAL - START 'подсчитываем число импульсов
320 HOURS = FIX(TOTAL/65520) 'вычисляем число часов
330 TOTAL = TOTAL - HOURS*65520 'вычитаем часы из TOTAL
340 MINUTES = FIX(TOTAL/1092) 'вычисляем число минут
350 TOTAL = TOTAL - MINUTES*1092 'вычитаем минуты из TOTAL
360 SECONDS = FIX(TOTAL/18.2) 'вычисляем число секунд
370 PRINT HOURS,MINUTES,SECONDS 'печатаем результат
380 END
.
.
500 DEF SEG = 0 'подпрограмма чтения времени суток