Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АССЕМБЛЕР.doc
Скачиваний:
11
Добавлен:
21.09.2019
Размер:
388.1 Кб
Скачать

29Макросы, макрокоманды, условное ассемблирование.

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

Программа определяет макро-команду с помощью ключевого слова MACRO. Оператор MACRO является кодом псевдооперации. Эта конкретная псевдооперация сообщает ассемблеру, что начинается определение макрокоманды. В поле имени операции указано это имя, которое программа приписывает определяемой макрокоманде. Ключевое слово ENDM указывает ассемблеру на конец определения. Текст между операторами MSCRO и ENDM называется телом макрокоманды. Важно заметить, что во время определения макрокоманды код машинного языка еще не генерируется. Это можно утверждать, потому что колонки адреса и данных пусты.

АССЕМБЛИРОВАНИЕ ПО УСЛОВИЮ

До сих пор макрокоманды не отличались от подпрограмм с точки зрения как их функционирования, так и использования параметров. Далее потребуется возмоность ассемблирования в зависимости от условия. Также как ход выполнения подпрограммы может меняться в зависимости от некоторых условий в момент выполнения, так и у макрокоманды должна быть возможность изменять в момент транслирования генерацию соответствующего машинного кода в зависимости от удовлетворения условий. Макроассемблер фирмы IBM допускает условное ассемблирование. На самом деле, условное ассемблирование не обязательно входит только в макрокоманду. Программа может использовать условное транслирование в любом месте ассемблерного текста. Однако наиболее часто оно встречается в макрокомандах. В IBM PC условное транслирование поддерживается только Макроассемблером MASM. Так же, как и выполнение макрокоманд, условное ассемблирование происходит во время трансляции, а не выполнения программы. Условное транслирование позволяет программисту "запрограммировать" ассемблер на транслирование различных последовательостей кодов.