Turbo Assembler 3.0. Руководство пользователя

         

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


Для повторения тела макрокоманды для каждого элемента в списке или каждого символа в строке вы можете использовать макро- директивы повторения IRP и IRPC. Каждая из этих директив требует от вас задания одного формального аргумента. Приведем синтаксис директивы IRP:

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

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

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

в обоих случаях "формальный_аргумент" - это аргумент, используе- мый в теле макрокоманды. Конец тела макрокоманды отмечает ENDM.

В синтаксисе директивы IRP "список_аргументов" состоит из спискам аргументов, разделенных запятыми. Аргументами может быть любой текст (идентификаторы, строки, числа и т.д.). Форма каждого аргумента в списке аналогична той, которая описана выше для вызо- ва общей макрокоманды, состоящей из нескольких строк. Список ар- гументов всегда нужно заключать в угловые скобки (<>).

В синтаксисе директива IRPC аргумент состоит из одной стро- ки. Строка может содержать столько символов, сколько вы хотите.

Для каждого аргумента или символа в строке Турбо Ассемблер будет включать в модуль тело макрокоманды, подставляя вместо фор- мального аргумента аргумент или символ (когда он его находит). Например:

IRP reg <ax,bx,cx,dx> PUSH reg ENDM

дает следующее:

PUSH ax PUSH bx PUSH cx PUSH dx

а директива IRPC:

IRPC LUCKY,1379 DB LUCKY ENDM

дает следующее:

DB 1 DB 2 DB 3 DB 4

Используйте директива IRPC аккуратно, поскольку Турбо Ас- семблер помещает каждый символ в строке в макрорасширение "как есть", поэтому макрокоманда строкового повторения:

IRPC CHAR,HELLO DB CHAR ENDM

может дать не DB 'H','E'','L','L','O', а DB H,E,L,L,O (где каждая буква интерпретируется как имя идентификатора.



Содержание раздела