Введення
У рамках досягнення поставленої мети автором були поставлені і вирішені наступні завдання:
. Вивчити теоретичні аспекти.
. Вивчити структуру і методи написання програм мовою Assembler.
. Реалізувати програму, користуючись пунктами 1 і 2.
Коли у програміста виникає питання типу В«Як визначити, скільки в комп'ютері оперативної пам'яті?В», в 90% випадків він вирішується тривіально - використовується певний сервіс операційної системи, який і відповідає на всі питання на зразок цього.
А що робити, якщо користуватися сервісами не можна, наприклад, у разі розробки власної ОС? p align="justify"> У даній роботі буде перевірено:
. Процесор (частота, виробник, можливості).
. Оперативна пам'ять (об'єм).
. HDD (об'єм, тип).
. Пристрої PCI (виробник, модель).
Отже, необхідно розуміти пристрій всієї системи, під яку ми пишемо програму (у нашому випадку це MS-DOS). Як бачимо, написання програми для визначення встановленого обладнання вимагає великих знань у сфері організації ЕОМ. br/>
1. Процесор
.1 Визначення сімейства
Процесори підтримують інструкцію CPUID (як Intel, так і AMD), починаючи з п'ятого покоління (Pentium) і пізніх моделей 486.
Якщо вона не підтримується - визначити виробника та інші параметри процесора, можливо, тільки якими-небудь недокументованими шляхами.
Подивимося, чим відрізняються процесори не підтримують CPUID. Всі просто - якщо біт 18 в EFLAGS доступний, значить процесор 486 або крутіше, якщо його неможливо змінити інструкцією POPF - 386.
У тому ж EFLAGS потрібно спробувати змінити біт ID (21) якщо його можна програмно змінити - процесор підтримує інструкцію CPUID. CPUID має параметр, який задається в регістрі ЕАХ. p align="justify"> Зазвичай у відповідь на виклик CPUID з Еах = 0 процесор повертає в EBX: ECX: EDX деякий рядок-ідентифікатор виробника.
У Intel це В« Genuinelntel В», у AMD - В«AuthenticAMDВ», у Cyrix - В«CyrixlnsteadВ». <...