Assembler для начинающих

Аргументы макрокоманд


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


      ADD MEMORY_BYTE,5
      или
      ADD MEMORY_BYTE,7
 
 
    нам хотелось бы воспользоваться для нее соответствующей
    макрокомандой. Однако во всех приведенных командах константы
    разные. Поэтому мы сделаем константу параметром макрокоманды. На
    Фиг. 6.2 показаны определение и применение макрокоманды ADDBYTE. В
    этом примере в качестве параметра в определении макрокоманды
    используется символическое имя CONSTANT. Любые символичесике имена,
    появляющиеся в поле операнда оператора MACRO, интерпретируются как
    параметры. В момент определения макрокоманды у имени CONSTANT нет
    никакого значения: оно просто резервирует место в тексте
    макрокоманды. Позднее, при вызове и обработке текста макрокоманды,
    вместо символического имени в определении макрокоманды
    подставляется определенное значение параметра.
      Важно отметить, что параметр макрокоманды - это текстовый
    параметр. Так как макропроцессор фактически является текстовым
    процессорорм, то он не отличает цифры от букв и наоборот. Это
    позволяет при вызове макрокоманды использовать вместо чисел
    символические имена. Любой смысл приписывается символьной строке не
    макропроцессором, а ассемблером. Макропроцессор подставляет

            Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:02:43
            Фиг. 6.2 Макрокоманда с аргументом                Page         1-1



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