
Завдання
1. Скопіювати на свій робочий диск програми lab 1_1. asm , lab 1_2. asm і lab 1_3. asm .
2. Протранслювати програми. Отримати об’єктні модулі і лістинги програм.
3. У разі виявлення помилок у програмі переглянути лістинг програми lab 1_ i . lst за допомогою редактора. Після виявлення причин помилок виконати корекцію . asm файлів і перейти до п. 2.
4. За допомогою компонувальника отримати виконувані файли.
5. Виконати програми. Звернути увагу на отримані на екрані результати.
6. Програму, яка не формує результатів на екрані, виконати по кроках у середовищі відлагоджувача td . exe . (Див. Робота з Turbo Debugger )
Звернути увагу на зміну вмісту регістрів і комірок пам’яті при виконанні програми.
Змінити значення даних у регістрах, комірках пам’яті, які програма використовує, і знову виконати програму. Оцінити нові результати.
7. Проаналізувати структуру і вміст лістингів транслятора з мови Асемблера (внутрішнє подання даних і команд програми).
8. Визначити типи і формати даних, заданих у сегменті даних програм. Порівняти їх з результатами роботи транслятора. Визначити відносні адреси змінних.
9. Проаналізувати оператори програм на належність до таких груп: директиви асемблера, машинні команди (виклик процедури, повернення та ін.).
Визначити формат машинних команд та їх адреси.
Примітка 1. Для роботи доцільно використати програму FAR і здійснювати запуск програм в її середовищі .
Примітка 2. Для роботи у середовищі відлагоджувача необхідно насамперед вивчити наступні його функції:
- призначення вікон відлагоджувача та переключення між вікнами;
- завантаження програм в пам'ять ;
- керування відображенням (скролінг) програм у вікні відлагоджувача;
- заміна вмісту регістрів процесора ;
- відображення та заміна вмісту областей пам'яті ;
- покроковий (покомандний ) режим виконання програм;
- запуск програм на виконання в автоматичному режимі з завданням адрес зупинки;
Контрольні питання
1.З сегментів яких класів може складатися програма мовою Асемблера?
2.Чим директива мови відрізняється від командного оператора?
3.Назвіть директиви визначення сегментів програми.
4.За допомогою якої директиви визначають процедуру?
5.Що є аргументом директиви END? Чи важливо його коректно визначати?
6.Яким чином можна створити .LST файл? Що він вміщує?
7.Як завантажити програму у відлагоджувач?
Звіт повинен містити:
1. Тексти 3-х програм мовою Асемблера (.asm файли), готові до компіляції (без помилок).
2. Лістинги 3-х програм ( .lst файли).
3. Виконувані файли 3-х програм (.ехе файли).
4. Результати аналізу тексту програми lab1_3.asm та лістингу результатів її трансляції lab1_3.lst , а саме:
• перелік сегментів програми з вказівкою їхнього призначення та розміру пам’яті, яку вони займають;
• перелік змінних програми з вказівкою їхнього типу, розміру у пам’яті та відносних адрес;
• перелік директив програми з вказівкою їхнього призначення;
• перелік командних операторів програми з вказівкою їхніх відносних адрес, розмірів у пам’яті.
5. Відповіді на контрольні запитання.