Macro instructions in MASM and GAS
Although the core idea behind the macro instruction mechanism is the same across all assemblers, the syntax of macro instructions and the capabilities of the engine vary. The following are two examples of simple macros for MASM and GAS.
Microsoft Macro Assembler
Remember our test program for MASM in Chapter 2, Setting Up a Development
Environment? We can replace the code that invokes the show_message
procedure with the following macro instruction:
MSHOW_MESSAGE MACRO title, message ;macro_name MACRO parameters push message push title call show_message ENDM
This may make the code a bit more readable as we may then call the show_message
procedure this way:
MSHOW_MESSAGE offset ti, offset msg
The GNU Assembler
The macro engine of the GNU Assembler is quite similar to that of Microsoft's MASM, yet there are a few syntactic differences (not taking into account the overall syntax difference) that we have to pay attention to. Let us take the output_message
procedure...