Аппаратные интерфейсы ПК

         

Int h и Int h—поддержка таймеров


Сервисы BIOS Int I Ah позволяют считывать и модифицировать значения систем­ного таймера, даты и времени, а также установки будильника часов реального вре­мени CMOS RTC. Перечисленные ниже номера функций указываются при вызо­ве в регистре АН.

1.    АН=0 — чтение системного таймера (двойного слова по адресу 40:006Eh в BIOS Data Area, инкрементируемого по прерываниям от канала 0 счетчика-таймера 8253/8254 примерно раз в 55 мс. Таймер обнуляется при выполнении тестаPOST после аппаратного сброса). Возвращает значение таймера, в СХ — стар­шую часть, в DX — младшую. А1_=0, если за последние 24 часа не было перепол­нения таймера. В современных версиях сброс AL возвращает счетчик перепол­нений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).

2.    АН=1 — установка системного таймера (СХ — старшая часть, в DX — младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случае ошибки устанавливается флаг CF=1.

3.    АН=2 — чтение времени из RTC. Возвращает в упакованном BCD-формате час (в регистре СН), минуту (CL), секунду (DH) и признак коррекции летнего/зим­него времени (DL=1 — коррекция используется, DL=0 — нет). Признаком успеш­ной операции является флаг CF=0. Во избежание ошибок некоторых BIOS привызове флаг CF должен быть сброшен.

4.    АН=3 — установка времени в RTC, назначение регистров и признак результата аналогичен функции 2.

12.8. Сервисы и прерывания BIOS______________________________________ 495

5.    АН=4 — чтение даты из RTC. Возвращает в упакованном BCD-формате век(в регистре СН), две старшие цифры года (CL), месяц (DH) и день (DL). Призна­ком успешной операции является флаг CF=0. Во избежание ошибок некото­рых BIOS при вызове флаг CF должен быть сброшен.

6.    АН=5 — установка даты в RTC, назначение регистров и признак результата аналогичен функции 4.

7.    АН=6 — установка времени срабатывания будильника RTC.
Возвращает в упа­кованном BCD-формате час (в регистре СН), минуту (CL) и секунду (DH). Если будильник уже установлен, переустановка не производится и возвращается флаг CF-1. При срабатывании будильник вызывает прерывание Int 4Ah.

8.    АН=7 — отмена установки будильника.

Функции BIOS Int 15h позволяют программировать таймер CMOS RTC — вво­дить задержку или запускать таймер установки флага, указывая время в микросе­кундах (СХ — старшее слово, DX — младшее). Нулевое значение интервала не вызывает никаких действий. Достижимое разрешение в зависимости от произво­дительности ПК может достигать единиц миллисекунд, максимальная выдерж­ка — около 70 часов. Перечисленные ниже номера функций указываются при вы­зове в регистре АН или АХ.

9.  AH=86h — задержка на заданное время. Управление будет возвращено вызвав­ шему процессу только через указанный интервал. По окончании задержки бу­дет установлен бит 7 в ячейке BDA 0040:ООАО. Таймер может оказаться заня­тым, тогда вызов сразу возвратит флаг CF=1 (при успехе CF=0, а в AL окажется маска, записанная в 8259А#2).

10. AX=8300h — запуск таймера, устанавливающего флаг после указанной задерж­ке бит 7 в ячейке, заданной регистрами ES: ВХ. При успешном запуске CF=0; если таймер занят (он один) — CF=1 и AL=0. Управление возвращается про­цессу сразу, а флаг будет установлен через заданное время. Перед завершени­ем программа, запускавшая таймер, должна его сбросить функцией 830 lh (во-первых, чтобы освободить; во-вторых, чтобы снять «адскую машинку», которая неожиданно сама может изменить значение ячейки памяти, вполне возможно уже задействованную другим, ничего не «подозревающим» процессом).

И. AX=8301h —сброс того же таймера.


Содержание раздела