Der GNU-Assembler ist /etwas/ älter als der Atmel-AVR-Assembler und die Direktiven heissen wie eh und je: .text, .section, .macro, .endm, .type, .size, ...

Eine Assembler-Quelle unabhängig vom verwendeten Assembler zu halten sollte möglich sein, der Lesbarkeit der Quelle aber nicht unbedingt förderlich sein.

Im GNU-Assembler kannst du den C-Präprozessor verwenden (im Atmel-Assembler übrigens auch) um textuelle Ersetzungen vorzunehmen.

Des weiteren bietet der GNU-Assembler eine sehr mächtige Makro-Sprache per .macro, die weit über normalen, textuellen Ersatz hinausgeht.

Du hast also die möglichkeit, per #define LOW() oder .macro LOW auf GNU-Syntax abzubilden.