Системное программное обеспечение персональных ЭВМ

Системная служба времени


6.2. Системная служба времени

Импульсы, поступающие с выхода канала 0 таймера, вызывают прерывание 8. Обработчик этого прерывания в BIOS подсчитывает количество таких импульсов в 4-байтной области памяти (два 2- байтных слова). Этот счетчик, находящийся в области памяти BIOS по адресу 0040:006C, таким образом, хранит количество тиков таймера, прошедших от полуночи (0 в счетчике соответствует полночи). При запуске системы BIOS запрашивает у оператора время дня, переводит его в количество тиков и записывает по указанному адресу. Затем в процессе работы это число модифицируется обработчиком прерывания 8. То обстоятельство, что обработчик прерывания 8 в BIOS обеспечивает работу службы времени следует учитывать при перехвате прерывания 8 и при перепрограммировании канала 0 таймера.

Доступ к счетчику времени поддерживается прерыванием 0x1A. При обращении к этому прерыванию со значением 0 в регистре AH мы получаем в CX старшую, а в DX - младшую части счетчика. При обращении со значением 1 в AH мы задаем счетчик в регистрах CX, DX, и это значение записывается в память BIOS.

DOS поддерживает службу времени функциями 0x2C (чтение времени) и 0x2D (установка времени). Для представления времени в этих функциях используются регистры: CH (часы), CL (минуты), DH (секунды), DL (сотые доли секунды).

Программа примера 6.2 иллюстрирует чтение системного времени тремя способами.



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