Вот такой стандатрный макрос из MASM32 Code (Text): literal MACRO quoted_text:VARARG LOCAL local_text .data local_text db quoted_text,0 align 4 .code EXITM <local_text> ENDM Здесь директива align 4 служит для выравнивания local_text по границе в 4 байта? Почему тогда она после local_text, а не до?
K10 32-ух битный процессор при обращении по адресу "любит", чтобы он (адрес) был кратен четырем. Количество байт занятых под local_text может быть любым. Добавляя align 4 в конце макроса, автор решает задачу обеспечения кратности четырем, адреса, следующего за local_text.
K10 если он в начале секции то он и так выравнен, а если следует за таким-же макросом то его выравнивает предшественник - собственно фишка чисто стилистическая, предполагающая что байты определяются через макрос, дворды выравнивания не нарушают, а wordы не используются как нежелательный элемент в 32битном коде