Аппаратное обеспечение
персонального компьютера
© Александр Фролов, Григорий Фролов
Том 33, М.: Диалог-МИФИ, 1997, 304 стр.
Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам памяти CMOS, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания INT 1Ah, описанными ниже.
Прочитать
показания часов реального времени
Регистры на входе: |
AH = 02h |
Регистры на выходе: |
CH = часы в BCD-формате (например, 13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; CF = CY = 1, если часы реального времени не установлены |
Установить часы реального времени
Регистры на входе: |
AH = 03h CH = часы в BCD-формате (например, 13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; DL = 1, если необходимо использовать летнее время |
Регистры на выходе: |
Регистры не используются |
Прочитать дату из часов реального времени
Регистры на входе: |
AH = 04h |
Регистры на выходе: |
CH = столетие в BCD-формате; CL = год в BCD-формате (например, CX=1997h означает 1997 год); DH = месяц в BCD-формате; DL = число в BCD-формате; CF = CY = 1, если часы реального времени не установлены |
Установить дату в часах реального времени
Регистры на входе: |
AH = 05h CH = столетие в BCD-формате; CL = год в BCD-формате (например, CX=1997h означает 1997 год); DH = месяц в BCD-формате; DL = число в BCD-формате; |
Регистры на выходе: |
Регистры не используются |
Установить будильник
Регистры на входе: |
AH = 06h CH = часы в BCD-формате; CL = минуты в BCD-формате; DH = секунды в BCD-формате |
Регистры на выходе: |
CF = CY = 1, если часы реального времени не установлены |
Эта функция позволяет установить будильник на заданное время. Когда будильник “зазвенит”, будет вызвано прерывание INT 4Ah (его вызывает BIOS после прихода аппаратного прерывания от часов реального времени IRQ8, то есть прерывания с номером 70h). Программа, использующая функцию будильника, должна подготовить обработчик прерывания INT 4Ah, завершающий свою работу выполнением команды IRET.
Заметим, что можно установить только один будильник.
Сброс будильника
Регистры на входе: |
AH = 07h |
Регистры на выходе: |
Регистры не используются |
Эта функция позволяет сбросить будильник, например, для того чтобы установить его на другое время.
|