Информационные технологииStfw.Ru 🔍
🕛

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

Сервисы BIOS Int I Ah позволяют считывать и модифицировать значения системного таймера, даты и времени, а также установки будильника часов реального времени CMOS RTC. Перечисленные ниже номе
Сервисы 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.
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 -сброс того же таймера.

Также по теме:
Новые программы для Windows, Linux и Android.