Глава 2. Таймеры и звук.
Раздел 1. Установка и чтение таймера.
2.1.3 Установка/чтение даты.
При включении компьютера MS DOS запрашивает у пользователя текущие дату и время. Время записывается в области данных BIOS. Дата же содержится в переменной в COMMAND.COM. Она хранится в формате трех последовательных байтов, которые содержат соответственно день месяца, номер месяца и номер года, начиная с 0, где 0 соответствует 1980 году. В отличии от счетчика времени суток, адрес даты в памяти меняется с изменением версии DOS и положением в памяти COMMAND.COM. По этой причине для получения даты всегда надо использовать готовые утилиты Бейсика или MS DOS, а не обращаться к этой переменной напрямую.
Машины, оборудованные микросхемой календаря-часов, автоматически устанавливают время и дату с помощью специальной программы (обычно запускаемой при старте через файл AUTOEXEC.BAT). Kак получить доступ к микросхеме календаря-часов, см. {2.1.4}. Отметим также, что когда счетчик времени суток BIOS переходит через отметку 24 часов, MS DOS меняет дату.
Средний уровень.
Функции 2AH и 2BH прерывания 21H получают и устанавливают дату. Для получения даты поместите в AH 2AH и выполните прерывание. При возврате CX будет содержать год в виде числа от 0 до 119, что соответствует диапазону лет 1980 - 2099 (можно сказать что выдается смещение относительно 1980 г.). DH содержит номер месяца, а DL - день.
MOV AH,2AH | ;номер функции получения даты |
INT 21H | ;получение даты |
MOV DAY,DL | ;день из DL |
MOV MONTH,DH | ;месяц из DH |
ADD CX,1980 | ;добавляем базу к году |
MOV YEAR,CX | ;получаем номер года |
Для установки даты поместите день, месяц и год в те же регистры и выполните функцию 2BH. Если значения, указанные для даты неверны, то в AL будет возвращено FF, в противном случае - 0.
MOV DL,DAY | ;помещаем день в DL |
MOV DH,MONTH | ;помещаем месяц в DH |
MOV CX,YEAR | ;помещаем год в CX |
SUB CX,1980 | ;берем смещение относительно 1980 |
MOV AH,2BH | ;номер функции установки даты |
INT 21H | ;установка даты |
CMP AH,0FFH | ;проверяем успешность операции |
JE ERROR | ;неверная дата, идем на обработку ошибки |
<~-2.1.2 Установка/чтение времени.
Содержание
2.1.4 Установка/чтение часов реального времени.-~>