Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz._6.doc
Скачиваний:
6
Добавлен:
11.08.2019
Размер:
180.74 Кб
Скачать

Директиви управління лістингом: page и title

Асемблер містить ряд директив, які керують форматом друку (або лістингу). Обидві директиви PAGE і TITLE можна використовувати в будь-якій програмі.

PAGE 60,132

Директива PAGE. На початку програми можна вказати кількість рядків, що роздруковуються на одній сторінці, а також максимальну кількість символів в одному рядку. Для цієї мети служить директива PAGE. Наступною директивою встановлюється 60 рядків на сторінку та 132 символи в рядку:

Кількість рядків на сторінці може бути в межах від 10 до 255, а символів у рядку - від 60 до 132. За умовчанням в асемблері встановлено: PAGE 66,80.

Припустимо, що лічильник рядків встановлено на 60. У цьому випадку асемблер, роздрукувавши 60 рядків, виконує прогін аркуша на початок наступної сторінки і збільшує номер сторінки на одиницю. Крім того можна змусити асемблер зробити прогін аркуша на конкретному рядку, наприклад, в кінці сегмента. Для цього необхідно записати директиву PAGE без операндів - асемблер автоматично робить прогін аркуша при обробці діpектіви PAGE.

Директива TITLE. Для того, щоб згори кожної сторінки лістингу друкувався заголовок (титул) програми, використовується діpектіва TITLE в такому форматі: TITLE текст.

Рекомендується в якості тексту використовувати ім'я програми, під яким вона знаходиться в каталозі на диску. Наприклад, якщо програма називається ASMSORT, то можна використовувати це ім'я та описовий коментар загальною довжиною до 60 символів:

TITLE ASMSORT — Асемблерна програма сортування імен



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

Директива segment

ім'я SEGMENT [параметри]

...

...

ім'я ENDS

Будь-які асемблерні програми містять принаймні один сегмент - сегмент коду. У багатьох програмах використовується сегмент для стекової пам'яті і сегмент даних для визначення даних. Асемблерні директиви для опису сегмента мають наступний формат:

Ім'я сегмента має бути обов'язково присутнім, бути унікальним і відповідати угодам для імен в асемблері. Директива ENDS означає кінець сегмента. Обидві директиви SEGMENT і ENDS повинні мати однакові імена. Директива SEGMENT може містити три типи параметрів, що визначають вирівнювання, об'єднання (або суміщення) і клас.

Вирівнювання. Цей параметр визначає межу початку сегменту. Звичайним значенням є PARA, за яким сегмент встановлюється на межу параграфа. У цьому випадку початкова адреса ділиться на 16 без залишку, тобто, має шіст. адресу nnn0. У разі відсутності цього операнду асемблер приймає за умовчанням значення PARA.

Об`єднання. Цей елемент визначає, чи об'єднується даний сегмент з іншими сегментами в процесі перегляду після асемблювання. Можливі такі типи об'єднань: STACK, COMMON, PUBLIC, AT и MEMORY.

Сегмент стеку визначається наступним чином: ім'я SEGMENT PARA STACK .

Коли окремо відасембльовані програми повинні об'єднуватися компонувальником, то можна використовувати типи: PUBLIC, COMMON і MEMORY. У випадку, якщо програма не повинна об'єднуватися з іншими програмами, то ця опція може бути опущена.

Клас. Цей елемент, укладений в апострофи, використовується для групування відносних сегментів при компонуванні:

ім'я SEGMENT PARA STACK 'Stack'

ім'я сегменту SEGMENT PARA

ім'я процедури PROC FAR

коди команд сегменту з однією процедурою

ім'я процедури ENDP

ім'я сегменту ENDS

RET

Директива PROC

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

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

Директива ENDP визначає кінець процедури і має ім'я, аналогічне імені в директиві PROC. Команда RET завершує виконання програми і в даному випадку повертає керування в DOS. Сегмент може містити кілька процедур.

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