The best part of Nasm's macro system is that anybody can write their own macros, customized to their own taste. The worst part of it is that everybody does. :)
To me, "Pure Assembly" and "macros" would be mutually exclusive, but you can mix-and-match at any level you want, I guess. There are some macros in the "misc" directory in the source code, if you've got that. There are some macros in the "contributions" section of the download page here. One of the more recent "packages" for Nasm (including Nasm, which you've presumably got, a linker, resource compiler, macros, and examples) is the NasmX project:
http://www.asmcommunity.net/projects/nasmx/Whether you use the IDE or not, there are extensive macros (nagoa+.inc) in the NaGoA project:
http://www.visual-assembler.pt.vu/For Linux... and other 'nixish OSen... The "asmutils" package includes a complex macro system which will allow you to assemble the same source code for Linux, BSD, and a couple others:
http://asm.sourceforge.net/asmutils.htmlAlso for Linux, Jeff Owens has got a "package" - IDE, library, and tools more than macros. The AsmRef section is the most "asm friendly" documentation I've come across:
http://linuxasmtools.net/I've written a set of macros that allows:
;--------------------
; nasm -f elf hw2uyane.asm
; ld -o hw2uyane hw2uyane.o
%include "yanetut.inc"
putstring "Please tell me your name? "
getstring 79,name
putstring "Hello, "
putstring name
putstring "! Welcome to Linux uhhh... Assembly!", linefeed
putstring "BTW, the answer is "
mov ecx, 42
mov ebx, 1
add ebx, ecx
; HLLp, I can't read this part!!!
putnumber ebx
putstring ", not "
putnumber ecx
putstring ". Deep Thought was off-by-one.", linefeed
depart victorious
;-----------------------
This is intended as a joke (goofin' on HLA), not something anyone would actually use... But many things are possible...
Now... how do you assemble for Win32/ELF? The Friendly Manual might have some hints. :)
Essentially, specify the output format on the command line "-f win32" or "-f elf32" (a.k.a. "-f elf"). After that, RTFM for the linker...
Or... you can assemble in "-f bin" (the default), as you've been doing for .com files, but with "bits 32" specified in the source, and an appropriate executable header stuffed into it. Both "nagoa+.inc" and "elf.inc" from the asmutils package have macros to "simplify" doing this. Aside from "obsessively short", there isn't too much advantage to this - using a linker is more flexible... but it's an option...
If that's not enough to get you started... ask more! :)
Best,
Frank