На главную Назад
Добро пожаловать, уважаемый посетитель!

Для тех случаев, когда нужно несколько раз повторять один и тот же

фрагмент программы в макроассемблере имеется несколько специальных

макрокоманд. Это операторы REPT, IRT и IRPC. Каждый из них

действует как макрокоманда в макрокоманде и приводит к генерации

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

операнд ENDM.

 

Для простого повторенияпоследрвательности команд используется

макрокоманда REPT. Последовательность

 

REPTвыражение

;... тело макрокоманды REPT

ENDM

 

дублирует команды, составляющих тело данной макрокоманды. Значение

выражения определяет число повторений текста.

 

С помощью макрокоманды IRP можно при каждом повторении

использовать разные параметры. При использовании конструкции

 

IRPфиктивный параметр,<список>

;... тело макрокоманды IRP

ENDM

 

ассемблер осуществляет столько проходов тела макрокоманды,

сколько указано элементов в списке. При каждом проходе ассемблер

подставляет вместо фиктивного параметра следующий по порядку

элемент списка. Элементы списка должны быть числовыми выражениями.

Если вы хотите использовать в списке символьные значения,

применяйте макрокоманду IRPC. Последователность

IRPCфиктивный параметр, строка символов

;... тело макрокоманды IRPC

ENDM

 

осуществляет по одному проходу тела макрокоманды для каждого

символа. При этом фиктивный параметр ассемблер каждый раз заменяет

следующим по порядку символом из строки. На Фиг. 6.7 показаны

примеры применения описанных макрокоманд повтора.

Microsoft (R) Macro Assembler Version 5.004/2/89 16:06:54

Фиг. 6.7 Макроповторения Page1-1

 

PAGE,132

TITLEФиг. 6.7 Макроповторения

 

0000CODESEGMENT

ASSUMECS:CODE,DS:CODE

 

REPT3; Повторить команду 3 раза

INCAX

ENDM

0000401INCAX

0001401INCAX

0002401INCAX

 

IRPVALUE,<5,10,15,20>

ADDAX,VALUE

ENDM

000305 00051ADDAX,5

000605 000A1ADDAX,10

000905 000F1ADDAX,15

000C05 00141ADDAX,20

 

IRPCCHAR, ABCD

ADDAX,CHAR&X

ENDM

000F03 C01ADDAX,AX

001103 C31ADDAX,BX

001303 C11ADDAX,CX

001503 C21ADDAX,DX

 

0017CODEENDS

END

Фиг. 6.7 Макрокоманды повтора


 

Mail.ru