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

Макросредства – средства модификации текста программы во время ее трансляции. Предназначены для облегчения написания программ на языке ассемблера и для улучшения понимания исходного текста программы.

Программа, написанная на макроязыке, транслируется в два этапа.

1. Этап макрогенерации.

2. Этап ассемблирования.

Схема взаимодействия элементов макросредств

Макроопределения

Описание макроса, т.е. макроопределение, имеет следующий вид:

<имя макроса> 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    

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: