Программирование на Ассемблере

       

Простейшие макросы


Простейшие макросы используют директиву 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. Вы увидите сформированные строки.

 



Содержание раздела