IF, ELSE, ENDIF, and ELIF
The IF
, ELSE
, ENDIF
, and ELIF
directives allow you to conditionally assemble sequences of instructions and directives.
Syntax
IF logical-expression
…;code
{ELSE
…;code}
ENDIF
where:
logical-expression
is an expression that evaluates to either
{TRUE}
or{FALSE}
.
Usage
Use IF
with ENDIF
, and optionally with
ELSE
, for sequences of instructions or directives that are only
to be assembled or acted on under a specified condition.
IF...ENDIF
conditions can be nested.
The IF
directive introduces a condition that controls whether to
assemble a sequence of instructions and directives. [
is a synonym
for IF
.
The ELSE
directive marks the beginning of a sequence of instructions
or directives that you want to be assembled if the preceding condition fails.
|
is a synonym for ELSE
.
The ENDIF
directive marks the end of a sequence of instructions or
directives that you want to be conditionally assembled. ]
is a
synonym for ENDIF
.
The ELIF
directive creates a structure equivalent to ELSE
IF
, without the requirement for nesting or repeating the condition.
Using ELIF
Without using ELIF
, you can construct
a nested set of conditional instructions like this:
IFlogical-expression instructions
ELSE IFlogical-expression2 instructions
ELSE IFlogical-expression3 instructions
ENDIF ENDIF ENDIF
A nested structure like this can be nested up to 256 levels deep.
You can write the same structure more simply using ELIF
:
IFlogical-expression instructions
ELIFlogical-expression2 instructions
ELIFlogical-expression3 instructions
ENDIF
This structure only adds one to the current nesting depth,
for the IF...ENDIF
pair.
Examples
The following example assembles the first set of instructions if NEWVERSION
is
defined, or the alternative set otherwise:
- Assembly conditional on a variable being defined
-
IF :DEF:NEWVERSION ; first set of instructions or directives ELSE ; alternative set of instructions or directives ENDIF
Invoking armasm as follows defines NEWVERSION
, so the first
set of instructions and directives are assembled:
armasm --cpu=8-A.32 --predefine "NEWVERSION SETL {TRUE}" test.s
Invoking armasm as follows leaves NEWVERSION
undefined, so
the second set of instructions and directives are assembled:
armasm --cpu=8-A.32 test.s
The following example assembles the first set of instructions if NEWVERSION
has
the value {TRUE}
, or the alternative set otherwise:
- Assembly conditional on a variable value
-
IF NEWVERSION = {TRUE} ; first set of instructions or directives ELSE ; alternative set of instructions or directives ENDIF
Invoking armasm as follows causes the first set of instructions and directives to be assembled:
armasm --cpu=8-A.32 --predefine "NEWVERSION SETL {TRUE}" test.s
Invoking armasm as follows causes the second set of instructions and directives to be assembled:
armasm --cpu=8-A.32 --predefine "NEWVERSION SETL {FALSE}" test.s