Copyright (C) 2000-2012 |
GNU Info (nasm.info)Section 3.2.53.2.5. `TIMES': Repeating Instructions or Data ---------------------------------------------- The `TIMES' prefix causes the instruction to be assembled multiple times. This is partly present as NASM's equivalent of the `DUP' syntax supported by MASM-compatible assemblers, in that you can code zerobuf: times 64 db 0 or similar things; but `TIMES' is more versatile than that. The argument to `TIMES' is not just a numeric constant, but a numeric _expression_, so you can do things like buffer: db 'hello, world' times 64-$+buffer db ' ' which will store exactly enough spaces to make the total length of `buffer' up to 64. Finally, `TIMES' can be applied to ordinary instructions, so you can code trivial unrolled loops in it: times 100 movsb Note that there is no effective difference between `times 100 resb 1' and `resb 100', except that the latter will be assembled about 100 times faster due to the internal structure of the assembler. The operand to `TIMES', like that of `EQU' and those of `RESB' and friends, is a critical expression (*Note Section 3.8::). Note also that `TIMES' can't be applied to macros: the reason for this is that `TIMES' is processed after the macro phase, which allows the argument to `TIMES' to contain expressions such as `64-$+buffer' as above. To repeat more than one line of code, or a complex macro, use the preprocessor `%rep' directive. automatically generated by info2www version 1.2.2.9 |