Assembler - язык неограниченных возможностей


Системный таймер


Начиная с IBM AT, персональные компьютеры содержат два устройства для управления процессами — часы реального времени (RTC) и собственно системный таймер. Часы реального времени получают питание от аккумулятора на материнской плате и работают даже тогда, когда компьютер выключен. Это устройство можно использовать для определения/установки текущих даты и времени, установки будильника с целью выполнения каких-либо действий и для вызова прерывания IRQ8 (INT 4Ah) каждую миллисекунду. Системный таймер используется одновременно для управления контроллером прямого доступа к памяти, для управления динамиком и как генератор импульсов, вызывающий прерывание IRQ0 (INT 8h) 18,2 раза в секунду. Таймер предоставляет богатые возможности для препрограммирования на уровне портов ввода-вывода, но на уровне DOS и BIOS и часы реального времени, и системный таймер используются только как средство определения/установки текущего времени и организации задержек.


Функция DOS 2Ah — Определить дату

Ввод: AX = 2Ah
Вывод: СХ = год (1980 – 2099)
DH = месяц
DL = день
AL = день недели (0 — воскресенье, 1 — понедельник...)


Функция DOS 2Ch — Определить время

Ввод: AX = 2Ch
Вывод: СН = час
CL = минута
DH = секунда
DL = сотая доля секунды


Эта функция использует системный таймер, так что время изменяется только 18,2 раза в секунду и число в DL увеличивается сразу на 5 или 6.


Функция DOS 2Bh — Установить дату

Ввод: АН = 2Bh
СХ = год (1980 – 2099)
DH = месяц
DL = день
Вывод: АН = FFh, если введена несуществующая дата,
АН = 00h, если дата установлена


Функция DOS 2Dh — Установить время

Ввод: АН = 2Dh
СН = час
CL = минута
DH = секунда
DL = сотая доля секунды
Вывод: AL = FFh, если введено несуществующее время,
AL = 00h, если время установлено


Функции 2Bh и 2Dh устанавливают одновременно как внутренние часы DOS, которые управляются системным таймером и обновляются 18,2 раза в секунду, так и часы реального времени. BIOS позволяет управлять часами напрямую:




Начало  Назад  Вперед