Диагностическая программа ВВЕДЕНИЕ В связи с появлением персональных компьютеров мгновенно вырос рынок аппаратных средств, как грибы росло число производителей, предлагающих свою продукцию. При этом, покупая то или иное аппаратное средство, производитель не может а иногда и не хочет дать 100 гарантию, что оно исправно. В связи с этим также стремительно развивался и рынок программных тестирующих средств. На рынке существует огромное количество отличных диагностических программ, написанных большими
корпорациями такими как Symantec inc APS Advanced Personal Systems, Microsoft и т.д но все существующие диагностирующие программы написаны на язках высокого уровня, а значит не достаточно быстры и наджны. Автор проекта не бертся конкурировать с огромными гигантами по количеству выполняемых этими программами тестов в силу того, что это бессмысленно. Была предпринята попытка написать более надежную, быструю диагностическую программу с использованием
машинно-ориентированного языка программирования Ассемблер. ОБЩИЙ РАЗДЕЛ 1. Технико-математическое описание задачи Программа делится на две части Первая часть программы - Сбор сведений - это часть программы, собирающая справки об оборудовании, установленном на ПК, на котором программа выполняется. Справки наводятся о следующих устройствах математическом сопроцессоре
СОМ портах LPT портах дисководах CD-ROM приводах расширенном управлении электропитанием манипуляторе мышь. Математический сопроцессор это микрочип, устанавливаемый на материнскую плату, который работает совместно с основным процессором, осуществляет обработку чисел с плавающей точкой, тем самым разгружая основной процессор. Может устанавливаться опционально по желанию пользователя либо самим пользователем, т.е. может либо присутствовать, либо отсутствовать.
СОМ порты это порты с последовательным типом передачи данных, предназначенные для подключения коммуникационных, манипуляторных и других устройств, где требуется сравнительно не- большая скорость передачи данных. Количество установленных последовательных портов может варьироваться от одного до четырх. На некоторых материнских платах существует ограничение на подключение последовательных портов, например если это значение будет два, и если вы подключите четыре порта, то работать будут все равно два.
LPT порты это порты с параллельным типом передачи данных, предназначенные для подключения принтеров и других устройств, где требуется относительно большая скорость передачи данных, а также могут использоваться для соединения двух компьютеров между собой для обмена данными. Количество установленных LPT портов может варьироваться от одного до четырх. Дисковод устройство, предназначенное для чтениязаписи накопителей на магнитном диске гибкий диск.
Существует четыре типа дисководов 360 Кб. 720 Кб. 1.2 Мб. 1.44 Мб. Они различаются по формату обслуживаемых дискет и максимально возможному объему данных, записываемых на дискету соотвестсвующего типа. CD-ROM привод устройство, предназначенное только для чтения накопителей на лазерных дисках. Различаются по скорости доступа к данным и скоростью вращения лазерного диска.
Обычно устанавливают не более одного привода. РУЭ расширенное управление электропитанием стандарт, служащий для экономии электроэнергии. Представляет собой следующий набор функций автоматическое отключение электропитания спящий режим автоматическое отключение питания монитора автоматическое отключение питания жестких дисков. Может находиться в двух состояниях включено или выключено. Вторая часть программы - диагностика памяти - проверяет на работоспособность память
ПК, на котором выполняется программа. 2. Требования к функциональным характеристикам При запуске программы на экран должна выводиться аннотация, затем, после нажатия на любую клавишу, должен очищаться экран и появляться меню из трех пунктов 1 сбор сведений о системе 2 тест памяти 3 выход. Для выбора интересующего пункта необходимо нажать на клавиатуре цифры, соответствующие номерам пунктов. В случае выбора пункта Сбор сведений о системе выполняется последовательный вывод информации о
ПК в виде списка устройств с текущим состоянием. Ниже приведена таблица со списком устройств и их возможными состояниями. Таблица 1 Присутствует, отсутствуетМаксимальное количество подключаемых СОМ-портовОт 0 до 4Количество CОМ-портовОт 0 до 4Количество LPT-портовОт 0 до 4Первый дисководОтсутствует, 360Kb,
720Kb, 1.2Mb, 1.44Mb.Второй дисководОтсутствует, 360Kb, 720Kb, 1.2Mb, 1.44Mb.Количество установленных CD-ROM приводовОт 0 до 4Отсутствует, присутствует После вывода списка устройств, в программе необходимо реализовать задержку, затем возврат в меню. В случае выбора пункта тест памяти программа должна выполнять тестирование не менее 640Кб. памяти.
В случае если память исправна, на экран выводиться сообщение тест пройден, в противном случае тест не пройден. Также необходимо реализовать задержку и возврат в меню. В случае выбора пункта выход, необходимо реализовать завершение работы программы и передачу управления операционной системе DOS. 3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим
IBM PC совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с процессорами старшего поколения например 80286 или 80386, т.к. особенностью архитектуры 80х86 является преемственность на уровне машинных команд программы, написанные для младших моделей процессоров, без всяких изменений могут быть выполнены на более старших моделях. Компилированный код программы занимает всего 2 Кб это связано с отсутствием избыточного кода, которого
очень много при использовании языков высокого уровня. В связи с этим программа может легко поместиться на дискету 360 Кб. Программа работает в текстовом режиме и не использует цветовой гаммы, поэтому ей достаточно монитора CGA. Кроме того она может без всяких изменений работать на мониторах старшего поколения таких, как EGA, VGA и SVGA. Так как программа тестирует 640 Кб оперативной памяти, этот объем является минимумом.
1.3.1. Обоснования выбора языка программирования Для написания данной программы был выбран язык ассемблера. В связи с тем, что он наиболее подходит для реализации такого рода задач, т.е. где требуется доступ к портам, выполнение специальных прерываний, доступ к области памяти BIOS и т.д. Язык ассемблера, представляет собой фактически символьную форму записи машинного языка в нем вместо цифровых кодов операций вписывают привычные знаки операций или их словесные названия, вместо
адресов имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит е на машинный язык, и далее полученную машинную программу выполняют. Для любой ЭВМ можно придумать разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частности, и для ПК разработано несколько таких языковASM-86,
MASM, TASM. Для реализации данной задачи был выбран язык, который создан фирмой Borland и полное название которого турбоассемблер, сокращенно TASM. Надо отметить, что этот язык наиболее часто используется на ПК. СПЕЦИАЛЬНЫЙ РАЗДЕЛ 2.1. Постановка задачи Разработать программу тестирования оперативной памяти и сбора сведений о ПК. Реализовать меню, в котором пользователю предлагается выбор из трх пунктов 1
сбор сведений о системе 2 тест памяти 3 выход. Сбор сведений должен осуществляться в виде списка устройств с текущим состоянием. Состояние от названия устройства должно отделяться двоеточием. Список устройств и возможных их состояний см. в таблице 1. Пункт тест памяти должен осуществлять проверку ячеек памяти на работоспособность. Существует два типа неисправностей ячеек памяти постоянные нули постоянные единицы.
Вид неисправности постоянные нули заключается в следующем предположим, что бит 4 в байте, изображенном на рис. 1 неисправный. В данный момент в байт записано число ноль восемь нулей в двоичной системе cчисления, если считать содержимое этого байта, то на выходе получиться ноль вроде бы он исправен. Но это лишь только видимость, если в этот байт записать число FFh восемь единиц в шестнадцатиричной системе счисления, что в двоичной системе счисления эквивалентно
восьми единицам, то получится картина, представленная на рис. 2. В этом случае, если считать содержимое этого байта, на выходе получиться EFh, то есть, записывая в бит 4 единицу, мы при считывании все равно получаем ноль. Следовательно бит 4, а значит и байт, неисправен. Вид неисправности постоянные единицы схож с видом постоянные нули.
Разница состоит лишь в том, что в виде постоянные нули неисправные биты находятся всегда в нулевом состоянии, а в виде постоянные единицы в единичном. В связи с этим необходимо реализовать проверку ячеек памяти на два вида неисправностей постоянные нули и постоянные единицы. 2.2. Описание структуры программы Программа была реализована с помощью нескольких пользовательских процедур и макросов см. таблицу 2.
Довольно часто в программах, особенно больших, приходится несколько раз решать одну и ту же подзадачу и поэтому приходится выписывать одинаковую группу команд, решающих эту подзадачу. Чтобы избежать повторного выписывания такой группы команд, ее обычно выписывают один раз и оформляют соответствующим образом, а затем в нужных местах программы просто передают управление на эти команды, которые, проработав, возвращают управление обратно.
Такая группа команд, которая решает некоторую подзадачу и которая организована таким образом, называется процедурой. Нередко бывает полезным предварительноедо начала трансляции преобразование текста программы. Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства.
Расширение языка ассемблера за счет этих средств обычно называют макроязыком. Программа, написанная на макроязыке, транслируется в два этапа. Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется макрогенерация, его осуществляет специальный транслятор макрогенератор. На втором этапе полученная программа переводится на машинный язык.
Это этап ассемблирования, его осуществляет ассемблер. Таблица 2 Таблица процедур и макросов НазваниеТипНазначениеMovcurМакросПремеща ет курсорClrscrМакросОчищает экранPrintМакросВыводит на экран строкуPressМакросРеализует задержкуShowQuestionПроцедураВыводит на экран менюSborSvedПроцедураОсуществляет сбор сведенийTestMemПроцедураОсуществляет тест памяти При выполнении программы на экран выводится аннотация, пользователь, ознакомившись с программой, нажимает
на любую клавишу, и на экран выводится меню с помощью процедуры ShowQuestion, в котором пользователь может выбрать интересующий его пункт меню сбор сведений о ПК тест памяти выход. Если выбран первый пункт, выполняется процедура ShowSved. Внутри данной процедуры реализована очистка экрана, с помощью макроса ClrScr, а также диагностика оборудования и задержка, реализованные с помощью макроса press.
После выполнения данной процедуры программа переходит в начало, т.е. в меню. В случае выбора второго пункта, выполняется процедура TestMem, тестирующая оперативную память ПК. Также внутри данной процедуры реализованы очистка экрана и задержка перед выходом в меню. Если выбран третий пункт, программа, не очищая экран, передает управление операционной системе DOS . 2.3. Описание алгоритма решения задачи
Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса их принято называть физическими адресами. Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом. Это плохо. Чтобы сократить размеры команд, поступают следующим образом. Память условно делят на участки, которые принято называть сегментами.
Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение размер любого сегмента не должен превышать 64Кб. В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы ABofs, где В адрес сегмента, а 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 Выход Ваш выбор рис. 3 Для того, чтобы получить краткие сведения о вашем ПК - нажмите клавишу 1, затем Enter на вашей клавиатуре, и на экран высветится список устройств с текущем
состоянием. Для возврата в меню нажмите любую клавишу. Для того, чтобы протестировать оперативную память вашего ПК нажмите клавишу, 2 затем Enter на вашей клавиатуре, и на экране высветится сообщение о состоянии памяти вашего ПК. Для возврата в меню нажмите любую клавишу. Для того, чтобы выйти из программы - нажмите клавишу 3, затем
Enter на вашей клавиатуре. 2.6. Заключение о результатах проектируемой задачи В ходе выполнения поставленной в курсовом проекте задачи были приобретены навыки реализации сложных ассемблерных программ с использованием макросов и процедур. Кроме того, был получен огромный опыт и умение работы с CMOS область памяти, где хранятся сведения о конфигурации
ПК на низком уровне, т.е. с использованием прерывания BIOS 11h и 70h порта, а также опыт использования дополнительных сегментных регистров и регистров модификаторов. Реализованная программа может быть полезна при диагностике оборудования на относительно старых моделях ПК, поскольку в программе используется система команд 8086 процессора, который был выпущен в 1979 г. корпорацией Intel, и сейчас эта модель процессора является устаревшей.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |