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



         

Макроопределения - часть 5


    вставляется вызов макрокоманды. Ассемблер генерирует заданные в
    определении команды и переходит к обработке следующего кода
    операции.
 
      Разница между макрокомандой и подпрограммой заключается в
    моменте их использования. Макрокоманда является операцией текстовой
    обработки. Она определяется и "выполняется" во время
    ассемблирования. Выполнение макрокоманды состоит в замене имени
    макрокоманды текстом, составляющим тело макрокоманды. Подпрограмма
    же хотя и определяется при ассемблировании, но выполняется не
    раньше, чем сама программа. Мы будем говорить, что макрокоманда
    выполняется при ассемблировании, а подпрограмма - во время
    выполнения программы.
 
      Лучший способ отличить макрокоманду от подпрограммы - это
    запомнить, когда они проявляются. На самом деле, макропроцессор не
    является атрибутом языка программирования. Допустим, вы - адвокат,
    и составляете завещания для множества разных людей. Так как
    завещания часто похожи, то вы могли бы задать набор
    "макрозавещаний", которые будут содержать совпадающие части
    составляемых завещаний. Первая часть завещания, где перечислены
    участвующие в нем стороны, будет уникальной. Оставшаяся часть будет
    состоять из различных макрозавещаний, охватывающих стандартные
    куски завещаний. Результатом работы "процессора завещаний" будет
    текстовый документ. Макрозавещания раскрываются и образуют
    стандартную часть завещания. Вам остается только заполнить
    переменные фрагменты документа между макрозавещаниями.
 
      Но если макрокоманды и подпрограммы во многих отношениях так
    похожи, то зачем использовать вместо процедуры макрокоманду?
    Действительно, во многих случаях применима любая из них.
    Последовательность команд может быть определена и как макрокоманда,
    и как подпрограмма. Когда вам потребуется эта последовательность,
    вы можете вызвать соответственно макрокоманду или подпрограмму.



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