
- •Введение
- •Лабораторная работа № 1. Создание программы определения характеристик центрального процессора.
- •Определение параметров процессора на аппаратном уровне.
- •Лабораторная работа № 2.
- •Конфигурация персонального компьютера
- •Cmos-память и конфигурация компьютера
- •32H Текущее столетие
- •Использование bios для определения конфигурации
- •Лабораторная работа 3. Тестирование оптических накопителей.
- •Использование I/o Control Codes.
- •Использование Windows Management Instrumentation (wmi).
- •Порты контроллера накопителей на гибких дисках
- •Порт 3f2h.
- •Порт 3f4h.
- •Команды управления накопителями
- •Перечень команд контpоллеpа нгмд
- •Структура байтов состояния
- •Формат дорожки
- •Отличия контроллера для ат-подобных пэвм
- •Порт 3f7h.
- •Лабораторная работа № 5. Диагностика контроллера накопителей на жестких дисках.
- •Контроллер жестких дисков для хт-подобных пэвм
- •Порты ввода-вывода
- •Порт 320h.
- •Порт 321h.
- •Порт 322h.
- •Порт 323h.
- •Общий формат команды и терминология
- •Описание команд Проверка готовности накопителя (класс 0, опкод 0).
- •Рекалибровать (класс 0, опкод 1).
- •Запрос состояния (класс 0, опкод 3).
- •Форматирование накопителя (класс 0, опкод 4).
- •Проверка секторов (класс 0, опкод 5).
- •Форматирование дорожки (класс 0, опкод 6).
- •Форматирование дефектной дорожки (класс 0, опкод 7).
- •Чтение секторов (класс 0, опкод 8).
- •Запись секторов (класс 0, опкод 0Ah).(*)
- •Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)
- •Чтение внутреннего озу контроллера (класс 0, опкод 0Eh).(*)
- •Запись внутреннего озу контроллера (класс 0, опкод 0Fh).(*)
- •Диагностика внутреннего озу контроллера (класс 7,опкод 0).(*)
- •Тест устройства (класс 7, опкод 3).
- •Расширенный тест контроллера (класс 0, опкод 4).
- •Считывание без контроля (класс 7, опкод 5).
- •Запись без контроля (класс 7, опкод 6).
- •Разметка диска
- •Контроллер жестких дисков для ат-подобных пэвм
- •Описание портов ввода-вывода Порт 1f0h
- •Порт 1f1h.
- •Система команд
- •Лабораторная работа №6. Программное тестирование портов для работы с клавиатурой
- •Аппаратное прерывание клавиатуры
- •Средства bios для работы с клавиатурой
- •Чтение символа с ожиданием
- •Проверка буфера на наличие в нем символов
- •Получение состояния переключающих клавиш
- •Установка временных характеристик клавиатуры
- •Запись символов в буфер клавиатуры
- •Чтение символа с ожиданием для 101-клавишной клавиатуры
- •Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Лабораторная работа № 7. Тестирование и контроль оперативной памяти.
- •Алгоритм определения объёма оперативной памяти.
- •Сущность тестирования памяти.
- •Алгоритм диагностирования памяти в тесте Memtest86.
- •Лабораторная работа № 8. Программирование принтера. Цель работы: изучение методов программирования принтера.
- •Средства ms-dos для работы с принтером
- •Программирование режимов принтера
- •Установка атрибутов/цветов символов.
- •Сдвиг экрана и страницы.
- •Вертикальный сдвиг текстового экрана.
- •Сдвиг текстового экрана горизонтально.
- •Переключение между текстовыми страницами.
- •Сдвиг между страницами текста.
- •Использование wmi.
- •Аналогичным образом могут использоваться свойства и других классов.
Лабораторная работа 3. Тестирование оптических накопителей.
Цель работы: изучить методы и написать программу определения характеристик CD-привода.
Для программирования привода оптических дисков может применяться несколько способов. Причем выбор в основном обусловлен той операционной системой, на которой предполагается использование написанной программы и соответственно, тем уровнем абстракции по отношению к устройству и соответственно возможностями программы. То есть, например, при использовании операционной системы MSDOS достигается наименьший уровень абстракции, но вместе с тем возникает и сложность написания программы. Однако написание программ на таком низком уровне (с использование низкоуровневых языков программирования), не является столь необходимым в настоящее время. К тому же оно подразумевает углубленное знание аппаратной части ПК. При написании программ для операционных систем линейки Windows, достигается наиболее высокий уровень абстракции, а вместе увеличивается скорость и качество полученной программы. Для работы с приводами компакт дисков в эти операционные системы есть встроенные технологии(так же называемые интерфейсами), облегчающие написание программ. Рассмотрим каждую из этих технологий более подробно.
ASPI
Для использования интерфейса ASPI в проекте, для начала, нужно определиться, с типом используемых Библиотек, т.е. будут они динамические или статические. При динамической компиляции достаточно загрузить библиотеку Wnaspi32.dll (расположена в системной папке Windows), и получить указатели на используемые функции ASPI:
// объявляем указатели на функции ASPI
DWORD (*pfnGetASPI32SupportInfo) (void);
DWORD (*pfnSendASPI32Command) (LPSRB);
DWORD (*pfnGetASPI32Buffer) (PASPI32BUFF);
DWORD (*pfnFreeASPI32Buffer) (PASPI32BUFF);
BOOL (*pfnTranslateASPI32Address) (PDWORD, PDWORD);
// загружаем динамическую библиотеку wnaspi32.dll
HINSTANCE hInstAspi = LoadLibrary ("wnaspi32");
// получаем указатели на функции библиотеки
(FARPROC) pfnGetASPI32SupportInfo = GetProcAddress (hInstAspi, "GetASPI32SupportInfo");
(FARPROC) pfnSendASPI32Command = GetProcAddress (hInstAspi, "SendASPI32Command");
(FARPROC) pfnGetASPI32Buffer = GetProcAddress (hInstAspi, "GetASPI32Buffer");
(FARPROC) pfnFreeASPI32Buffer = GetProcAddress (hInstAspi, "FreeASPI32Buffer");
(FARPROC) pfnTranslateASPI32Address = GetProcAddress (hInstAspi, "TranslateASPI32Adress");
Таким образом мы динамически загрузили библиотеку и получили указателя на функции ASPI для дальнейшего использования в программе. Если Вы предпочитаете статическую компиляцию, то Вам понадобятся файлы определений (Wnaspi32.h и Scsidefs.h), а также библиотека Wnaspi32.lib для правильной компановки проекта. Файлы определений стоит добавить в начало файла проекта, а библиотеку присоединить к проекту одним из следующих способов:
1. Выбрать в главном меню оболочки Visual C++ следующий путь: Project\Settings\Link. Добавить название библиотеки в соответсвующее текстовое окно. Нажать кнопку OK.
2. Открыть для редактирования файл stdafx.h и добавить перед #endif строку #pragma comment (lib, "wnaspi32.lib"):
. . .
#pragma comment (lib, "wnaspi32.lib");
#endif