Скачать 3.55 Mb.
|
Код модели компьютера и версия BIOSНа этапе инициализации BIOS записывает в свою область данных по адресу FFFFh:FFFEh байт идентификатора модели компьютера. Ниже мы привели возможные значения этого байта:
Более подробную информацию можно получить, вызвав функцию C0h прерывания BIOS INT 15h:
После выполнения прерывания регистры ES:BX будут указывать на таблицу в области ПЗУ BIOS. В этой таблице имеется более точная информация о типе компьютера, номер версии BIOS, сведения об аппаратных особенностях конкретной модели. Приведем формат указанной таблицы:
Ниже мы привели описание отдельных бит байта конфигурации аппаратных средств.
В следующей таблице приведены коды моделей, дополнительные коды моделей и версии BIOS для некоторых известных типов компьютеров:
Символ "-" в приведенной выше таблице означает, что функция C0h прерывания INT 15h для данной версии BIOS не реализована. Все, что вы можете сделать в этом случае для идентификации BIOS, это получить байт кода модели по адресу F000h:FFFEh и дату изготовления BIOS, занимающую восемь байт начиная с адреса F000h:FFF5h. Дата хранится в формате ASCII. Большинство современных так называемых IBM-совместимых персональных компьютеров имеют код модели FCh, а дополнительный код модели 01h. Такие значения, например, записаны в таблице конфигурации компьютера Compaq Deskpro 6000 с процессором Pentium Pro 200. Программа BIOSINFOПрограмма BIOSINFO получает и отображает на консоли дату изготовления версии BIOS, а также содержимое таблицы конфигурации, адрес которой определяется с помощью функции C0h прерывания BIOS INT 15h: BIOSINFO (C)A. Frolov, 1997 BIOS data: 04/18/97 BIOSINFO address: 0212:0190 BIOSINFO Size: 8 Model: FC SubModel: 1 BIOS Revision: 0 Hardvare Cfg: 70 Reserved1: 00 Reserved2: 00 Hardware configuration ---------------------- Second IRQ Controller 8259 Real Time Clock Used function 4Fh INT 15h ISA Bus installed Исходный текст программы представлен в листинге 1.2. Листинг 1.2. Файл biosinfo\biosinfo.c // ===================================================== // Получение информации о BIOS // // (C) Фролов А.В, 1997 // // E-mail: [email protected] // WWW: http://www.glasnet.ru/~frolov // или// http://www.dials.ccas.ru/frolov // ===================================================== #include #include #include // Структура области данных с информацией о BIOS typedef struct _BIOSINFO { int nSize; // размер структуры unsigned char bModel; // код модели компьютера unsigned char bSubModel; // дополнительный код модели unsigned char bBIOSRevision; // номер изменений // версии BIOS unsigned char bHardwareCfg; // конфигурация аппаратуры int reserved1; // зарезервировано int reserved2; // зарезервировано } BIOSINFO; int main(void) { union REGS rg; struct SREGS srg; int i; BIOSINFO far *lpbi; void far* lp; unsigned char bHdwCfg; printf("\nBIOSINFO (C)A. Frolov, 1997"); // Конструируем указатель на дату изготовления // BIOS. Эта дата записана в ПЗУ по адресу F000h:FFF5h _FP_SEG(lp) = 0xf000; _FP_OFF(lp) = 0xfff5; // Выводим дату на экран printf("\n\nBIOS data: "); for(i=0; i<8; i++) putch(*((char far *)lp + i)); // Вызываем функцию C0h для получения адреса // таблицы конфигурации компьютера. rg.h.ah = 0xc0; int86x(0x15, &rg, &rg, &srg); // Если в BIOS нет данной функции, // читаем код модели компьютера // из ПЗУ по адресу F000h:FFFEh if(rg.x.cflag == 1) { printf("\nFunction C0h INT 15h not supported\n"); // Конструируем указатель на код модели _FP_SEG(lp) = 0xf000; _FP_OFF(lp) = 0xfffe; // Выводим код модели компьютера на экран printf("\nModel: %02.2X", (unsigned char)(*(char far *)lp)); return(-1); } // Конструируем укзатель на таблицу // информации о BIOS _FP_SEG(lpbi) = srg.es; _FP_OFF(lpbi) = rg.x.bx; // Выводим на экран содержимое таблицы printf("\nBIOSINFO address: %Fp" "\nBIOSINFO Size: %d" "\nModel: %02.2X" "\nSubModel: %d" "\nBIOS Revision: %d" "\nHardvare Cfg: %02.2X" "\nReserved1: %02.2X" "\nReserved2: %02.2X", lpbi, lpbi->nSize, lpbi->bModel, lpbi->bSubModel, lpbi->bBIOSRevision, lpbi->bHardwareCfg, lpbi->reserved1, lpbi->reserved2); // Определяем конфигурацию компьютера printf("\n\nHardware configuration" "\n----------------------"); // Запоминаем байт конфигурации bHdwCfg = lpbi->bHardwareCfg; // Расшифровываем байт конфигурации if(bHdwCfg & 0x80) printf("\nDMA Channel 3"); if(bHdwCfg & 0x40) printf("\nSecond IRQ Controller 8259"); if(bHdwCfg & 0x20) printf("\nReal Time Clock"); if(bHdwCfg & 0x10) printf("\nUsed function 4Fh INT 15h"); if(bHdwCfg & 0x8) printf("\nBIOS event wait supported"); if(bHdwCfg & 0x4) printf("\nExtended BIOS data used"); if(bHdwCfg & 0x2) printf("\nMicro Channel Bus"); if(!(bHdwCfg & 0x2)) printf("\nISA Bus installed\n"); getch(); return 0; } |
![]() |
М. Ю. Храмцов С. В. Шарф Руководство системного программиста (администратора)... Руководство системного программиста (администратора) системы управления прохождением задач мвс-1000/7 (версия 1, RedHat) |
![]() |
Руководство системного программиста «Электронный бюджет» подсистема обеспечения интеграции, ведения реестров и формуляров |
![]() |
Руководство системного программиста (администратора) Муниципальный модуль распределённой автоматизированной системы государственного банка данных о детях |
![]() |
Руководство системного программиста лист утверждения бкмд. 425530.... Программное обеспечение системы централизованного управления персональными мобильными устройствами и платформами в корпоративных... |
![]() |
Руководство системного программиста З по выполнению государственных функций и оказанию государственных услуг, заинтересованным лицам территориальными управлениями Росоэз... |
![]() |
Система цифровой регистрации изображений комплект программного обеспечения Программный документ “Руководство системного программиста” содержит сведения о “Комплексе программ для получения и визуализации данных,... |
![]() |
Инструкция по проведению регламентных и восстановительных работ rus. Гаро. 00001-25 32 02 Пк типа ibm pc в операционной системе Windows’98 и имеющих квалификацию инженера-программиста или системного инженера. Инструкция... |
![]() |
Инструкция читателя в онлайн-проекте «Библиотека ЛитРес» Аннотация... «Библиотека ЛитРес» (biblio litres ru) позволяет читателям библиотек получить бесплатный доступ к электронным книгам, представленным... |
![]() |
Муниципальный модуль прикладного программного обеспечения «аист»... Настоящий документ является эксплуатационным документом на муниципальный модуль прикладного программного обеспечения «Аист» (далее... |
![]() |
В. П. Казанцев инструкция по охране труда для инженера-программиста Инструкция, регламентирует безопасный, с точки зрения охраны труда, порядок действий инженера-программиста в процессе исполнения... |
![]() |
Сектор Абонемента ЛитРес Библиотека (поиск "ЛитРес" или "Библиотека"), ссылка на приложение: https://play google com/store/apps/details?id=ru litres... |
![]() |
Учебно-методический комплекс по дисциплине наименование дисциплины... Системного подхода, системной инженерии и с обширным арсеналом методов и моделей системного анализа. Это даст необходимую методологическую... |
![]() |
Должностная инструкция системного администратора информационной системы персональных данных Настоящая инструкция определяет основные обязанности, права и ответственность системного администратора информационной системы доу... |
![]() |
Пример описания технических требований системного блока №1 2 2 Пример... Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 21 |
![]() |
Пример описания технических требований системного блока №1 2 2 Пример... Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 22 |
![]() |
Пример описания технических требований системного блока №1 2 2 Пример... Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 17 |
Поиск |