Table of Contents Previous topic Next topic
CROSS ASSEMBLER->Structured Assembly->IF/THEN/ELSE/ENDI
The IF/THEN/ELSE/ENDI construct will generate code that selects whether or not your enclosed assembler code will be executed. The ELSE is optional.
The construct without the ELSE is: IF.<size> <expression> THEN.<distance>
<your assembly code>
ENDI
The construct with the ELSE is: IF.<size> <expression> THEN.<distance>
<your assembly code>
ELSE.<distance>
<your assembly code>
ENDI
<size> can be .B, .W or .L and the assembler will use this size when it generates the compare instructions. If no size is specified, the assembler will assume .W. However if either of the operands of a pair is an address register, the size of the compare will always be .L.
<distance> can be .S, .W and for chips that support long branches .L. The assembler will use this when it generates code for forward branches. For ELSE the distance must be present since the assembler uses the dot to distinguish this structured assembly ELSE from an alternative use of ELSE.
<expression> can be:
<subexpression>
<subexpression> AND <subexpression>
<subexpression> OR <subexpression>
<subexpression> can be:
<condition>
<operand> <condition> <operand>
<condition> can be one of:
<CC> | <CS> | <EQ> | <GE> | <GT> |
<HI> | <LE> | <LS> | <LT> | <MI> |
<NE> | <PL> | <VC> | <VS> |
IF.L <CC> THEN.S
<your assembly code>
ELSE.S
<your assembly code>
ENDI
BCS.S .00000
<your assembly code>
BRA.S .00001
.00000
<your assembly code>
.00001
IF.L D1 <EQ> (A1) THEN.S
<your assembly code>
ELSE.S
<your assembly code>
ENDI
CMP.L (A1),D1
BNE.S .00000
<your assembly code>
ELSE .S
BRA.S .00001
.00000
<your assembly code>
ENDI
.00001
IF.L D1 <EQ> (A1) AND D1 <NE> #35 THEN.S
<your assembly code>
ELSE.S
<your assembly code>
ENDI
CMP.L (A1),D1
BNE.S .00000
CMP.L #35,D1
BEQ.S .00000
<your assembly code>
BRA.S .00001
.00000
<your assembly code>
.00001