Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB1.DOC
Скачиваний:
2
Добавлен:
02.05.2019
Размер:
231.94 Кб
Скачать

Опції компоновщика (редактора зв'язків) tlink

/x 

Не створювати файл карти (map) 

/m 

Створити файл карти 

/s 

Те ж, що /m, але додатково у файл карти включається інформація про сегменти (адреса, довжина в байтах, клас, ім'я сегмента і т.д.) 

/l 

Створити розділ у файлі карти з номерами рядків 

/n 

Ігнорувати бібліотеки, що вказуються іншими компіляторами 

/c 

Розрізняти рядкові і прописні букви в ідентифікаторах (у тому числі і зовнішніх) 

/v 

Включити відладочну інформацію у виконуваний файл 

/3 

Підтримка 32-бітного коду 

/d 

Попереджати про дублювання символів у компонуємих бібліотеках 

/t 

Створити файл типу .com (за замовчуванням .exe) 

Обов'язковим етапом процесу розробки є налагодження.

На етапі налагодження, використовуючи опис алгоритму, виконується контроль правильності функціонування як окремих ділянок коду, так і всієї програми в цілому.

Специфіка програм на ассемблері полягає в тому, що вони інтенсивно працюють з апаратними ресурсами комп'ютера. Ця обставина змушує програміста постійно відслідковувати уміст регістрів і областей пам'яті. Для локалізації логічних помилок у програмах використовують спеціальний тип програмного забезпечення — програмні відлагоджувальники. Відлагоджувальники бувають двох типів:

  • інтегровані - відлагоджувальник реалізований у інтегрованному середовищі мов програмування типу Turbo Pascal, Quick С и т. д.;

  • автономні — відлагоджувальник - окрема програма. Через те, що ассемблер не має свого інтегрованного середовища, для налагодження написаних на ньому програм використовують автономні відлагоджувальники.

Налагодження програми

Відлагоджувальник Turbo Debugger (TD), розроблений фірмою Borland International, являє собою віконне середовище налагодження програм на рівні вихідного тексту Він дозволяє вирішити дві головні задачі:

  • визначити місце логічної помилки;

  • визначити причину логічної помилки.

Основні можливості TD:

  • виконання трасування програми в прямому напрямку, тобто послідовне виконання програми, при якому за один крок виконується одна машинна інструкція;

  • виконання трасування програми в зворотному напрямку, тобто виконання програми по одній команді, але в зворотному напрямку;

  • перегляд і зміну стану апаратних ресурсів мікропроцесора під час покомандного виконання програми.

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

Основні моменти процесу створення загрузочного модуля:

  • У вихідній програмі повинна бути обов'язково визначена мітка для першої команди, з якої почнеться виконання програми. Ім'я цієї мітки обов'язково потрібно вказати в кінці програми в якості операнда директиви END: END имя_мітки

  • Вихідний модуль повинний бути відтрансльований з опцією /zi:

tasm /zi імя_вихідного_модуля , , .

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

  • Редагування модуля повинно бути здійснене з опцією /v;

tlіnk /v імя_проектного_модуля

Опція /v вказує на необхідність збереження відладочної інформації в файлі, що виконується.

  • Запуск відлагоджувальника зручніше робити з командного рядка з вказівкою модуля програми, що підлягає налагодженню:

td імя_виконуванного_модуля

При правильному виконанні перерахованих дій відкриється вікно відлагоджувальника TD за назвою Module.

У цьому вікні видно вихідний текст програми. Це є результат дії опцій /zі і /v для tasm і tlink, відповідно. Їхнє застосування дозволило зберегти інформацію про симлічні імена. Тут видно курсор виконання (у вигляді трикутника). Він вказує на першу команду, що підлягає виконанню. Цій команді передує ім'я мітки (у нашому випадку роль мітки виконує ім'я процедури). Це місце входу в програму.

Основну частину екрана відлагоджувальника звичайно займають одне чи кілька вікон. У кожен момент часу активним може бути тільки одне з них. Активізація будь-якого вікна виконується клацанням кнопки мишки в будь-якій видимій точці вікна. Керування роботою відлагоджувальника ведеться за допомогою системи меню. Є два типи меню:

  • глобальне меню — знаходиться у верхній частині екрана і доступно постійно. Виклик меню здійснюється натисканням клавіші F10.

  • локальне меню — для кожного вікна відлагоджувальника можна викликати його власне меню, що враховує особливості цього вікна. Викликати дане меню можна, клацнувши у вікні правою кнопкою миші (або зробивши активним вікно і натиснувши клавіші Alt+F10).

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

Запустити програму на виконання у відлагоджувальнику можна в одному з чотирьох режимів:

  • режим безумовного виконання;

  • виконання по кроках;

  • виконання до поточного положення курсору;

  • виконання з установкою точок переривання.

Режим безумовного виконання доцільно застосовувати, коли потрібно подивитися на загальне поводження програми. Для запуску програми в цьому режимі необхідно натиснути клавішу F9. Для перегляду чи введення цієї інформації можна відкрити вікно користувача (Window > User screen), натиснувши клавіші Alt+F5.

Застосовуються три наступних режими налагодження.

Виконання no крокам застосовується для детального вивчення роботи програми. У цьому режимі можна виконати програму по командах. При цьому можна спостерігати результат виконання кожної команди. Для активізації цього режиму потрібно натиснути клавіші F7 (Run > Trace into) чи F8 (Run > Step over). Обидві ці клавіші активізують покроковий режим; відмінність їх з'являється в тому випадку, коли в потоці команд зустрічаються команди переходу в процедуру чи на переривання. При використанні клавіші F7 відлагоджувальник здійснить перехід на процедуру чи переривання і виконає їх по кроках. Якщо ж використовується клавіша F8, то виклик процедури чи переривання відпрацьовується як одна звичайна команда і керування передається наступній команді програми. Тут потрібно відзначити, що крім вікна Module при роботі в цьому режимі корисно використовувати вікно CPU, викликати яке можна через глобальне меню командою View > CPU. Вікно CPU відбиває стан мікропроцесора і складається з 5 підлеглих вікон:

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

  • Registers — вікно регістрів мікропроцесора, що показує поточний вміст регістрів. За замовчуванням відображаються регістри тільки і8086. Для того щоб скористатися всіма регістрами i486 чи Pentium, потрібно задати режим їхнього відображення. Для цього клацніть правою кнопкою миші в області подвікна регістрів для виклику локального меню і виберіть у ньому команду Registers 32-bіt - Yes;

  • вікно прапорів - показує поточний стан прапорів мікропроцесора про відповідність з їх мнемонічними назвами;

  • вікно стека Stack, показує вміст пам'яті, виділеної для стека. Адреса області стека визначається вмістом регістрів SS і SP;

  • вікно дампа оперативної пам'яті Dump - вміст області пам'яті за адресою, що формується з компонентів, зазначених у лівій частині вікна. У вікні можна побачити вміст довільної області пам'яті.

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

  • Виконаєте з установкою точок переривання дозволяє виконати програму із зупинкою її в строго визначених точках периривання (breakpoints).

Перед виконанням програми необхідно установити ці точки в програмі, для чого варто перейти в потрібний рядок і натиснути клавішу F2. Вибрані рядки подсвечуються іншим кольором. Встановлені раніше точки переривання можна забрати — для цього потрібно повторно вибрати потрібні рядки і натиснути клавішу F2. Після установки точок переривання програма запускається на виконання клавішею F9. На першій точці переривання програма зупиниться. Тепер можна подивитися стан мікропроцесора і пам'яті, а потім продовжити виконання програми. Зробити це можна у покроковому режимі, чи виконавши програму до наступної точки переривання.

Перервати виконання програми в кожному з цих режимів можна, натиснувши Ctrl+F2.

Завдання на виконання лабораторної роботи

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]