Простейшие макросы
Простейшие макросы используют директиву EQU для определения макроса. Директива используется для задания обозначений операторов или их частей. Такие макросы называются текстовыми.
Пример. Пусть необходимо в программе использовать много диагностических сообщений, которые содержат общие части, например:
msg1 db ‘Ошибка в записи идентификатора’, 13, 10, 0
msg2 db ‘Ошибка в записи числа’, 13, 10, 0
···
msgN db ‘Ошибка в записи выражения’, 13, 10, 0
Для упрощения записи обозначим общие части сообщений m1(Ошибка в записи) и m2(13, 10, 0). Для этого используются операторы:
m1 EQU < Ошибка в записи >
m2 EQU <13, 10, 0>
Угловые скобки в записи означают, что данная запись рассматривается как единое целое, а не состоит из нескольких элементов.
Тогда для задания msg1, msg2,... msgN требуются операторы:
msg1 db m1, ‘ идентификатора’, m2
msg2 db m1, ‘ числа’, m2
···
msgN db m1, ‘ выражения’, m2
Для проверки правильности составленных макросов составим программу для формирования строк:
IDEAL
p586
model flat
extrn ExitProcess:proc
dataseg
m1 EQU < 'Ошибка в записи' >
m2 EQU <13, 10, 0>
msg1 db m1, ' идентификатора', m2
msg2 db m1, ' числа', m2
msg3 db m1, ' выражения', m2
codeseg
begin:
call ExitProcess
end begin
Для просмотра сформированных строк войдите в режим DUMP и, используя CTRL/G, задайте просмотр области памяти, начиная с msg1. Вы увидите сформированные строки.