Some assemblers have reasonable macro support, which usually works internally as a preprocessor or very close to it.
Otherwise, as I wrote in the commentary, why don't you use the C preprocessor? (this is a standalone tool, you can project any text file with it, just using #define and others to expand your asm source, the rest of the content should not look like a C source, the preprocessor does not care, it treats the file like [any] text file )
You need it? I would not. I made huge code in ASM just because of my lack of experience, and the macro / preprocessor will not save me from this huge error (they will probably just make it less obvious and somewhat more bearable for a longer period of time).
While you do only small pieces of code in ASM for educational reasons or for performance / low-level things, macros / preprocessor will IMHO add an abstraction layer, obscuring the prepared instructions, so during debugging you can then ask "where did this?". I prefer to write each ASM instruction manually, knowing why I put it there, I do not want any surprises in the ASM code, it is already quite difficult to write free code in ASM.
At the same time, most of my later work at ASM was a 256B intro, so I really should have known about every byte released ... :)
Ped7g source share