Эти директивы обеспечивают условное ассемблирование или ге- нерацию сообщения об ошибке на основе того, является ли опреде- ленным один или более идентификаторов. Данные идентификаторы объ- единены в выражение с идентификаторами.
Выражение с идентификаторами - это выражение, состоящее из имен идентификаторов, булевских операций AND, OR, NOT и круглых скобок. В выражении с идентификаторами каждое имя идентификатора интерпретируется как булевское значение, при вычислении которого получается значение true, если идентификатор существует (опреде- лен), или false, если идентификатор не существует (даже если он определяется в модуле позднее). Турбо Ассемблер комбинирует эти значения, используя булевские операции, для получения конечного значения true или false. В своей простейшей форме выражение с идентификаторами содержит имя единственного идентификатора и дает при вычислении значение true, если этот идентификатор определен. Синтаксические правила в выражении с идентификаторами аналогичны тем, которые используются в выражениях Турбо Ассемблера. Напри- мер, если идентификатор foo определен, а идентификатор bar - нет, то при вычислении выражения с идентификаторами получаются следую- щие результаты:
Вычисление определенных и неопределенных идентификаторов
Таблица 15.3 ------------------------------------T---------------------------¬ ¦ Выражение с идентификаторами ¦ Результат ¦ +-----------------------------------+---------------------------+ ¦ foo ¦ True ¦ ¦ ¦ ¦ ¦ bar ¦ False ¦ ¦ ¦ ¦ ¦ not foo ¦ False ¦ ¦ ¦ ¦ ¦ not bar ¦ True ¦ ¦ ¦ ¦ ¦ foo OR bar ¦ True ¦ ¦ ¦ ¦ ¦ foo AND bar ¦ False ¦ ¦ ¦ ¦ ¦ NOT (foo AND bar) ¦ True ¦ ¦ ¦ ¦ ¦ NOT foo OR NOT bar ¦ True (то же, что ¦ ¦ ¦ (NOT foo) OR (NOT bar) ¦ L-----------------------------------+----------------------------
В следующей таблице показаны директивы, которые управляют ассемблированием и используют выражение с идентификаторами:
Директивы, использующие выражение с идентификаторами Таблица 15.4 -------------------------T--------------------------------------¬ ¦Директива IFxxx ¦ Ассемблирует "тело_условия_true" если¦ +------------------------+--------------------------------------+ ¦IFDEF выражение_ид ¦ при вычислении выражения получается¦ ¦ ¦ значение true. ¦ ¦ ¦ ¦ ¦IFNDEF выражение_ид ¦ при вычислении выражения получается¦ ¦ ¦ значение false. ¦ ¦ ¦ ¦ ¦ELSEIFDEF выражение_ид ¦ при вычислении выражения получается¦ ¦ ¦ значение true. ¦ ¦ ¦ ¦ ¦ELSEIFNDEF выражение_ид ¦ при вычислении выражения получается¦ ¦ ¦ значение false. ¦ L------------------------+---------------------------------------