- •1.4. Вимоги до структури програм
- •1.5. Вимоги до стилю програм мовою Асемблера
- •1.6 Огляд операцій, які рекомендуються на друге заняття.
- •1.7. Завдання на виконання лабораторної роботи Перше заняття
- •Друге заняття
- •1.8. Контрольні запитання
- •Додаток а Довідник користувача макроасемблера masm та редактора зв'язків link
- •Запуск редактора зв'язків link.
- •Запуск afd
- •Загальна характеристика налагоджувача
- •Опис основних процедур
- •Завантаження програми для надагоджування.
- •Визначення початкової адреси дизасемблювання
- •Команда g (виконати)
- •Формування файлу дизасембльованого коду
- •Використання вбудованого асемблера
- •Використання функціональних клавіш
- •Завершення роботи та повернення в операційну систему
Запуск редактора зв'язків link.
Запуск LINK може бути здійснений одним із наступних способів:
З використанням підказок.
За допомогою командного рядка.
З використанням файлу відповіді.
Для запуску LINK з використанням підказок необхідно ввести командний рядок, що містить тільки ім'я LINK. Редактор зв'язків LINK перейде в діалоговий режим і серією підказок запросить у користувача інформацію про наступні файли (відповідь полягає в наборі необхідних символів і натисканні клавіші ENTER):
Ім'я об'єктного файлу. Якщо при відповіді не зазначене розширення, передбачається OBJ. Якщо потрібно визначити кілька файлів, їхні імена розділяються символом + . Якщо усі імена не містяться на одному рядку, введення імен можна продовжити, поставивши символ + в останню позицію поточного рядка. У цьому випадку LINK повторить запит для введення додаткових імен.
Ім'я виконавчого файлу. Якщо при відповіді не зазначене розширення, передбачається EXE. Базове ім'я виконавчого файлу по умовчанні збігається з базовим ім'ям об'єктного файлу.
Ім'я файлу карти пам'яті. Карта пам'яті містить перелік створених фізичних сегментів та інші дані. Якщо при відповіді не зазначене розширення, передбачається MAP. Базове ім'я по умовчанні NUL (файл не створюється).
Ім'я бібліотеки. Якщо при відповіді не зазначене розширення, передбачається LIB. Можна задавати кілька імен бібліотек за аналогією з OBJ-файлами. Якщо, не вводячи імені, відразу натиснути ENTER, бібліотеки використовуватися не будуть.
У кожній відповіді після символу / можуть бути задані опції LINK, що описані нижче. Якщо в якій-небудь відповіді специфікований символ ; , LINK вийде з діалогового режиму й установить імена, що залишилися, по умовчанні із наступного списку:
<ім'я об'єктного файлу>.EXE
NUL.MAP
Бібліотеки не використовуються.
У будь-якій відповіді також можуть бути задані відповіді на кілька наступних підказок. У цьому випадку одна відповідь від іншого відокремлюється комою.
Для запуску LINK за допомогою командного рядка, необхідно ввести командний рядок наступного вигляду:
LINK <ім'я об'єктного файлу>[,[<ім'я виконавчого файлу>][,[<ім'я файлу карти пам'яті >] [,[<ім'я бібліотеки>]]]][<опції>][;]
Символ ; (крапка з комою) може бути специфікований у будь-якому місці командного рядка до того, як були визначені усі файли. У цьому випадку імена невизначеними файлів, що залишилися, приймаються по замовчуванні із приведеного вище списку. З цього ж списку приймаються по замовчуванні імена файлів, специфікація яких у командному рядку опущена (за допомогою зайвої коми). Якщо в командному рядку виявлена помилка, про це повідомляється через консоль, і LINK переходить у діалоговий режим.
Ім'я кожного файлу може супроводжуватися інформацією про каталог (шлях), що містить цей файл, інакше пошук вхідних файлів або створення результуючих буде здійснюватися в поточному каталозі.
Робота LINK може бути в будь-який момент припинена натисканням клавіш CONTROL-C.
Опції LINK.
Всі опції LINK позначаються попереднім символом / і можуть бути скорочені довільним образом, але так, щоб код залишався унікальним серед опцій.
Нижче приведені описи всіх опцій LINK (у дужках зазначені мінімальні скорочення):
/HELP (HE) - Видати список діючих опцій. Цю опцію не можна використовувати разом з ім'ям файлу.
/PAUSE (P) - Пауза перед записом модуля в EXE-файл (і після запису MAP-файл, якщо це передбачено). Під час цієї паузи можна при необхідності переставити дискети.
/EXEPACK (E) - Установити компактний запис послідовностей однакових біт. Такий EXE-файл має менший обсяг і швидше завантажується в пам'ять, але його не можна налагоджувати за допомогою налагоджувачів. Опція дає ефект, якщо програма містить довгі потоки ідентичних бітів.
/MAP (M) - Формувати MAP-файл. Файл формується, навіть якщо він не специфікований при запуску LINK, і має в цьому випадку ім'я, по умовчанні.
/NOIGNORECASE (NOI) - Установити розходження між малими та великими буквами. Розходження може бути встановлене також опціями /ML і /MX MASM.
/STACK:<число> (ST) - Установити розмір стека (у байтах). Інформація про розмір стека, що міститься в об'єктному модулі, ігнорується. Розмір стека може бути заданий в межах від 1 до 65535.
/HIGH (H) - Установити адреса початку програми на найвищу можливу адресу вільної пам'яті. Без цієї опції установка здійснюється на мінімально можливу адресу.
/DSALLOCATE (D) - Обробити групу з ім'ям DGROUP. Звичайно LINK привласнює молодшому байту групи зміщення 0000h. При завданні цієї опції старшому байту групи з ім'ям DGROUP привласнюється зміщення FFFFh. У результаті дані будуть розміщатися в областях програми з максимально великими адресами. Опція /D звичайно застосовується разом з опцією /H для більш ефективного використання незайнятої пам'яті до старту програми.
/SEGMENTS:<число> (SE) - Установити максимальне число сегментів, яке може обробити LINK. Число може бути задане в межах від 1 до 1024. При відсутності опції покладається 128. Пам'ять виділяється з врахуванням цього максимального числа сегментів.
/DOSSEG (DO) - Упорядкувати сегменти в EXE-файлі. При специфікації цієї опції сегменти розташовуються в наступній послідовності:
- сегменти з класом CODE;
- інші сегменти, що не входять у групу DGROUP;
- сегменти, що входять
Довідник з налагоджувача AFD
