ZHCU875Z August 2001 – October 2023 SM320F28335-EP
汇编条件代码块
.ifcondition
[.elseifcondition]
[.else]
.endif
.if 指令用于标记条件代码块的开始。条件 是必备项。如果表达式计算结果为 true(非零),则汇编器会汇编表达式后面的代码(一直到 .elseif、.else 或 .endif)。如果表达式计算结果为 false (0),则汇编器会汇编 .elseif(如果存在)、.else(如果存在)或 .endif(如果 .elseif 或 .else 不存在)后面的代码。
.elseif 指令用于标识当 .if 表达式为 false (0) 和 .elseif 表达式为 true(非零)时要汇编的代码块。当 .elseif 表达式计算结果为 false 时,汇编器继续执行到下一个 .elseif(如果存在)、.else(如果存在)或 .endif(如果 .elseif 或 .else 不存在)。在条件代码块中,.elseif 是可选项,可以使用多个 .elseif。如果表达式计算结果为 false,且没有 .elseif,则汇编器会继续执行 .else(如果存在)或 .endif 后面的代码。
.else 指令用于标识当 .if 表达式和所有 .elseif 表达式的计算结果均为 false (0) 时汇编器汇编的代码。.else 指令是可选的;如果表达式计算结果为 false,且没有 .else 语句,则汇编器会继续执行 .endif 后面的代码。可以在同一个条件代码块中使用 .elseif 和 .else 指令。
.endif 指令用于终止条件代码块。
请参阅节 4.9.2,了解有关关系运算符的信息。
此示例展示了条件汇编:
1 0001 SYM1 .set 1
2 0002 SYM2 .set 2
3 0003 SYM3 .set 3
4 0004 SYM4 .set 4
5
6 If_4: .if SYM4 = SYM2 * SYM2
7 000000 0004 .byte SYM4 ; Equal values
8 .else
9 .byte SYM2 * SYM2 ; Unequal values
10 .endif
11
12 If_5: .if SYM1 <= 10
13 000001 000A .byte 10 ; Less than / equal
14 .else
15 .byte SYM1 ; Greater than
16 .endif
17
18 If_6: .if SYM3 * SYM2 != SYM4 + SYM2
19 .byte SYM3 * SYM2 ; Unequal value
20 .else
21 000002 0008 .byte SYM4 + SYM4 ; Equal values
22 .endif
23
24 If_7: .if SYM1 = 2
25 .byte SYM1
26 .elseif SYM2 + SYM3 = 5
27 000003 0005 .byte SYM2 + SYM3
28 .endif