Розробка програми діагностики і тестування апаратних засобів пк

Після виведення списку пристроїв, в програмі необхідно реалізувати затримку, потім повернення в меню.

У разі вибору пункту «тест пам'яті» програма повинна виконувати тестування не менше 640Кб. пам'яті. У разі якщо пам'ять справна, на екран виводитися повідомлення «тест пройдено», в іншому випадку «тест не пройдений». Також необхідно реалізувати затримку і повернення в меню.







У разі вибору пункту «вихід», необхідно реалізувати завершення роботи програми і передачу управління операційній системі DOS.

1.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 - збір відомостей про систему;

Збір відомостей має здійснюватися у вигляді списку пристроїв з поточним станом. Стан від назви пристрою повинно відділятися двокрапкою. Список пристроїв і можливих їх станів див. У таблиці 1.

Пункт «тест пам'яті» має здійснювати перевірку елементів пам'яті на працездатність. Існує два типи несправностей елементів пам'яті:

Пошкодження «постійні нулі» полягає в наступному: припустимо, що біт №4 в байті, зображеного на рис. 1 - несправний. В даний момент в байт записано число нуль (вісім нулів у двійковій системі cчісленія), якщо вважати вміст цього байта, то на виході вийти нуль - начебто він справний.







7 6 5 4 3 2 1 0

Пошкодження «постійні одиниці» схожий з видом «постійні нулі». Різниця полягає лише в тому, що у вигляді «постійні нулі» несправні біти знаходяться завжди в нульовому стані, а у вигляді «постійні одиниці» в одиничному.

У зв'язку з цим необхідно реалізувати перевірку елементів пам'яті на два види несправностей: «постійні нулі» і «постійні одиниці».

2.2. Опис структури програми

Програма була реалізована за допомогою декількох призначених для користувача процедур і макросів (див. Таблицю 2).

Досить часто в програмах, особливо великих, доводиться кілька разів вирішувати одну і ту ж підзадачі і тому доводиться виписувати однакову групу команд, вирішальних цю підзадачу. Щоб уникнути повторного виписування такої групи команд, її зазвичай виписують один раз і оформляють відповідним чином, а потім в потрібних місцях програми просто передають управління на ці команди, які, пропрацювавши, повертають управління назад. Така група команд, яка вирішує деяку підзадачі і яка організована таким чином, називається процедурою.

Нерідко буває корисним попереднє (до початку трансляції) перетворення тексту програми. Наприклад, може знадобитися, щоб якийсь фрагмент програми був продубльований кілька разів або щоб в залежності від деяких умов в тексті програми були збережені одні фрагменти і вилучені інші. Подібну можливість надають так звані макросредства. Розширення мови асемблера за рахунок цих коштів зазвичай називають макромовою.

Програма, написана на макромови, транслюється в два етапи. Спочатку вона перекладається на, так би мовити, чиста мова асемблера, тобто перетвориться до виду, де немає ніяких макросредств. Цей етап називається макрогенерацій, його здійснює спеціальний транслятор - макрогенератор. На другому етапі отримана програма перекладається на машинний мову. Це етап ассемблирования, його здійснює асемблер.

Таблиця процедур і макросів

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

збір відомостей про ПК;

Якщо обраний перший пункт, виконується процедура ShowSved. Усередині даної процедури реалізована очищення екрана, за допомогою макросу ClrScr, а також діагностика обладнання і затримка, які реалізовані за допомогою макросу press. Після виконання даної процедури програма переходить в початок, тобто в меню.

У разі вибору другого пункту, виконується процедура TestMem, тестуються оперативну пам'ять ПК. Також всередині даної процедури реалізовані очищення екрана і затримка перед виходом в меню.

Якщо обраний третій пункт, програма, не очищаючи екран, передає управління операційній системі DOS.

2.3. Опис алгоритму розв'язання задачі

У зв'язку з цим максимальний обсяг сегмента дорівнює 64Кб, а мінімальний дорівнює 16 байтам.

2.4. Налагодження і тестування

Тестування проводилося за допомогою відладчика Turbo Debugger корпорації Borland. Була виконана трасування всієї програми. Трасування - це процес покрокового виконання команд з лістингом станів всіх регістрів, прапорів, сегменту даних на момент виконання кожної команди.

В ході трасування були виявлені такі помилки:

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

"Зависання" при виклику процедури TestMem - помилка в реалізації алгоритму тесту пам'яті - неправильно вказана мітка переходу у вкладеному циклі.

Крім того, було виявлено безліч помилок в синтаксисі команд.

Так як програма писалася на одному комп'ютері, перевірити її на правильність визначення конфігурації ПК було неможливо, тому, після завершення програми, вона виконувалася на різних ПК з різними конфігураціями: в ході цього тесту помилок обнаруженно не було - всі апаратні засоби визначалися правильно.

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

2.5. Інструкція до користувача

Для запуску програми виконайте файл з ім'ям «kurs.com». Вашій увазі буде забезпечено анотація - уважно прочитайте її, а потім натисніть будь-яку клавішу на клавіатурі (наприклад, enter). Потім на екрані висвітиться меню, зображене на рис. 3.