Разработка программы диагностики и тестирования аппаратных средств
Рефераты >> Программирование и компьютеры >> Разработка программы диагностики и тестирования аппаратных средств

При выполнении программы на экран выводится аннотация, пользователь, ознакомившись с программой, нажимает на любую клавишу, и на экран выводится меню (с помощью процедуры ShowQuestion), в котором пользователь может выбрать интересующий его пункт меню:

- сбор сведений о ПК;

- тест памяти;

- выход.

Если выбран первый пункт, выполняется процедура ShowSved. Внутри данной процедуры реализована очистка экрана, с помощью макроса ClrScr, а также диагностика оборудования и задержка, реализованные с помощью макроса press. После выполнения данной процедуры программа переходит в начало, т.е. в меню.

В случае выбора второго пункта, выполняется процедура TestMem, тестирующая оперативную память ПК. Также внутри данной процедуры реализованы очистка экрана и задержка перед выходом в меню.

Если выбран третий пункт, программа, не очищая экран, передает управление операционной системе DOS .

2.3. Описание алгоритма решения задачи

Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса; их принято называть физическими адресами. Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом. Это плохо. Чтобы сократить размеры команд, поступают следующим образом.

Память условно делят на участки, которые принято называть сегментами. Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение: размер любого сегмента не должен превышать 64Кб.

В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы A=B+ofs, где В – адрес сегмента, а ofs – смещение относительно адреса В.

Таким образом ,если в команде надо указать физический адрес А, то адрес сегмента B – “прячем” в так называемый сегментный регистр, а в команде указываем лишь этот регистр и слагаемое ofs. Это даёт экономию размера команд.

В связи с этим максимальный объем сегмента равен 64Кб, а минимальный равен 16 байтам.

Процедура теста памяти реализована с помощью вложенного цикла. Первый цикл увличивает на еденицу модификационный регистр BP до тех пор, пока BP меньше 0A000h (это последний сегмент 640 Кб). Внутри этого цикла реализован еще один цикл - он увеличивает на единицу модификационный регистр SI до тех пор, пока он меньше 16. Внутри вложенного цикла осуществляется непосредственно проверка памяти на неисправные биты: сначала происходит проверка на «постоянные единицы» - в сегмент по адресу BP со смещением SI записываеться ноль (что в двоичной системе счисления означает восемь нулей), затем осуществляется проверка этого значения, т.е. нуля. Если это значение равно нулю, значит память исправна, в противном случае - не исправна. Затем происходит проверка на «постоянные нули»: по тому же адресу записывается число FFh (что в двоичной системе счисления означает восемь едениц), затем осущесвляется проверка этого значения. Если значение равно FFh, значит память исправна, в противном случае - неисправна.

2.4. Отладка и тестирование

Тестирование производилось с помощью отладчика Turbo Debugger корпорации Borland. Была выполнена трассировка всей программы. Трассировка – это процесс пошагового выполнения команд с листингом состояний всех регистров, флагов, сегмента данных на момент выполнения каждой команды.

В ходе трассировки были обнаружены следующие ошибки:

неправильное определение состояния математического сопроцессора - неправильно указанная маска очистки, так называемого слова «equpment list», получаемого с помощью прерывания 11h;

“зависание” при вызове процедуры TestMem - ошибка в реализации алгоритма теста памяти – неправильно указанная метка перехода во вложенном цикле.

Кроме того, было обнаружено множество ошибок в синтаксисе команд.

Так как программа писалась на одном компьютере, проверить её на правильность определения конфигурации ПК не представлялось возможным, поэтому, после завершения программы, она выполнялась на разных ПК с разными конфигурациями: в ходе этого теста ошибок обнаруженно не было – все аппаратные средства определялись правильно.

Также невозможно было проверить программу на правильность теста памяти на практике, потому что она выполнялась на всех ПК с исправной памятью, а попытки найти ПК с заведомо неисправной оперативной памятью не увенчались успехом. Тем не менее теоретически тест должен работать правильно.

2.5. Инструкция к пользователю

Для запуска программы выполните файл с именем «kurs.com». Вашему вниманию предоставиться аннотация – внимательно прочитайте её, а затем нажмите любую клавишу на клавиатуре (например, enter). Затем на экране высветится меню, изображенное на рис. 3.

1 – Сведения о системе

2 - Тест памяти

3 – Выход

Ваш выбоp ? :  

рис. 3

Для того, чтобы получить краткие сведения о вашем ПК - нажмите клавишу «1», затем «Enter» на вашей клавиатуре, и на экран высветится список устройств с текущем состоянием. Для возврата в меню нажмите любую клавишу.

Для того, чтобы протестировать оперативную память вашего ПК – нажмите клавишу, «2» затем «Enter» на вашей клавиатуре, и на экране высветится сообщение о состоянии памяти вашего ПК. Для возврата в меню нажмите любую клавишу.

Для того, чтобы выйти из программы - нажмите клавишу «3», затем «Enter» на вашей клавиатуре.

2.6. Заключение о результатах проектируемой задачи

В ходе выполнения поставленной в курсовом проекте задачи были приобретены навыки реализации сложных ассемблерных программ с использованием макросов и процедур. Кроме того, был получен огромный опыт и умение работы с CMOS (область памяти, где хранятся сведения о конфигурации ПК) на низком уровне, т.е. с использованием прерывания BIOS 11h и 70h порта, а также опыт использования дополнительных сегментных регистров и регистров модификаторов.

Реализованная программа может быть полезна при диагностике оборудования на относително старых моделях ПК, поскольку в программе используется система команд 8086 процессора, который был выпущен в 1979 г. корпорацией Intel, и сейчас эта модель процессора является устаревшей.

СПИСОК ЛИТЕРАТУРЫ

1. В.Н. Пильщиков. Программирование на языке ассемблера IBM PC. – М.:Диалог-МИФИ. 1997


Страница: