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

%MACS (.LALL) і %NOMACS (.SALL)

Аналогічно директивам виводу блоків умовної компіляції при налагодженні програми зручно регулювати повноту інформації про застосовування макрокоманди. За замовчуванням транслятор включає макророзширення у файл лістингу. Можна заборонити виведення макророзширень у файл лістингу, що зручно на деяких стадіях налагодження. Директива %MACS (.LALL) дозволяє виведення у лістинг усіх макророзширень. Директиви %NOMACS (.SALL) забороняє виведення всіх операторів макророзширення у файл лістингу. У режимі MASM можна використовувати директиву .XALL, що дозволяє виводити в лістинг тільки ті макророзширення, що генерують код чи дані.

  • Директиви виведення лістингу перехресних посилань

Приведені вище директиви %SYMS і %NOSYMS регулювали виведення у лістинг таблиці ідентифікаторів, у якій приводиться інформація про мітки, групи і сегменти, але там не повідомляється, де вони визначені і де використовуються. Інформація в таблиці перехресних посилань виправляє цей недолік. У додатку 1 приведена опція командного рядка TASM /c для одержання таблиці перехресних посилань. Але дія цієї опції поширюється на весь вихідний файл, що може бути не зовсім зручним. Тому TASM додатково надає директиви для створення таблиць перехресних посилань тільки для окремих частин вихідного коду. Директиви %CREF (.CREF) і %NOCREF (.XCREF) відповідно дозволяють і забороняють збір інформації про перехресні посилання, починаючи з місця, де вони були визначені. При цьому директиви %NOCREF (.XCREF) дозволяють вибірково забороняти збір інформації про перехресні посилання для визначених ідентифікаторів у програмі. Ці директиви мають наступний синтаксис:

%NOCREF (.XCREF) [ідентифікатор, ...]

Якщо в директиві %NOCREF (.XCREF) не вказати ідентифікатор, то виведення перехресних посилань забороняється цілком, якщо вказати деякі ідентифікатори, то інформація не буде збиратися тільки для цих ідентифікаторів.

  • Директиви зміни формату лістингу

Директиви цієї групи дозволяють керувати форматом файлу лістингу.

Директива .PAGE задає висоту і ширину сторінки файлу лістингу і починає його нову сторінку. Вона має наступний синтаксис:

PAGE [число_рядків][,число_стовпців] PAGE +

Тут:

  • число_рядків задає число рядків, виведених на сторінці лістингу;

  • число стовпців знаходиться в діапазоні 59...255 і задає число стовпців на сторінці.

Якщо опустити один з цих параметрів, то установка даного параметра залишиться без змін. Для зміни тільки числа стовпців необхідно вказати перед цим параметром кому. За допомогою директиви .PAGE можна розбивати лістинг на розділи, у межах яких нумерація починається з нуля. Так, при вказівці після директиви .PAGE символу “+” починається нова сторінка, номер розділу збільшується, а номер сторінки знову встановлюється в 1. Якщо використовувати директиву .PAGE без аргументів, те лістинг відновляється з нової сторінки без зміни номера розділу.

%PAGESIZE (.PAGESIZE)

Директива %PAGESIZE працює так само, як і директива .PAGE, але, на відміну від останньої, вона не починає нову сторінку, а лише визначає її параметри:

%PAGESIZE [число_рядків][,число_стовпців]

%NEWPAGE

Директива %NEWPAGE працює аналогічно директиві .PAGE без аргументів. Рядка вихідного тексту після директиви %NEWPAGE будуть починатися з нової сторінки.

%BIN

Директива %BIN установлює довжину поля об'єктного коду у файлі лістингу. Її синтаксис:

%BIN розмір

Тут розмір — деяка константа. За замовчуванням поле об'єктного коду займає у файлі лістингу до 20 позицій.

%DEPTH

Директива %DEPTH установлює розмір поля глибини у файлі лістингу. Її синтаксис:

%DEPTH розмір

Розмір задає кількість стовпців у поле глибини лістингу. Дане поле показує рівень вкладеності файлів, що включаються, (INCLUDE) і макророзширень. Якщо вказати як розмір значення 0, то поле рівня вкладеності не виводиться. За замовчуванням це поле має значення 1.

%LINENUM Директива %LINENUM дозволяє задати розмір поля, що зайнято номерами рядків у файлі лістингу: %LINENUM розмір

За замовчуванням під номер рядка приділяються чотири стовпці.

%TRUNC і %NOTRUNC Директиви %TRUNC і %NOTRUNC призначені для усікання довгих полів лістингу. Їхній синтаксис:

%TRUNC і %NOTRUNC

Якщо деякий рядок вихідного коду виходить занадто довгий, то він автоматично усікається. Якщо виникає необхідність побачити весь рядок, що генерується, то можна використовувати директиву %NOTRUNC, дія якої буде полягати в тім, що занадто довгий рядок буде переноситися на наступну рядок. Для включення режиму усікання потрібно використовувати директиву %TRUNC. Такі переключення можна здійснювати необмежена кількість разів.

%PCNT Директива %PCNT задає розмір поля чи “сегмент:зміщення” у файлі лістингу. Її синтаксис:

%PCNT розмір

Розмір — число стовпців, яких необхідно відвести для зміщення в поточному асембльованому сегменті. За замовчуванням TASM установлює розмір, рівний 4 для звичайних 16-бітних сегментів (атрибут розміру адреси use16) і 8 для 32-бітних сегментів (атрибут розміру адреси use32). Директива %PCNT дозволяє перевизначити ці значення.

%TITLE Директива %TITLE задає заголовок файлу лістингу. Її синтаксис:

%TITLE “текст”

Текст — рядок, що буде виводитися у верхній частині кожної сторінки після імені вихідного файлу і перед заголовком, заданим по директиві %SUBTTL. На відміну від інших директив, %TITLE можна використовувати в програмі тільки один раз.

%SUBTTL Директива %SUBTTL задає підзаголовок файлу лістингу. Її синтаксис:

%SUBTTL “текст”

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

%TABSIZE Директива %TABSIZE задає позицію табуляції у файлі лістингу. Її синтаксис:

%TABSIZE розмір

Розмір — число стовпців між двома позиціями табуляції у файлі лістингу (за замовчуванням 8 стовпців).

%TEXT Директива %TEXT використовується для завдання довжини поля чи вихідного тексту у файлі лістингу. Її синтаксис:

%TEXT розмір

Розмір — число стовпців, використовуваних для висновку вихідних рядків. Якщо розмір рядка перевищує довжину цього поля, то рядок буде або усікатися, або переноситися на наступну рядок, у залежності від директив %TRUNC чи %NOTRUNC. 

Компоновка програми

Головна мета створення завантажувального модуля (компонування програми) - перетворити код і дані в об'єктних файлах у їх переміщуване виконуване відображення. Щоб зрозуміти, у чому тут суть, потрібно розібратися, навіщо розділяють процес створення модуля, що виконується, на два кроки — трансляцію і компонування. Це зроблено для того, щоб можна було поєднувати разом кілька модулів (написаних на одній чи декількох мовах). Формат об'єктного файлу дозволяє, при визначених умовах об'єднати окремо відтрансльовані результати модулів в один модуль. При цьому у функції компоновщика входить дозвіл зовнішніх посилань у цих модулях. Результатом роботи компоновщика є створення файлу з розширенням .ехе. Після цього операційна система може завантажити такий файл у пам'ять і виконати його.

Повний формат командного рядка для запуску компоновщика:

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

  • опції - необов’язкові параметри, що керують роботою компоновщика. Кожній опції повинен передувати один з наступних символів: «-» чи «/»;

  • список_об’єктних_файлів - обов'язковий параметр, що містить список компонованих файлів з розширенням .obj. Файли повинні бути розділені пропусками чи знаком <+>, наприклад:

t1іnk /v prog + mdf + fdr

При необхідності вказують шлях до файлів;

  • імя_завантажувального_модуля - необов’язковий параметр, що означає ім'я завантажувального модуля. Якщо воно не зазначено, то ім'я завантажувального модуля буде співпадати з першим зі списку імен об'єктних файлів;

  • ім'я_файлу_карти — необов'язковий параметр, наявність якого вказує компоновщику створити спеціальний файл із картою завантаження. У ній перераховуються імена, адреси завантаження і розміри всіх сегментів, що входять у програму;

  • імя_файла_бібліотеки— необов'язковий параметр, що який вказує шлях до файлу бібліотеки (.1іb). Цей файл створюється й обслуговується спеціальною утилітою tlіb.exe . Утиліта дозволяє об'єднати часто використовувані підпрограми у виді об'єктних модулів і один файл.

  • ім'я_файлу_визначень - необов'язковий параметр, який вказує шлях до файлу визначень (.def). Цей файл використовується при компонуванні Windows-додатків;

  • імя_ресурсного_файла — необов'язковий параметр, що вказує шлях до файла з ресурсами Wіndows-додатків (.res). Цей файл використовується при компонуванні Wіndows-додатків

Розглянутий формат командного рядка використовується і для 32-розрядного варіанта компоновщика t1ink32.exe.

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