Символ & в теле макрокоманды имеет специальное значение. В общем случае & отделяет имя формального аргумента от окружающего текста, благодаря чему Турбо Ассемблер может распознавать его при подстановке. Если, например, имеется следующее тело макрокоманды:
sym&foo: DB 'It is &foo time'
и если вы при вызове данной макрокоманды присвоите foo текстовую строку party, то фактическим включаемым в модуль текст будет сле- дующее:
symparty: DB 'It is party time'
В качестве другого примера можно привести следующий:
foo&sym: DB 'We are in O&foo&o'
Если вы при вызове данной макрокоманды присвоите foo тексто- вую строку hi, то фактическим включаемым в модуль текст будет следующее:
hisym: DB 'We are in Ohio'
Приведем правила для символа &:
- вне заключенных в кавычки строк символ & используется как разделитель;
- внутри заключенной в кавычки строки и после двоеточия, ко- торое не находится в заключенной в кавычки строке в режиме Ideal, символ & должен предшествовать формальному аргумен- ту (чтобы этот аргумент мог распознаваться);
- при расширении макрокоманды Турбо Ассемблер удаляет один символ & из группы таких символов.
Последний пункт дает возможность помещать внутри макрокоманд макроопределения, требующие символа &. Турбо Ассемблер будет уда- лять только один символ & из группы.