Условные директивы с выражениями
Эти директивы обеспечивают условное ассемблирование или генерацию сообщений об ошибке на основе результатов вычисления в Турбо Ассемблере выражения. Во всех этих директивах при вычислении выражения должна получаться константа, и оно не может содержать опережающих ссылок. Если при вычислении выражения получается 0, Турбо Ассемблер рассматривает выражение, как ложное (false). в противном случае оно рассматривается как истинное (true).
В следующей таблице показаны директивы условного ассемблирования, использующие выражения.
Директивы условного ассемблирования, использующие сообщенияДиректива IFxxx | Ассемблирует "тело_условия_true" если: |
---|
IF выражение | при вычислении выражения получается значение true. | IFE выражение | при вычислении выражения получается значение false. | ELSEIF выражение | при вычислении выражения получается значение true. | ELSEIFE выражение | при вычислении выражения получается значение false. |
В следующей таблице показаны директивы генерации сообщений об ошибке, в которых используются выражения:
Директивы генерации сообщений об ошибке, использующие выраженияДиректива ERRxxx | Генерируется сообщение user error, если: |
---|
ERRIF выражение | при вычислении выражения получается значение true. | .ERRNZ выражение | при вычислении выражения получается значение true (только в режиме MASM). | ERRIFE выражение | при вычислении выражения получается значение false. | .ERRE выражение | при вычислении выражения получается значение false (только в режиме MASM). |
Условные директивы с идентификатором
Эти директивы обеспечивают условное ассемблирование или генерацию сообщения об ошибке на основе того, является ли определенным один или более идентификаторов. Данные идентификаторы объединены в выражение с идентификаторами.
Выражение с идентификаторами - это выражение, состоящее из имен идентификаторов, булевских операций AND, OR, NOT и круглых скобок. В выражении с идентификаторами каждое имя идентификатора интерпретируется как булевское значение, при вычислении которого получается значение true, если идентификатор существует (определен), или false, если идентификатор не существует (даже если он определяется в модуле позднее). Турбо Ассемблер комбинирует эти значения, используя булевские операции, для получения конечного значения true или false. В своей простейшей форме выражение с идентификаторами содержит имя единственного идентификатора и дает при вычислении значение true, если этот идентификатор определен. Синтаксические правила в выражении с идентификаторами аналогичны тем, которые используются в выражениях Турбо Ассемблера. Например, если идентификатор foo определен, а идентификатор bar - нет, то при вычислении выражения с идентификаторами получаются следующие результаты:
Вычисление определенных и неопределенных идентификаторовВыражение с идентификаторами | Результат |
---|
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) |
В следующей таблице показаны директивы, которые управляют ассемблированием и используют выражение с идентификаторами:
Директивы, использующие выражение с идентификаторамиДиректива IFxxx | Ассемблирует "тело_условия_true" если |
---|
IFDEF выражение_ид | при вычислении выражения получается значение true. | IFNDEF выражение_ид | при вычислении выражения получается значение false. | ELSEIFDEF выражение_ид | при вычислении выражения получается значение true. | ELSEIFNDEF выражение_ид | при вычислении выражения получается значение false. |
В следующей таблице показаны директивы выводы сообщения об ошибке, которые используют выражение с идентификаторами:
Директивы генерации сообщения об ошибкеДиректива IFxxx | Ассемблирует "тело_условия_true" если |
---|
ERRIFDEF выражение_ид | при вычислении выражения получается значение true. | .ERRDEF выражение_ид | при вычислении выражения получается значение true (только для режима MASM). | ERRIFNDEF выражение_ид | при вычислении выражения получается значение false. | .ERRNDEF выражение_ид | при вычислении выражения получается значение false (только в режиме MASM). |
Например, следующие условия генерации сообщения об ошибке эквивалентны и приводят к генерации ошибки в случае определения foo и bar:
ERRIFDEF foo AND bar ERRIFNDEF NOT ( foo AND bar ) ERRIFBDEF NOT foo OR NOT bar
1 2 3 4
8 8 8
| |