Директива IRP

Директива IRP имеет следующий синтаксис:

IRP формальный_аргумент,<строка_символов_1,...,строка_символов_N> последовательность_строкENDM

Действие данной директивы заключается в том, что она повторяет последовательность_строк N раз, то есть столько раз, сколько строк_символов заключено в угловые скобки во втором операнде директивы IRP. Но это еще не все. Повторение последовательности_строк сопровождается заменой в ней формального_аргумента строкой символов из второго операнда. Так, при первой генерации последовательности_строк формальный_аргумент в них заменяется на строка_символов_1. Если есть строка_символов_2, то это приводит к генерации второй копии последовательности_строк, в которой формальный_аргумент заменяется на строка_символов_2. Эти действия продолжаются до строка_символов_N включительно.

К примеру, рассмотрим результат определения в программе следующей конструкции:

irp ini,<1,2,3,4,5> db ini endm

Макрогенератором будет сгенерировано следующее макрорасширение:

db 1 db 2 db 3 db 4 db 5

Директива IRPC

Директива IRPC имеет следующий синтаксис:

IRPC формальный_аргумент,строка_символов последовательность строкENDM

Действие данной директивы подобно IRP, но отличается тем, что она на каждой очередной итерации заменяет формальный_аргумент очередным символом из строка_символов.
Понятно, что количество повторений последовательность_строк будет определяться количеством символов в строка_символов. К примеру:

irpc rg, push rg&x endm

В процессе макрогенерации эта директива развернется в следующую последовательность строк:

push ax push bx push cx push dx

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



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