Не могу обратиться к локальным переменным в FASM!

Тема в разделе "WASM.ASSEMBLER", создана пользователем MadBorZ, 14 авг 2010.

  1. MadBorZ

    MadBorZ New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2010
    Сообщения:
    3
    Здравствуйте, не могу понять как работать с локальными переменными в FASM.

    Пытаюсь компилить такой вот код:
    Код (Text):
    1. proc Blablabla
    2.     local szWindowsDir[MAX_PATH] : BYTE
    3.  
    4.     invoke GetSystemDirectory, szWindowsDir, MAX_PATH
    5.     ret    
    6. endp
    После FASM говорит что:
    Собственно каким образом мне заставить это работать? =)
    Буду примного благодарен за любые советы!
     
  2. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    Как-нибудь так:

    Код (Text):
    1. proc Blablabla
    2.     local szWindowsDir[MAX_PATH] : BYTE
    3.  
    4.     lea     eax, [szWindowsDir]
    5.     invoke  GetSystemDirectory, eax, MAX_PATH
    6.     ret    
    7. endp
    Вопросы на засыпку:

    - как представлены локальные переменные в памяти? (hint: OllyDbg)
    - как invoke работает с локальными переменными в masm'e? (hint: OllyDbg)
    - что такое invoke в fasm'e и что он делает? (hint: контекстный поиск по '\fasm\include\')
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Если юзать win32ax.inc, то можно передавать указатели на локальные переменные в масм-стиле через addr:
    Код (Text):
    1. invoke  GetSystemDirectory, addr szWindowsDir,MAX_PATH
     
  4. MadBorZ

    MadBorZ New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2010
    Сообщения:
    3
    Огромное спасибо за помощь!
    Теперь код работает! =)