Макроопределения
Описание макроса, т.е. макроопределение, имеет следующий вид:
<имя макроса> MACRO <формальные параметры>
<тело макроса>
ENDM
Макрокоманды
Обращение к макросу осуществляется через макрокоманду, которая записывается следующим образом:
<имя макроса> <фактические параметры>
После выполнения макроподстановки формируется макрорасширение.
Пример:
Макроопределение
SUM MACRO S1, S2, REZ
PUSH AX
MOV AX, S1
ADD AX, S2
MOV REZ, AX
POP AX
ENDM
Макрокоманда
SUM 5, ALFA, BX
Макрорасширение
PUSH AX
MOV AX, 5
ADD AX, ALFA
MOV BX, AX
POP AX
Макроповторения
Блок повторения имеет следующую структуру:
<заголовок>
<тело>
ENDM
Различают три варианта блока повторения:
REPT-блоки, IRP-блоки, IRPC-блоки.
1. REPT-блоки
REPT k
<тело>
ENDM
Пример:
REPT 3 SHR AX, 1 ENDM | SHR AX, 1 SHR AX, 1 SHR AX, 1 |
Пример:
N EQU 6 REPT N-4 DB 0, 1 DW ? ENDM | N EQU 6 DB 0, 1 DW ? DB 0, 1 DW ? |
2. IRP-блоки
IRP p, <v1, …, vk>
<тело>
ENDM
p – некоторое имя, формальный параметр; vi – фактические параметры.
Пример:
IRP REG, <AX,CX,SI> PUSH REG ENDM | PUSH AX PUSH CX PUSH SI |
3. IRPC-блоки
IRPC p, s1…sk
<тело>
ENDM
p – некоторое имя, формальный параметр; si – символы, кроме пробелов и точек с запятой.
Пример:
IRPC D,17W ADD AX,D ENDM | ADD AX,1 ADD AX,7 ADD AX,W |
Макрооператоры
Макрооператоры – операторы, разрешенные к применению только в конструкциях макроязыка.
Оператор замены (&)
& параметр
Пример:
IRP W, <1, 6> VAR&W DW ? ENDM | VAR1 DW ? VAR6 DW ? |
Оператор выделения текста (<>)
Пример:
IRP VAL, <<1,2>, 3> DB VAL ENDM IRPC S,<A;B> DB ‘&S’ ENDM | DB 1,2 DB 3 DB ‘A’ DB ‘;’ DB ‘B’ | IRP VAL, <<1,2>, 3> DB VAL ENDM | DB 1,2 DB 3 |
Оператор выделения символа (!)
Пример: IRPC X,<A!>B,Привет> DB ‘&X’ ENDM | DB ‘A>B’ DB ‘Привет’ |
Оператор выражения (%)
% <константное выражение>
Пример: K EQU 4 … IRP A,<K+1,%K+1,W%K+1> DW A ENDM | DW K+1 DW 5 DW W5 |
Дата добавления: 2015-10-09; просмотров: 529;