Конфигурация в памяти CMOS
Как мы уже говорили, энергонезависимая память CMOS используется в современных компьютерах для хранения текущей конфигурации аппаратных средств. Эта память состоит из набора ячеек, доступ к которым для чтения и записи выполняется через порты ввода и вывода с адресами 70h и 71h.
Процедура чтения ячейки памяти CMOS состоит из двух шагов. На первом шаге программа записывает в выходной порт с адресом 70h номер ячейки, из которой необходимо прочитать информацию. На втором шаге программа читает содержимое данной ячейки из входного порта с адресом 71h:
int nCellContent;
outp(0x70, nCell);
nCellContent = inp(0x71);
Запись данных в ячейку памяти CMOS выполняется аналогично, только после записи номера ячейки в порт 70h программа должна записать новое значение для этой ячейки в порт с адресом 71h:
outp(0x70, nCell);
outp(0x71, nNewValue);
В памяти CMOS хранится текущее время и дата, сведения о конфигурации системы, результат тестирования при включении питания и другая информация, приведенная ниже:
Адрес ячейки | Содержимое
| ||
00h - 0Dh | Используются часами реального времени | ||
0Eh | Байт состояния диагностики при включении питания | ||
0Fh | Байт состояния отключения | ||
10h | Тип НГМД | ||
11h | Зарезервировано | ||
12h | Тип НМД (если меньше 15) | ||
13h | Зарезервировано | ||
14h | Конфигурация оборудования | ||
15h - 16h | Объем основной памяти | ||
17h - 18h | Объем расширенной памяти | ||
19h | Тип первого НМД (если он больше 15) | ||
1Ah | Тип второго НМД (если он больше 15) | ||
1Bh - 20h | Зарезервировано | ||
21h - 2Dh | Зарезервировано | ||
2Eh - 2Fh | Контрольная сумма ячеек 10h - 20h | ||
30h - 31h | Объем расширенной памяти | ||
32h | Текущее столетие в двоично-десятичном коде (19h для 19-го столетия) | ||
33h | Различная информация | ||
34h - 3Fh | Зарезервировано |
Рассмотрим подробно назначение отдельных ячеек CMOS-памяти.