Программа для определения установленного компьютерного оборудования - Контрольная работа

бесплатно 0
4.5 129
Структура и методы написания программ на языке Assembler. Программная проверка компьютерного оборудования - процессора (частота, производитель, возможности), объема оперативной памяти, объема и типа HDD, устройства PCI (производитель и модель).

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Когда у программиста возникает вопрос типа «Как определить, сколько в компьютере оперативной памяти?», в 90% случаев он решается тривиально - используется определенный сервис операционной системы, который и отвечает на все вопросы вроде этого. Процессоры поддерживают инструкцию CPUID (как Intel, так и AMD), начиная с пятого поколения (Pentium) и поздних моделей 486. Все просто - если бит 18 в EFLAGS доступен, значит процессор 486 или круче, если его невозможно изменить инструкцией POPF - 386. В том же EFLAGS нужно попробовать изменить бит ID (21) если его можно программно изменить - процессор поддерживает инструкцию CPUID. При вызове CPUID с EAX=1, в регистре EAX возвращается информация о типе, модели и степпинге (изменения в рамках одной модели) процессора.11 Поддержка инструкций SYSENTER и SYSEXIT 13 Поддержка бита глобальности в элементах каталога страниц 15 Поддержка инструкций условной пересылки CMOVXX21 Поддержка отладочной записи истории переходовВ данной курсовой работе проверка значений бит, реализована с помощью макроса bit_test: bit test MACRO num.,mess local ml,m2 mov ah,9 lea dx,ext&mess int 21h bt edi,num jnc ml lea dx,yes int 21h jmp m2 ml: lea dx,no int 21h m2: ENDM При вызове CPUID с ЕАХ=2 (функция появилась, начиная с Pentium II, в процессорах AMD она недоступна) в регистрах ЕАХ, ЕВХ, ЕСХ, EDX возвращаются так называемые «дескрипторы», которые описывают возможности КЭШЕЙ и TLB буферов. Начиная с Pentium в архитектуру был введен счетчик тактов (вообще говоря Intel его так не называет, и утверждает что в будущем он может считать не такты, гарантируется лишь, что счетчик будет монотонно возрастать) мы будем определять частоту процессора используя именно этот счетчик. Он продолжает счет при выполнении инструкции HLT (собственно при выполнении этой инструкции процессор вовсе не останавливается, а всего-навсего непрерывно выполняет инструкцию NOP, которая, в свою очередь, является закамуфлированной инструкцией XCHG АХ, АХ (опкод NOP - 10010000b, опкод XCHG AX,reg - 10010reg, что при использовании регистра АХ (000) дает 10010000b, интересно, что фактически существует 32-разрядный аналог NOP-a - XCHG ЕАХ, ЕАХ, на кодовую последовательность 66h,90h процессор реагирует нормально). Считывание счетчика тактов можно запретить для прикладных программ (CPL=3) установкой в 1 бита TSD в CR4 (в win считывание запрещено).Во время написания программы возникали проблемы связанные с различным типом оборудования, и устройством ОС.

Введение
В рамках достижения поставленной цели автором были поставлены и решены следующие задачи: 1. Изучить теоретические аспекты.

2. Изучить структуру и методы написания программ на языке Assembler.

3. Реализовать программу, пользуясь пунктами 1 и 2.

Когда у программиста возникает вопрос типа «Как определить, сколько в компьютере оперативной памяти?», в 90% случаев он решается тривиально - используется определенный сервис операционной системы, который и отвечает на все вопросы вроде этого.

А что делать, если пользоваться сервисами нельзя, например, в случае разработки собственной ОС?

В данной работе будет проверено: 1. Процессор (частота, производитель, возможности).

2. Оперативная память (объем).

3. HDD (объем, тип).

4. Устройства PCI (производитель, модель).

Следовательно, необходимо понимать устройство всей системы, под которую мы пишем программу (в нашем случае это MS-DOS). Как видим, написание программы для определения установленного оборудования требует обширных знаний в сфере организации ЭВМ.

1. Процессор

1.1 Определение семейства

Процессоры поддерживают инструкцию CPUID (как Intel, так и AMD), начиная с пятого поколения (Pentium) и поздних моделей 486.

Если она не поддерживается - определить производителя и другие параметры процессора, возможно, только какими-либо недокументированными путями.

Посмотрим, чем отличаются процессоры не поддерживающие CPUID. Все просто - если бит 18 в EFLAGS доступен, значит процессор 486 или круче, если его невозможно изменить инструкцией POPF - 386.

В том же EFLAGS нужно попробовать изменить бит ID (21) если его можно программно изменить - процессор поддерживает инструкцию CPUID. CPUID имеет параметр, который задается в регистре ЕАХ.

Обычно в ответ на вызов CPUID с ЕАХ=0 процессор возвращает в EBX:ECX:EDX некоторую строку-идентификатор производителя.

У Intel это «Genuinelntel», у AMD - «AUTHENTICAMD», у Cyrix - «Cyrixlnstead».

Пример: mov eax,0 cpuid mov dword ptr [stm],EBX; Genu mov dword ptr [stm 4],EDX ;inel mov dword ptr [stm 8],ECX ;ntel mov ah,9 lea dx,stm ; Genuinelntel int 21h

1.2 Определение функций

При вызове CPUID с EAX=1, в регистре EAX возвращается информация о типе, модели и степпинге (изменения в рамках одной модели) процессора.

Эти значения расшифровываются по специальным таблицам.

ЕАХ[00:03] - степпинг (stepping)

ЕАХ[07:04] - модель (model)

ЕАХ[11:08] - семейство (family)

ЕАХ[ 13:12] - тип (type)

ЕАХ[ 15:14]- резерв (reserved)

ЕАХ[19:16] - расширенная модель (только Pentium 4)

ЕАХ[23:20] - расширенное семейство (только Pentium 4)

ЕАХ[31:24] - резерв (reserved)

ЕВХ[07:00] - брэнд-индекс (brand-index)

ЕВХ[ 15:08] - длина строки, очищаемой инструкцией CLFLUSH (Pentium4)

ЕВХ[23:16] - резерв

ЕВХ[31:24] - идентификатор APIC процессора.

ЕСХ-0

EDX содержит информацию о различных расширениях архитектуры (если определенный бит равен 1 - расширение поддерживается). Ниже приведена таблица 1.

Таблица 1 - значения основных бит регистра EDX

Бит Описание

0 Наличие сопроцессора

1 Расширение для режима V86, наличие флагов VIP и VIF в EFLAGS

2 Расширения отладки (останов по обращению к портам)

3 Возможности расширения размера страниц до 4Мб

4 Наличие счетчика меток реального времени (и инструкции RDTSC)

5 Поддержка модельно-специфических регистров в стиле Pentium

6 Расширение физического адреса до 36 бит

7 Поддержка Machine Check Exception

8 Инструкция CMPXCHG8B

9 Наличие APIC

Вывод
Данную работу можно считать полноценной программой. Для ее написания необходимо понимание структуры ЭВМ и ОС, в которой она должна работать, понимание принципа работы аппаратных устройств.

Во время написания программы возникали проблемы связанные с различным типом оборудования, и устройством ОС.

В итоге получилась простая программа для определения подключенного к ЭВМ оборудования, которая, естественно, нуждается в доработке и оптимизации.

Список литературы
1. www.wasm.ru «Программирование архитектуры ЭВМ»

2. В. Юров. «Assembler», 2-е изд. - СПБ.:Питер, 2006. - 534 с.

3. Эндрю Таненбаум «Архитектура компьютера» 5-е изд. - СПБ.: Питер, 2007. - 844 с.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?