ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
汇编条件代码块
.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 指令用于终止条件代码块。
请参阅节 4.9.2,了解有关关系运算符的信息。
此示例展示了条件汇编:
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 04 .byte SYM4 ; Equal values
8 .else
9 .byte SYM2 * SYM2 ; Unequal values
10 .endif
11
12 If_5: .if SYM1 <= 10
13 00000001 0A .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 08 .byte SYM4 + SYM4 ; Equal values
22 .endif
23
24 If_7: .if SYM1 = SYM2
25 .byte SYM1
26 .elseif SYM2 + SYM3 = 5
27 00000003 05 .byte SYM2 + SYM3
28 .endif