ЗМІСТ p>
ВСТУП ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 4
ЗАГАЛЬНИЙ РОЗДІЛ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5 p>
1. Техніко-математичний опис завдання ... ... .... ... ... ... ... ... ... ... 5 p>
2. Вимоги до функціональних характеристик ... ... ... ... ... ... ... .7 p>
3. Вимоги до технічних і програмних засобів ... ... ... .... ... 8 p>
1. Обгрунтування вибору мови програмування ... ... ... ... ... ... ... ... .9
СПЕЦІАЛЬНИЙ РОЗДІЛ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 11
2.1. Постановка завдання ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 11
2.2. Опис структури програми ... ... ... ... ... ... ... ... ... ... ... ... ... .. ... 12
2.3. Оісаніе алгоритму рішення задачі ... ... ... ... ... ... ... ... ... ... ... ... ... .14
2.4. Налагодження і тестування ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .16
2.5. Інструкція до користувача ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 17
2.6. Висновок про результати проектованої завдання ... ... ... ... ... ... ... .. 18
ДОДАТОК 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 19
ДОДАТОК 2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 21
СПИСОК ЛІТЕРАТУРИ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .30 p>
ВСТУП p>
У зв'язку з появою персональних комп'ютерів миттєво зріс ринокапаратних засобів, як гриби зростала кількість виробників, що пропонують своюпродукцію. При цьому, купуючи той чи інший апаратний засіб, виробникне може (а іноді й не хоче) дати 100% гарантію, що воно справно. p>
У зв'язку з цим також стрімко розвивався і ринок пограмнийтестуючих коштів. На ринку існує величезна кількість відміннихдіагностичних програм, написаних великими корпораціями: такими як
Symantec inc., APS (Advanced Personal Systems), Microsoft і т.д., але всесущест діагностуючих програми написані на язках високого рівня, азначить не досить швидкі й надійні. p>
Автор проекту не береться конкурувати з величезними гігантами покількості виконуваних цими програмами тестів в силу того, що цебезглуздо. Була зроблена спроба написати більш надійну, швидкудіагностичну програму з використанням машино-орієнтованої мовипрограмування - Асемблер. p>
ЗАГАЛЬНИЙ РОЗДІЛ p>
1.1. Техніко-математичний опис завдання p>
Програма ділиться на дві частини: p>
Перша частина програми - Збір відомостей - це частина програми,збирає довідки про обладнання, встановлене на ПК, на якомупрограма виконується. Довідки наводяться про наступних пристроях: p>
- математичному співпроцесора; p>
- СОМ портах; p>
- LPT портах; p>
- дисководах;
- CD-ROM приводах; p>
- розширеному управлінні електроживленням; p>
- маніпуляторі «миша». p>
Математичний співпроцесор - це мікрочіп, що встановлюється наматеринську плату, який працює спільно з основним процесором,здійснює обробку чисел з плаваючою точкою, тим самим розвантажуючиосновний процесор. Може встановлюватися опціонально за бажаннямкористувача або самим користувачем, тобто може або бути присутнім, абовідсутнім. p>
СОМ порти - це порти з послідовним типом передачі даних,призначені для підключення комунікаційних, маніпуляторних та іншихпристроїв, де потрібно порівняно не-велика швидкість передачі даних.
Кількість встановлених послідовних портів може варіюватися відодного до чотирьох. На деяких материнських платах існує обмеженняна підключення послідовних портів, наприклад: якщо це значення будедва, і якщо ви підключите чотири порти, то працювати будуть все одно два. p>
LPT порти - це порти з паралельним типом передачі даних,призначені для підключення принтерів та інших пристроїв, де потрібновідносно велика швидкість передачі даних, а також можуть використовуватисядля з'єднання двох комп'ютерів між собою для обміну даними. Кількістьвстановлених LPT портів може варіюватися від одного до чотирьох. p>
Дисковод - пристрій, призначений для читання/запису накопичувачівна магнітному диску (гнучкий диск). Існує чотири типи дисководів: p>
- 360 Кб.; P>
- 720 Кб.; P>
- 1.2 Мб.; P>
- 1.44 Мб.
Вони розрізняються за форматом обслуговуються дискет і максимально можливогообсягу даних, записуваних на дискету соотвестсвующего типу. p>
CD-ROM привід - пристрій, призначений тільки для читаннянакопичувачів на лазерних дисках. Розрізняються по швидкості доступу до даних ішвидкістю обертання лазерного диска. Зазвичай встановлюють не більше одногопривода. p>
РУЕ (розширене керування електроживленням) - стандарт, що служить дляекономії електроенергії. Являє собою наступний набір функцій: p>
- автоматичне відключення електроживлення; p>
- «сплячий» режим; p>
- автоматичне відключення живлення монітора; p>
- автоматичне відключення живлення жорстких дисків.
Може знаходитися в двох станах: включено або вимкнений. P>
Друга частина програми - діагностика пам'яті - перевіряє напрацездатність пам'ять ПК, на якому виконується програма. p>
1.2. Вимоги до функціональних характеристик p>
При запуску програми на екран повинна виводитися анотація, потім,після натискання на будь-яку клавішу, повинен очищатися екран і з'являтися менюз трьох пунктів: p>
1 - збір відомостей про систему; p>
2 - тест пам'яті; p>
3 - вихід.
Для вибору потрібного пункту необхідно натиснути на клавіатурі цифри,відповідні номерам пунктів. p>
У разі вибору пункту «Збір відомостей про систему» виконуєтьсяпослідовний висновок інформації про ПК у вигляді списку пристроїв з поточнимстаном. Нижче наведена таблиця із списком пристроїв і їх можливимистанами. p>
Таблиця 1 p>
Таблиця можливих станів пристроїв
| Пристрій | Можливі стану |
| Математичний співпроцесор | Присутній, відсутній |
| Максимальна кількість | Від 0 до 4 |
| підключаються СОМ-портів | |
| Кількість Cом-портів | Від 0 до 4 |
| Кількість LPT-портів | Від 0 до 4 |
| Перший дисковод | Відсутній, 360Kb, 720Kb, 1.2Mb, |
| | 1.44Mb. |
| Другий дисковод | Відсутній, 360Kb, 720Kb, 1.2Mb, |
| | 1.44Mb. |
| Кількість встановлених CD-ROM | Від 0 до 4 |
| приводів | |
| Розширене керування | відсутня, є, |
| живленням (APM) | включено/вимкнено |
| Маніпулятор «миша» | Відсутній, присутній | p>
Після виведення списку пристроїв, в програмі необхідно реалізувати затримку,потім повернення в меню. p>
У разі вибору пункту «тест пам'яті» програма повинна виконуватитестування не менше 640Кб. пам'яті. У випадку, якщо пам'ять справна, наекран виводиться повідомлення «тест пройдено», в іншому випадку «тест непройдений ». Також необхідно реалізувати затримку і повернення в меню. P>
У разі вибору пункту «вихід», необхідно реалізувати завершенняроботи програми і передачу управління операційній системі DOS. p>
1.3. Вимоги технічним і програмним засобам p>
Програма виконана на мові асемблера 8086 процесора,відповідно їй необхідний IBM PC - сумісний комп'ютер із процесоромне нижче 8086, також програма може виконуватися на комп'ютерах зпроцесорами старшого покоління (наприклад: 80286 або 80386), тому щоособливістю архітектури 80х86 є наступність на рівні машиннихкоманд: програми, написані для молодших моделей процесорів, без всякихзмін можуть бути виконані на більш старших моделях. p>
компілює код програми займає всього 2 Кб - це пов'язано звідсутністю надлишкового коду, якого дуже багато при використанні моввисокого рівня. У зв'язку з цим програма може легко поміститися надискету 360 Кб. p>
Програма працює в текстовому режимі і не використовує колірної гами,тому їй досить монітора CGA. Крім того вона може без всякихзмін працювати на моніторах старшого покоління таких, як EGA, VGA і
SVGA. P>
Так як програма тестує 640 Кб оперативної пам'яті, цей обсягявляеться мінімумом. p>
1.3.1. Обгрунтування вибору мови програмування p>
Для написання даної програми була вибрана мова асемблера. У зв'язку зтим, що він найбільш підходить для реалізації такого роду завдань, тобто детребуеться досуп до портів, виконання спеціальних переривань, доступ дообласті пам'яті BIOS і т.д. p>
Мова асемблера, представляє собою фактично символьну форму записумашинної мови: у ньому замість цифрових кодів операцій вписують звичнізнаки операцій або їх словестние назви, замість адреси - імена, аконстанти записують у десяткове системі числення. Програму, записанув такому вигляді, вводять в ЕОМ і подають на вхід спеціальне транслятору,званого асемблером, який перекладає її на машинний мова, і даліотриману машинну програму виконують. p>
Для будь-якої ЕОМ можна придумати різні мови асемблера, хоча бтому, що можна по-різному позначати машинні операції. У частості, ідля ПК розроблено декілька таких мов (ASM-86, MASM, TASM). Дляреалізації даної задачі була вибрана мова, який створений фірмою Borland іповна назва якого - турбоассемблер, скорочено TASM. Треба відзначити,що ця мова найбільш часто використовується на ПК. p>
СПЕЦІАЛЬНИЙ РОЗДІЛ p>
2.1. Постановка завдання p>
Розробити програму тестування оперативної пам'яті та зборувідомостей про ПК. p>
Реалізувати меню, в якому користувачеві пропонується вибір з трьохпунктів: p>
1 - збір відомостей про систему; p>
2 - тест пам'яті; p>
3 - вихід. p>
Збір відомостей має здійснюватися у вигляді списку пристроїв з поточнимстаном. Статус від назви пристрою повинно відділятися двокрапкою.
Список пристроїв і їх можливих станів див. у таблиці 1. P>
Пункт «тест пам'яті» має здійснювати перевірку елементів пам'яті напрацездатність. Існує два типи несправностей елементів пам'яті: p>
- «постійні нулі»; p>
- «постійні одиниці». P>
Вид несправності «постійні нулі» полягає в наступному:припустимо, що біт № 4 в байті, зображеного на рис. 1 - несправний. Уданий момент в байт записано число нуль (вісім нулів у двійковій системіcчісленія), якщо рахувати вміст цього байта, то на виході вийтинуль - начебто він справний. p>
7 6 5 4 3 2 1 0
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | p>
рис. 1 p>
Але це лише тільки видимість, якщо в цей байт записати число FFh (вісімодиниць в шістнадцятковій системі числення), що в двійковій системічислення еквівалентно восьми одиницям, то вийде картина,представлена на рис. 2. У цьому випадку, якщо рахувати вміст цьогобайта, на виході вийти EFh, тобто, записуючи в біт № 4 одиницю, мипри зчитуванні все одно отримуємо нуль. Отже біт № 4, а значить ібайт, несправний. p>
7 6 5 4 3 2 1 0
| 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | p>
рис. 2 p>
Вид несправності «постійні одиниці» схожий з виглядом «постійнінулі ». Різниця полягає лише в тому, що у вигляді «постійні нулі» несправнібіти знаходяться завжди в нульовому стані, а у вигляді «постійні одиниці» водиничному. p>
У зв'язку з цим необхідно реалізувати перевірку елементів пам'яті на двавиди несправностей: «постійні нулі» і «постійні одиниці». p>
2.2. Опис структури програми p>
Програма була реалізована за допомогою декількох користувачівпроцедур і макросів (див. таблицю 2). p>
Досить часто в програмах, особливо великих, доводиться кількараз вирішувати одну й ту ж підзадачі і тому доводиться виписуватиоднакову групу команд, що вирішують цю підзадачі. Щоб уникнути повторноговиписування такої групи команд, її зазвичай виписують один раз і оформляютьвідповідним чином, а потім в потрібних місцях програми просто передаютьуправління на ці команди, які, пропрацювавши, повертають управлінняназад. Така група команд, яка вирішує деяку підзадачі і якаорганізована таким чином, називається процедурою. p>
Нерідко буває корисним попереднє (до початку трансляції)перетворення тексту програми. Наприклад, необхідно, щоб будь -то фрагмент програми був продубльований кілька разів або щоб взалежно від деяких умов в тексті програми були збережені одніфрагменти і вилучені інші. Таку можливість надають такзвані макросредства. Розширення мови асемблера за рахунок цих коштівзазвичай називають макромовою. p>
Програма, написана на макромови, транслюється в два етапи.
Спочатку вона перекладається на, так би мовити, чиста мова асемблера, тобтоперетвориться до виду, де немає ніяких макросредств. Цей етап називаєтьсямакрогенерація, його здійснює спеціальний транслятор - макрогенератор.
На другому етапі отримана програма перекладається на машинний мова. Це етапассемблірованія, його здійснює асемблер. p>
Таблиця 2 p>
Таблиця процедур і макросів
| Назва | Тип | Призначення |
| Movcur | Макрос | Премещает курсор |
| Clrscr | Макрос | Очищає екран |
| Print | Макрос | Виводить на екран рядок |
| Press | Макрос | Реалізує затримку |
| ShowQuestion | Процедура | Виводить на екран меню |
| SborSved | Процедура | Здійснює збір відомостей |
| TestMem | Процедура | Здійснює тест пам'яті | p>
При виконанні програми на екран виводиться анотація, користувач,ознайомившись з програмою, натискає на будь-яку клавішу, і на екран виводитьсяменю (за допомогою процедури ShowQuestion), в якому користувач можевибрати що цікавить його пункт меню: p>
- збір відомостей про ПК; p>
- тест пам'яті; p>
- вихід. p>
Якщо обраний першим пункт, виконується процедура ShowSved. Всерединіданої процедури реалізована очищення екрана, за допомогою макросу ClrScr, атакож діагностика обладнання і затримка, які реалізовані за допомогою макросуpress. Після виконання даної процедури програма переходить на початок, тобтов меню. p>
У разі вибору другого пункту, виконується процедура TestMem,Тестуюча оперативну пам'ять ПК. Також усередині даної процедуриреалізовані очищення екрана і затримка перед виходом в меню. p>
Якщо вибрати третій пункт, програма, не очищаючи екран, передаєкерування операційній системі DOS. p>
2.3. Опис алгоритму рішення задачі p>
Якщо в оперативній пам'яті ПК є 2 в 20 ступені осередків, то дляпосилань на ці осередки потрібні 20-розрядні адреси; їх прийнято називатифізичними адресами. Ясно, що при великому обсязі пам'яті більшим буде ірозмір фізичних адрес, а це веде до збільшення довжини команд і дозбільшення розміру програм в цілому. Це погано. Щоб скоротити розмірикоманд, що надходять у такий спосіб. p>
Пам'ять умовно ділять на ділянки, які прийнято називати сегментами.
Початкові адреси сегментів можуть бути будь-якими, але на довжину сегментівнакладається обмеження: розмір будь-якого сегменту не повинен перевищувати 64Кб. p>
У цих умовах фізичну адресу А будь-якої комірки пам'яті можнапредставити у вигляді суми A = B + ofs, де В - адресу сегменту, а ofs - зсувщодо адреси В. p>
Таким чином, якщо в команді треба вказати фізичну адресу А, тоадреса сегмента B - "ховаємо" в так званий сегментний регістр, а вкоманді вказуємо лише цей регістр і доданок ofs. Це дає економіюрозміру команд. p>
У зв'язку з цим максимальний обсяг сегмента дорівнює 64Кб, а мінімальнийдорівнює 16 байтах. p>
Процедура тесту пам'яті реалізована за допомогою вкладеного циклу. Першийцикл увлічівает на еденицу модифікаційний регістр BP до тих пір, поки BPменше 0A000h (це останній сегмент 640 Кб). Усередині цього циклу реалізованийще один цикл - він збільшує на одиницю модифікаційний регістр SI до тихпір, поки він менше 16. Всередині вкладеного циклу здійснюєтьсябезпосередньо перевірка пам'яті на несправні біти: спочатку відбуваєтьсяперевірка на «постійні одиниці» - в сегмент за адресою BP із зсувом SIзапісиваеться нуль (що в двійковій системі числення означає вісімнулів), потім здійснюється перевірка цього значення, тобто нуля. Якщо цезначення дорівнює нулю, значить пам'ять справна, в іншому випадку - несправна. Потім відбувається перевірка на «постійні нулі»: за тим жеадресою записується число FFh (що в двійковій системі числення означаєвісім одиниць), потім здійснюються перевірка цього значення. Якщо значенняодно FFh, значить пам'ять справна, в іншому випадку - несправна. p>
2.4. Налагодження і тестування p>
Тестування проводилося за допомогою відладчика Turbo Debuggerкорпорації Borland. Була виконана трасування всієї програми. Трасування
- Це процес покрокового виконання команд з лістингом станів всіхрегістрів, прапорів, сегменту даних на момент виконання кожної команди. p>
У ході трасування були виявлені такі помилки: неправильне визначення стану математичного співпроцесора --неправильно вказана маска очищення, так званого слова «equpment list»,отримується за допомогою переривання 11h; p>
"зависання" при виклику процедури TestMem - помилка в реалізаціїалгоритму тесту пам'яті - неправильно вказана позначка переходу у вкладеномуциклі. p>
Крім того, було виявлено безліч помилок в синтаксисі команд. p>
Так як програма писалася на одному комп'ютері, перевірити її направильність визначення конфігурації ПК було неможливо,тому, після завершення програми, про?? а виконувалася на різних ПК з різнимиконфігураціями: в ході цього тесту помилок виявлення не було - всеапаратні засоби визначалися правильно. p>
Також неможливо було перевірити програму на правильність теступам'яті на практиці, тому що вона виконувалася на всіх ПК з справноїпам'яттю, а спроби знайти ПК з завідомо несправною оперативною пам'яттю неувінчалися успіхом. Проте теоретично тест повинен працюватиправильно. p>
2.5. Інструкція до користувача p>
Для запуску програми виконайте файл з ім'ям «kurs.com». Вашійувазі буде забезпечено анотація - уважно прочитайте її, а потімнатисніть будь-яку клавішу на клавіатурі (наприклад, enter). Потім на екранівисвітиться меню, зображене на рис. 3. P>
| |
| 1 - Відомості про систему |
| 2 - Тест пам'яті |
| 3 - Вихід |
| |
| Ваш виборами? : | P>
рис. 3 p>
Для того, щоб отримати короткі відомості про ваш ПК - натиснітьклавішу «1», потім «Enter» на вашій клавіатурі, і на екран висвітитьсясписок пристроїв з поточному станом. Для повернення в меню натисніть будь-якуклавішу. p>
Для того, щоб протестувати оперативну пам'ять вашого ПК - натиснітьклавішу, «2» потім «Enter» на вашій клавіатурі, і на екрані висвітитьсяповідомлення про стан пам'яті вашого ПК. Для повернення в меню натисніть будь-якуклавішу. p>
Для того, щоб вийти з програми - натисніть клавішу «3», потім
«Enter» на вашій клавіатурі. P>
2.6. Висновок про результати проектованої завдання p>
У ході виконання поставленої в курсовому проекті завдання булипридбані навички реалізації складних асемблерних програм звикористанням макросів і процедур. Крім того, був отриманий величезний досвід івміння роботи з CMOS (область пам'яті, де зберігаються відомості про конфігурацію
ПК) на низькому рівні, тобто з використанням переривання BIOS 11h і 70hпорту, а також досвід використання додаткових сегментних регістрів ірегістрів модифікаторів. p>
Реалізована програма може бути корисна при діагностиціобладнання на относітелно старих моделях ПК, оскільки в програмівикористовується система команд 8086 процесора, який був випущений в 1979 р.корпорацією Intel, і зараз ця модель процесора є застарілою. p>
СПИСОК ЛІТЕРАТУРИ p>
1. В.Н. Пильщиків. Програмування на мові асемблера IBM PC. - М.: Диалог-
МИФИ. 1997 p>