Contents|Index|Previous|Next

Repetitive sections of assembly

Two preprocessor directives allow you to repeatedly issue copies of the same block of assembly code.

.AREPEAT aexp
.AENDR
If you simply need to repeat the same block of assembly over and over a fixed number of times, sandwich one instance of the repeated block between .AREPEAT and .AENDR. Specify the number of copies as aexp (which must be an absolute expression For example, the following repeats two assembly statements three times in succession.

    .AREPEAT 3 rotcl r2 div1 r0,r1 .AENDR

.AWHILE expra cmp exprb
.AENDW
.AWHILE stra cmp strb
.AENDW
To repeat a block of assembly depending on a conditional test, rather than repeating it for a specific number of times, use .AWHILE. .AENDW marks the end of the repeated block. The conditional comparison works exactly the same way as for .AIF, with the same comparison operators (see Conditional assembly).
Since the terms of the comparison must be absolute expression, .AWHILE is primarily useful within macros. See Defining your own directives.

You can use the .EXITM preprocessor directive to break out of loops early (as well as to break out of macros). See Defining your own directives.