Справочник по языку Ассемблера IBM PC



         

Макрокоманды - часть 5


(строки ), как был осуществлен вызов макрокоманды clear_rg с фактическим параметром ax (строка ) и как выглядит результат работы макрогенератора, сформировавшего команду ассемблера xor ax,ax (строка 75);

24 clear_r macro rg 25 ;очистка регистра rg 26 xor rg,rg 27 endm ... 74 clear_r ax 75000E 33 C0 xor ax,ax

Таким образом в итоге мы получили то, что и требовалось — команду очистки заданного регистра, в данном случае ax.
В другом месте программы вы можете выдать ту же макрокоманду, но уже с другим именем регистра.

Каждый фактический аргумент представляет собой строку символов, для формирования которой применяются следующие правила:

  • строка может состоять из:

  • последовательности символов без пробелов, точек, запятых, точек с запятой;
  • последовательности любых символов, заключенных в угловые скобки: <...>. В этой последовательности можно указывать как пробелы, так и точки, запятые, точки с запятыми.
    Не забывайте о том, что угловые скобки < > — это тоже оператор ассемблера. Мы упоминали о них при обсуждении директивы equ;

  • для того чтобы указать, что некоторый символ внутри строки, представляющей фактический параметр, является собственно символом, а не чем-то иным, например некоторым разделителем или ограничивающей скобкой, применяется специальный оператор “!”.
    Этот оператор ставится непосредственно перед описанным выше символом, и его действие эквивалентно заключению данного символа в угловые скобки (см. предыдущий пункт);
  • если требуется вычисление в строке некоторого константного выражения, то в начале этого выражения нужно поставить знак “%”:
    % константное_выражение — значение константное_выражение

    вычисляется и подставляется в текстовом виде в соответствии с текущей системой счисления.

  • Теперь обсудим вопрос — как транслятор распознает формальные аргументы в теле макроопределения для их последующей замены на фактические аргументы?

    Прежде всего по их именам в заголовке макроопределения. В процессе генерации макрорасширения компилятор ассемблера ищет в тексте тела макроопределения последовательности символов, совпадающие с теми последовательностями символов, из которых состоят формальные параметры. После обнаружения такого совпадения формальный параметр из тела макроопределения замещается соответствующим фактическим параметром из макрокоманды. Этот процесс называется подстановкой аргументов.

    Здесь нужно еще раз особо отметить список_формальных_аргументов в заголовке макроопределения.
    В общем случае он содержит не только перечисление формальных аргументов через запятую, но и некоторую дополнительную информацию. Полный синтаксис формального аргумента следующий:

    имя_формального_аргумента[:тип]

    <


    Содержание  Назад  Вперед