Вопрос по статье "От зелёного к красному. Часть 1"

Тема в разделе "WASM.BEGINNERS", создана пользователем Glock, 28 янв 2006.

  1. Glock

    Glock New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2006
    Сообщения:
    3
    В статье "От зелёного к красному. Часть 1" привидён такой код:
    Код (Text):
    1. .386
    2. option casemap:none
    3. .model flat,stdcall
    4. include \tools\masm32\include\windows.inc
    5. includelib \tools\masm32\lib\kernel32.lib
    6. include \tools\masm32\include\kernel32.inc
    7. .data
    8.     db 0
    9. .code
    10.     invoke ExitProcess,0
    11. start:
    12.  
    13. call delta
    14. delta:
    15.     mov ebp,dword ptr [esp]
    16.     sub ebp,offset delta
    17.     lea ebx,[ebp+x]
    18.     jmp x
    19.     a db "c:\\2.txt",0
    20.     NameGetProcAddress db "GetProcAddress",0
    21. imp:
    22.     db 'CreateFileA',0
    23. [b][i]address label DWORD
    24.     _CreateFileA dd ?[/i][/b]
    25.     include part1.inc
    26. x: 
    27.     lea eax,[ebp+GetKernelSEH]
    28.     call eax
    29.     mov esi,eax
    30.     lea eax,[ebp+GetBase]
    31.     call eax
    32.  
    33.     mov esi,eax
    34.  
    35.     lea eax,[ebp+NameGetProcAddress]
    36.     push eax
    37.     lea eax,[ebp+GetGetProcAddress]
    38.     mov ebx,esi
    39.     call eax
    40.  
    41.     mov ecx,eax
    42.     lea edi,[ebp+imp]
    43.     lea ebx,[ebp+address]
    44.     push 1
    45.     lea eax,[ebp+GetAPIs]
    46.     call eax
    47.     mov eax,[ebp+_CreateFileA]
    48.     push 0
    49.     push FILE_ATTRIBUTE_NORMAL
    50.     push CREATE_NEW
    51.     push 0
    52.     push 0
    53.     push 0
    54.     lea ecx,[ebp+a]
    55.     push ecx
    56.     call eax   
    57. end start


    Собственно вопросы:

    1. Зачем используется директива label DWORD

    2. Почему возникает ошибка, когда пытаюсь присвоить значение переменной _CreateFileA dd (возможно из-за того, что она в секции кода?)