Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій_ Асемблер.Docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
506.89 Кб
Скачать
    1. Макрокоманди

Макрокоманда являє собою строку, що містить деяке символічне ім’я – ім’я макрокоманди, призначену для того, щоб бути заміщеною однією або декілька другими строками. Для макрокоманди необхідно задати шаблон-описання (макровизначення). Синтаксис макровизначення:

ім’я_макрокоманди macro список_формальних_аргументів тіло макровизначення

endm

Макровизначення може знаходитися:

o на початку текста програми до сегмента кода;

o в окремому файлі;

o в макробібліотеці (макрокоманди підключаються з допомогою директиви include).

Макровизначення викликаються з допомогою макрокоманди:

ім’я_макрокоманди список фактичних аргументів

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

Якщо в програмі деяка макрокоманда викликається декілька разів то необхідно застосовувати директиву local:

local список_ідентифікаторів

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

??xxxx, де xxxx – шістнадцяткове число. Для першого ідентифікатора в першому екземплярі макророзширення xxxx=0000, для другого – xxxx=0001 і т.д.

    1. Макродирективи

Макродирективи використовуються для модифікації наборів строк або їх послідовності. Їх можна поділити на дві групи:

o директиви повторень WHILE, REPT, IRP, IRPC;

o директиви керування процесом генерації EXITM, GOTO.

      1. Директиви while і rept

Директиви WHILE і REPT використовуються для повторів послідовностей строк.

WHILE константний_вираз послідовність_строк ENDM

REPT константний_вираз послідовність_строк ENDM

При використанні директиви WHILE послідовність_строк повторюється до тих пір, поки значення константний_вираз не буде дорівнювати нулю. Значення константний_вираз повинно змінюватися всередині послідовність_ строк.

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

      1. Директиви irp і irpc

IRP формальний аргумент <строка_символів_1, ...,строка_символів_n >

послідовність_строк

ENDM

Директива IRP повторює послідовність_строк стільки разів, скільки строк_символів поміщено в кутові дужки. При i-му повторі формальний параметр замінюється на строка_символів_i із квадратних дужок.

IRPС формальний аргумент <строка_символів >

послідовність_строк

ENDM

Директива IRPС повторює послідовність_строк стільки разів, скільки символів поміщено в кутові дужки. При i-му повторі формальний параметр замінюється на символ_i із квадратних дужок.

      1. Директиви умовної компіляції

Існує два типи директив умовної компіляції:

o директиви компіляції по умові дозволяють міняти процес макрогенерації;

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

З цими директивами застосовуються директиви керування процесом генерації макророзширень EXITM I GOTO.

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

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

: ім’я_мітки