H-3Fh - зарезервировано



34h-3Fh - зарезервировано

Это поле вы можете использовать по своему усмотрению, например, хранить здесь пароль.

PS/2 использует ячейку с адресом 37h для хранения номера текущего столетия. Ячейки 38h-3Fh в модели 50 компьютера PS/2 используются для хранения пароля. Обращение к этим ячейкам выполняется по адресам 78h-7Fh, которые аппаратно отображаются на адреса 38h-3Fh.

Приведем две маленькие программы, демонстрирующие приемы работы с КМОП-памятью. Первая программа записывает в ячейки 34h-3Fh строку символов, вторая отображает эту строку, а также некоторые другие ячейки. #include <stdio.h> #include <stdlib.h> main() { // Эта строка будет записана в КМОП-память static char password[12] = "!Frolov A.V."; int i,j; printf("\n*Запись в CMOS* ©Фролов A. 1991\n\n"); for(i=0x34,j=0; i<0x40; i++,j++) { // Задаем адрес ячейки КМОП-памяти outp(0x70,i); // Выполняем запись в эту ячейку outp(0x71,password[j]); } }



Программа для чтения содержимого КМОП-памяти: #include <stdio.h> #include <stdlib.h> main() { unsigned char cmos[164]; int i; printf("\n*Чтение из CMOS* ©Фролов A. 1991\n\n"); // Читаем все 64 ячейки КМОП-памяти в массив cmos for(i=0; i<64; i++) { outp(0x70,i); cmos[i]=inp(0x71); } // Отображаем ячейки часов реального времени printf("\nЯчейки часов реального времени: "); for(i=0; i<0xd; i++) { printf("%02.2x ",(unsigned)cmos[i]); } // Отображаем состояние байта диагностики // после включения питания printf("\nБайт диагностики: %02.2x",cmos[0xe]); // Отображаем содержимое байта отключения printf("\nБайт отключения: %02.2x\n",cmos[0xf]); // Отображаем содержимое зарезервированных ячеек printf("\nPassword : "); for(i=0x34; i<0x40; i++) { printf("%02.2x ",(unsigned)cmos[i]); } // Выводим это же еще раз в виде текстовой строки cmos[0x40]=0; printf(">%s<\n",&cmos[0x34]); }

Некоторую помощь в определении конфигурации компьютера вам может оказать прерывание BIOS INT11h, которое мы рассмотрим ниже.



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