Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Макрооператоры
В качестве элементов генерируемого текста в теле макроопределения могут быть использованы макрооператоры. Оператор замены & обеспечивает замену в тексте формального параметра на значение соответствующего ему фактического параметра макроопределения. Символ & употребляется как перед, так и после имени формального параметра и служит для выделения параметра в строке символов или в строке, содержащей кавычки. Во вложенных макроопределениях оператор замены может быть использован для задержки замены формального параметра действительным значением, для чего используется более общая форма оператора замены, в которой символ & может быть указан несколько раз. MASM трактует количество рядом стоящих символов & как глубину вложенности макроопределений (относительно текущего уровня), на которой следует осуществлять замену формального параметра. Пример: alloc MACRO x IRP z,<1,2,3> x&&z DB z ENDM ENDM В этом примере замена формального параметра x осуществляется немедленно при вызове макроопределения. Замена параметра z будет задержана до начала обработки блока повторения IRP с тем, чтобы параметр z получал значения из указанного списка. Таким образом, параметр z будет замещаться значением элемента списка каждый раз при переходе к следующему элементу списка блока повторения. В итоге по макрокоманде alloc var будет сгенерировано макрорасширение var1 DB 1 var2 DB 2 var3 DB 3 Текстовый оператор литерала указывает MASM, что заданный внутри скобок < и > текст следует трактовать как простой литеральный элемент независимо от того, содержит ли он запятые, пробелы или другие ограничители. Чаще всего этот оператор используется в макровызовах и директивах IRP для того, чтобы значения списка параметров обрабатывались как один параметр. Кроме того, этот оператор используется в тех случаях, когда необходимо, чтобы MASM трактовал некоторые специальные символы (например,; или &) как литералы. Например, в выражении <;> точка с запятой рассматривается как точка с запятой, а не как начало комментария. Символьный оператор литерала! отличается от текстового лишь тем, что в нем в качестве литерала рассматривается только непосредственно следующий за! символ. Например, выражения !; и <;> эквивалентны. Оператор выражения % указывает MASM, что данный текст следует трактовать как выражение. MASM вычисляет значение выражения с учетом основания системы счисления встречающихся в выражении чисел и замещает текст этим значением. Текст должен представлять корректное выражение. Оператор выражения обычно используется в макровызовах, когда в макроопределение необходимо передать значение выражения, а не его текстовую форму. Пример: area MACRO par DW &par ENDM sum1 EQU 100 sum2 EQU 200 В результате обработки макровызова area %(sum1+sum2) будет сгенерировано макрорасширение DW 300 Оператор макрокомментария ;; определяет, что остаток строки является макрокомментарием. В отличие от обычного комментария, который обозначается одинарными точкой с запятой и также может встречаться в макроопределениях, макрокомментарий в текст макрорасширения не попадает. Он присутствует лишь в теле макроопределения.
Date: 2015-05-22; view: 478; Нарушение авторских прав |