ZHCU875Z August 2001 – October 2023 SM320F28335-EP
反复汇编代码块
.loop [count]
.break [end-condition]
.endloop
您可以使用三条指令反复汇编代码块:
.loop 指令用于开始一个可重复的代码块。如果使用了可选的 count 操作数,则它必须是定义明确的整数表达式。计数 指示要执行的循环数(循环计数)。如果省略了计数,则默认为 1024。循环将反复为次数计数,除非由 .break 指令提前终止。
可选的 .break 指令用于提早终止 .loop。您可以在不使用 .break 的情况下使用 .loop。仅当 end-condition 表达式为 true(计算结果为非零)时,.break 指令才会终止 .loop。如果省略了可选的 end-condition 操作数,则默认为 true。如果 end-condition 为 true,则汇编器会立即停止重复 .loop 主体;不会汇编 .break 之后和 .endloop 之前的任何剩余语句。汇编器恢复汇编 .endloop 指令之后的语句。如果 end-condition 为 false(计算结果为 0),则循环继续。
.endloop 指令用于标记可重复代码块的结束。当循环终止时,不管是通过 .break 指令的 true end-condition 还是通过对迭代次数执行循环计数,汇编器都会停止重复循环体,并恢复汇编 .endloop 指令之后的语句。
此示例说明这些指令如何与 .eval 指令一同使用。前六行中的代码可扩展到紧跟在这六行之后的代码。
1 .eval 0,x
2 COEF .loop
3 .word x*100
4 .eval x+1, x
5 .break x = 6
6 .endloop
1 000000 0000 .word 0*100
1 .eval 0+1, x
1 .break 1 = 6
1 000001 0064 .word 1*100
1 .eval 1+1, x
1 .break 2 = 6
1 000002 00C8 .word 2*100
1 .eval 2+1, x
1 .break 3 = 6
1 000003 012C .word 3*100
1 .eval 3+1, x
1 .break 4 = 6
1 000004 0190 .word 4*100
1 .eval 4+1, x
1 .break 5 = 6
1 000005 01F4 .word 5*100
1 .eval 5+1, x
1 .break 6 = 6