Do you mean macros or directives? An assembler directive doesn't actually compile/assemble to any code; it just tells the assembler what to do with a single-pass phase before the assembling actually begins.
For example, the x86 db
is not a macro, but a directive. It's a directive that gets translated in to the binary equivalent of that textually and stored as cumberless data somewhere in the binary(to which can be specified).
The directive known as times
is a directive used to fill the binary file released with 0s and 1s, or one or the other, or any combination thereof, etc. This is done in x86 bootloaders because, on x86, all bootloaders must be 512 bytes or BIOS won't read it. However, the directive doesn't assemble to any "useful" code/data.
Macros are, as mentioned, data that can be referenced by name rather than value. Assemblers can use both, but it sounds to me like you're confusing these two terms.
While the data directives can also be used like macros along the source, the actual directives can not, and are usually "pre-assembler" steps much like C's preprocessor.