I haven't used inline assembly in some time, but if I recall correctly, #defining stuff like that isn't such a hot idea, as preprocessor directives bypass the error and syntax checking of the compiler. All it's really doing is copy-pasting the macro into the locations where it's being called. Probably safer to write it into its own method. As for the error itself, I'd take a closer look at your syntax. Try using the Intel style. The code is cleaner and it's easier to find errors. See the following link for an example:
http://www.cplusplus.com/forum/beginner/3280/
Beyond that, I couldn't say.
Hopefully there's someone else better versed in assembly here. Otherwise, I'd ask on the cplusplus.com forums, or one of the many assembly forums out there . . .