Макросредства языка Ассемблера позволяют формировать в исходной программе блоки предложений (макроопределения), имеющие одно общее имя, и затем многократно использовать это имя для представления всего блока. В процессе ассемблирования MASM автоматически замещает каждое распознаваемое макроимя (макрокоманду) последовательностью предложений в соответствии с макроопределением, в результате чего формируется макрорасширение.
Макрокоманда может встречаться в исходной программе столько раз, сколько это необходимо. Макроопределение в исходном файле должно предшествовать его первому использованию в макрокоманде. Макроопределение может как непосредственно находиться в тексте программы, так и подключаться из другого файла директивойINCLUDE.
В макроопределение могут быть переданы параметры, которые могут управлять макроподстановкой или задавать фрагменты текста.
В программе на языке Ассемблера макрокоманды выполняют в целом те же функции, что и процедуры, то есть, обеспечивают многократное и функционально законченное действие с параметрическим управлением.
Различие заключается в следующем:
u Процедура присутствует в исходной программе один раз, тогда как тело макроопределения дублируется столько раз, сколько соответствующих макрокоманд содержит исходный файл.
u Текст процедуры статичен и неизменен в то время, как состав макрорасширения может зависеть от параметров макрокоманды. Следует помнить, что параметры макрокоманды — это значения времени ассемблирования, а параметры процедуры принимают какие-то определенные значения лишь в процессе выполнения программы.