Оператор объявления меток и переменных макроопределений
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 <имя метки>