Оператор объявления меток и переменных макроопределений

ENDM

ENDM

Оператор формирования текста по параметру макрокоманды

ENDM

ENDM

ENMD

Оператор создания повторяющихся фрагментов

Оператор присваивания

ENDM

Макросредства языка Ассемблер

Макрокоманды языка Ассемблер

Макрокоманды предназначены для повышения эффективности разработки команд на Ассемблере. Механизм макрокоманд представляет собой средства параметрической замены.

В процессе использования макрокоманд производится модификация текста программы.

Макроопределение – это фрагмент на языке Ассемблер, представляющий собой текст замены (подстановки), т.е. шаблон. Макроопределение заключается в операторы:

<имя> MACRO [параметры*]

*фиктивные параметры

Макрокоманда – это оператор, с помощью которого производится подстановка макроопределения с параметрической заменой. Макрокоманда представляет собой само имя макроопределения и, если необходимо, параметры (фактические)

<имя> [параметры]

Макрорасширение – это непосредственно текст подставляемого макроопределения на месте макрокоманды. Перед этими командами в тексте ставят «+».

При разработке макроопределений могут использоваться операторы, позволяющие сократить объем и время его разработки.

Некоторые из этих операторов:

<имя> = <выражение>

Очень похож на EQU, но EQU может встречаться только 1 раз и задает значение константы. Оператор присвоения может использоваться несколько раз, при этом изменяя значения переменной.

С помощью EQU вводится константа, а с помощью присваивания вводится мнимая переменная не программы, а транслятора, т.е. существующая только в трансляторе в момент трансляции и не являющаяся переменной программы (т.е. в ОП ее нет).

 

REPT <целочисленное выражение>

<ф1>// фрагмент программы на Ассемблере

Выражение (фрагмент) ф1 будет повторен в программе заданное число n раз.

Пример:

I=100

REPT 10

dw I

I=I+5

ENDM

 

IRP <имя параметра>, <список значений параметра>

<ф1>

Фрагмент будет повторен столько раз, сколько значений в списке, и каждый фрагмент будет формироваться с соответствующим значением параметра.

Пример:

IPR K, 5, 15, 40

dw K, K+2

ENDM

 

IRC <имя параметра>, <строка>

<ф1>

Повторяется фрагмент ф1 при значении параметра, равного каждому символу строки.

 

IFB <имя параметра>

<ф1>

IFNB <имя параметра>

<ф2>

 

Первый оператор сформирует фрагмент ф1 если при вызове макроопределения в макрокоманде будет задан фактический параметр для формального параметра <имя параметра>. Второй оператор формирует ф2, если фактический параметр не будет задан.

 

LOCAL <имя метки>