В статье "От зелёного к красному. Часть 1" привидён такой код: Код (Text): .386 option casemap:none .model flat,stdcall include \tools\masm32\include\windows.inc includelib \tools\masm32\lib\kernel32.lib include \tools\masm32\include\kernel32.inc .data db 0 .code invoke ExitProcess,0 start: call delta delta: mov ebp,dword ptr [esp] sub ebp,offset delta lea ebx,[ebp+x] jmp x a db "c:\\2.txt",0 NameGetProcAddress db "GetProcAddress",0 imp: db 'CreateFileA',0 [b][i]address label DWORD _CreateFileA dd ?[/i][/b] include part1.inc x: lea eax,[ebp+GetKernelSEH] call eax mov esi,eax lea eax,[ebp+GetBase] call eax mov esi,eax lea eax,[ebp+NameGetProcAddress] push eax lea eax,[ebp+GetGetProcAddress] mov ebx,esi call eax mov ecx,eax lea edi,[ebp+imp] lea ebx,[ebp+address] push 1 lea eax,[ebp+GetAPIs] call eax mov eax,[ebp+_CreateFileA] push 0 push FILE_ATTRIBUTE_NORMAL push CREATE_NEW push 0 push 0 push 0 lea ecx,[ebp+a] push ecx call eax end start Собственно вопросы: 1. Зачем используется директива label DWORD 2. Почему возникает ошибка, когда пытаюсь присвоить значение переменной _CreateFileA dd (возможно из-за того, что она в секции кода?)