Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Директивы условного ассемблирования





Директивы условного ассемблирования позволяют в некоторой степени управлять процессом ассемблирования. В зависимости от значений условий времени ассемблирования, проверяемых этими директивами, макроассемблер может пропустить обработку целого блока предложений или обработать вместо него другой (альтернативный) блок.

Блок предложений условного ассемблирования имеет следующий общий вид:

директива-условного-ассемблирования

..........

предложения Ассемблера или инструкции

..........

[[ ELSE ]]

..........

предложения Ассемблера или инструкции

..........

ENDIF

Директива-условного-ассемблирования задает условие, при истинном значении которого будут ассемблироваться предложения, расположенные непосредственно после директивы и до ключевого слова ELSE, или, если оно опущено, до конца блока, обозначаемого ENDIF. Если условие не выполняется, ассемблируется группа предложений, расположенная между ключевыми словами ESLE и ENDIF, а если ELSE опущено, MASM пропускает блок.

Допускается вложенность директив. Максимальная глубина вложения — 255.

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

 

 

Директивы условного ассемблирования:

IF выражение

IFE выражение

IF1

IF2

IFDEF имя

IFNDEF имя

IFB <аргумент>

IFNB <аргумент>

IFIDN <аргумент-1>,<аргумент-2>

IFDIF <аргумент-2>,<аргумент-2>

В случае директивы IF блок ассемблируется, если указанное выражение истинно (не нуль). Для директивы IFE блок ассемблируется, если выражение ложно (нуль). Выражение должно иметь абсолютное значение и не может содержать ссылок вперед.

Директивы IF1 и IF2 проверяют номер прохода Ассемблера и обеспечивают обработку блока только на 1-м (IF1) или только на 2-м (IF2) проходе.

Пример (выдача сообщений на консоль):

IF1

%OUT Pass 1

ELSE

%OUT Pass 2

ENDIF

Директивы IFDEF и IFNDEF проверяют, определено ли в программе указанное имя. IFDEF обеспечивает ассемблирование, если это имя определено как метка, переменная или символ, IFNDEF — если имя не определено. Заметим, что если в качестве имени задана ссылка вперед, она считается неопределенной на 1-м проходе и определенной на
2-м.

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

Директивы IFB и IFNB проверяют значение указанного аргумента, трактуемого как строка символов, и вызывают ассемблирование блока, если аргумент является пробелом (IFB) или отличен от пробела (IFNB). Аргумент может быть именем, числом или выражением. Скобки < и > обязательны.

Директивы IFB и IFNB введены для использования их в макроопределениях, где они могут управлять условным ассемблированием, основываясь на том, задан или нет параметр макроопределения. В этом случае в качестве аргумента следует задавать один из формальных параметров макроопределения.

Директивы IFDIF и IFIDN сравнивают специфицированные для них аргументы, которые трактуются как символьные строки (с учетом регистра), и вызывают ассемблирование блока при их идентичности (IFIDN) или неидентичности (IFDIF). Аргументы могут быть именами, числами или выражениями. Скобки < и > обязательны. Аргументы разделяются запятой.

Директивы IFDIF и IFIDN введены для использования их в макроопределениях, где они могут управлять условным ассемблированием, анализируя значения передаваемых в макроопределение параметров. В этом случае в качестве аргументов следует задавать формальные параметры макроопределения.







Date: 2015-05-22; view: 573; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию