[SECTION .xyz] - это примитивная форма директивы section, которая просто устанавливает текущую секцию вывода, «SECTION .xyz» немного отличается, потому что работает как макрос:
SECTION .text
расширяется до двух строк
%define __SECT__ [SECTION .text]
[SECTION .text]
, который можно использовать вместе с макросом для временного переключения секции вывода и возврата ее к исходному значению. Пример из руководства NASM:
%macro writefile 2+
[section .data]
%%str: db %2
%%endstr:
__SECT__
mov dx,%%str
mov cx,%%endstr-%%str
mov bx,%1
mov ah,0x40
int 0x21
%endmacro
Когда вы используете этот макрос, секция вывода временно устанавливается на .data примитивной формой SECTION и возвращается к своему исходному значению с помощью __ SECT __