ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Діагностична програма
         

     

    Інформатика, програмування
    Діагностична програма
    ВСТУП
    У зв'язку з появою персональних комп'ютерів миттєво зріс ринок апаратних
    коштів, як гриби зростала кількість виробників, що пропонують свою продукцію. При
    цьому, купуючи той чи інший апаратний засіб, виробник не може (а іноді
    і не хоче) дати 100% гарантію, що воно справно.
    У зв'язку з цим також стрімко розвивався і ринок програмних тестуючих
    коштів. На ринку існує величезна кількість відмінних діагностичних
    програм, написаних великими корпораціями: такими як Symantec inc., APS
    (Advanced Personal Systems), Microsoft і т.д., але всі існуючі
    діагностуючих програми написані на язках високого рівня, а значить не
    досить швидкі й надійні.
    Автор проекту не береться конкурувати з величезними гігантами за кількістю
    виконуваних цими програмами тестів в силу того, що це безглуздо. Була
    зроблена спроба написати більш надійну, швидку діагностичну програму з
    використанням машинно-орієнтованої мови програмування - Асемблер.
    ЗАГАЛЬНИЙ РОЗДІЛ
    1.1. Техніко-математичний опис задачі
    Програма ділиться на дві частини:
    Перша частина програми - Збір відомостей - це частина програми, що збирає довідки
    про обладнання, встановлене на ПК, на якому програма виконується. Довідки
    наводяться про наступних пристроях:
    математичного співпроцесора;
    СОМ портах;
    LPT портах;
    дисководах;
    CD-ROM приводах;
    розширеному управлінні електроживленням;
    маніпуляторі "миша".
    Математичний співпроцесор - це мікрочіп, що встановлюється на материнську плату,
    який працює спільно з основним процесором, здійснює обробку чисел
    з плаваючою точкою, тим самим розвантажуючи основний процесор. Може
    встановлюватися опціонально за бажанням користувача або самим користувачем,
    тобто може або бути присутнім, або бути відсутньою.
    СОМ порти - це порти з послідовним типом передачі даних, призначені
    для підключення комунікаційних, маніпуляторних та інших пристроїв, де
    потрібно порівняно не-велика швидкість передачі даних. Кількість
    встановлених послідовних портів може варіюватися від одного до чотирьох.
    На деяких материнських платах існує обмеження на підключення
    послідовних портів, наприклад: якщо це значення буде два, і якщо ви
    підключіть чотири порти, то працювати будуть все одно два.
    LPT порти - це порти з паралельним типом передачі даних, призначені для
    підключення принтерів та інших пристроїв, де потрібно відносно велика
    швидкість передачі даних, а також можуть використовуватися для з'єднання двох
    комп'ютерів між собою для обміну даними. Кількість встановлених LPT портів
    може варіюватися від одного до чотирьох.
    Дисковод - пристрій, призначений для читання/запису накопичувачів на
    магнітному диску (гнучкий диск). Існує чотири типи дисководів:
    360 Кб.;
    720 Кб.;
    1.2 Мб.;
    1.44 Мб.
    Вони розрізняються за форматом обслуговуються дискет і максимально можливого обсягу
    даних, записуваних на дискету соотвестсвующего типу.
    CD-ROM привід - пристрій, призначений тільки для читання накопичувачів на
    лазерних дисках. Розрізняються по швидкості доступу до даних і швидкістю обертання
    лазерного диска. Зазвичай встановлюють не більше одного приводу.
    РУЕ (розширене керування електроживленням) - стандарт, що служить для економії
    електроенергії. Являє собою наступний набір функцій:
    автоматичне відключення електроживлення;
    "Сплячий" режим;
    автоматичне відключення живлення монітора;
    автоматичне відключення живлення жорстких дисків.
    Може знаходитися в двох станах: включено або вимкнений.
    Друга частина програми - діагностика пам'яті - перевіряє на працездатність
    пам'ять ПК, на якому виконується програма.
    1.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
    Розширене керування живленням (APM) Відсутній, присутня,
    включено/вимкнено
    Маніпулятор "миша" Відсутній, присутній

    Після виведення списку пристроїв, в програмі необхідно реалізувати затримку,
    потім повернення в меню.
    У разі вибору пункту "тест пам'яті" програма повинна виконувати тестування не
    менше 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 - збір відомостей про систему;
    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Кб.
    У цих умовах фізичну адресу А будь-якої комірки пам'яті можна представити у вигляді
    суми 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 - Вихід
    Ваш вибір? :

    рис. 3
    Для того, щоб отримати короткі відомості про ваш ПК - натисніть клавішу "1",
    потім "Enter" на вашій клавіатурі, і на екран висвітиться список пристроїв з
    поточному станом. Для повернення в меню натисніть будь-яку клавішу.
    Для того, щоб протестувати оперативну пам'ять вашого ПК - натисніть клавішу,
    "2" потім "Enter" на вашій клавіатурі, і на екрані висвітиться повідомлення про
    стан пам'яті вашого ПК. Для повернення в меню натисніть будь-яку клавішу.
    Для того, щоб вийти з програми - натисніть клавішу "3", потім "Enter" на вашій
    клавіатурі.
    2.6. Висновок про результати проектованої завдання
    У ході виконання поставленої в курсовому проекті завдання були придбані навички
    реалізації складних асемблерних програм з використанням макросів і процедур.
    Крім того, був отриманий величезний досвід та вміння роботи з CMOS (область пам'яті,
    де зберігається інформація про конфігурацію ПК) на низькому рівні, тобто з використанням
    переривання BIOS 11h і 70h порту, а також досвід використання додаткових
    сегментних регістрів і регістрів модифікаторів.
    Реалізована програма може бути корисна при діагностиці устаткування на
    щодо старих моделях ПК, оскільки в програмі використовується система
    команд 8086 процесора, який був випущений в 1979 р. корпорацією Intel, і
    зараз ця модель процесора є застарілою.



         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status