[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Я прочитал, что BIOS компьютеров IBM AT содержит еще две интересные функции для работы с таймером. Это функции 83h и 86h прерывания INT 15h.
У них задержки задаются в микросекундах !!! А как они аппаратно реализуются ? Они точно не используют таймер, который генерит прерывания 18.2 раз в секунду - т. к. проверено, что эти функции реально реализуют задержки меньше, чем 55 мс!
Может есть еще какой-то таймер ?
P.S. Вот инфо об этих функциях :
Функция 83h позволяет запустить таймер на счет, указав адрес некоторого байта в оперативной памяти. Программа, запустившая таймер, сразу после запуска получает управление. По истечении времени, заданного при запуске таймера, функция устанавливает старший бит указанного байта в единицу, сигнализируя таким образом программе о завершении указанного временного интервала. Программа может также отменить работу таймера в этом режиме.
Эту функцию удобно использовать для организации выполнения каких-либо действий параллельно с отсчетом времени, например, можно ограничить время для ввода пароля.
Приведем формат вызова функции 83h прерывания INT 15h:
На входе: AH = 83h;
AL = код подфункции:
0 - установить интервал, запустить таймер;
1 - отменить работу таймера;
CX = старший байт времени работы счетчика,
задается в микросекундах;
DX = младший байт счетчика;
ES:BX = адрес байта, в котором по истечении
интервала времени старший бит будет
установлен в 1.
На выходе: не используются.
Функция 86h специально предназначена для формирования задержек. Она позволяет определять время задержки в микросекундах, что достаточно удобно для многих задач. Во время выполнения задержки разрешены прерывания. Формат вызова функции:
На входе: AH = 86h;
CX = старший байт времени задержки,
задается в микросекундах;
DX = младший байт времени задержки.
На выходе: не используются.
E-mail: info@telesys.ru