ZHCU947E June 2015 – January 2023
汇编条件代码块
.ifcondition
[.elseifcondition]
[.else]
.endif
.if 指令用于标记条件代码块的开始。条件 是必备项。
.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 指令用于终止条件代码块。
请参阅GUID-E831EB07-1E7A-4933-96DD-2BD063C80128.html#GUID-E831EB07-1E7A-4933-96DD-2BD063C80128,了解有关关系运算符的信息。
此示例展示了条件汇编:
1 00000001 SYM1 .set 1
2 00000002 SYM2 .set 2
3 00000003 SYM3 .set 3
4 00000004 SYM4 .set 4
5
6 If_4: .if SYM4 = SYM2 * SYM2
7 00000000 00000004 .byte SYM4 ; Equal values
8 .else
9 .byte SYM2 * SYM2 ; Unequal values
10 .endif
11
12 If_5: .if SYM1 <;= 10
13 00000001 0000000A .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 00000002 00000008 .byte SYM4 + SYM4 ; Equal values
22 .endif
23
24 If_7: .if SYM1 = SYM2
25 .byte SYM1
26 .elseif SYM2 + SYM3 = 5
27 00000003 00000005 .byte SYM2 + SYM3
28 .endif