Выходной параметр процедуры ( masm )

Тема в разделе "WASM.BEGINNERS", создана пользователем zverywka, 1 ноя 2009.

  1. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Вопрос:
    Определяю процедуру
    Код (Text):
    1. LoadFile proc lpFileName:dword, dwSize:dword
    Вызываю процедуру
    Код (Text):
    1. Main proc uses ebx edi esi
    2. LOCAL   lpBuffer:dword
    3. LOCAL   dwSize:dword
    4.  
    5. invoke LoadFile, addr szFileName, addr dwSize ( здесь )
    6. ...
    передаю адрес локальной переменной dwSize и не знаю, как в теле процедуру записать по этому адресу значение.
    Подскажите

    Заранее спасибо.
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    lea edi, dwSize ; загрузить адрес локальной переменной
    mov dword ptr [edi], ... ; записать по нему то что нужно
     
  3. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    ;
    Код (Text):
    1.        
    2. mov ebx, dwFileSize; здесь лежит то что я хочу записать в выходной параметр
    3. lea edi, dwSize      
    4. mov dword ptr [edi], ebx
    Не выходит...
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    А нет - торможу :)
    Вариант выше запишет в тот dwSize что в праметрах функции а исходная задача решается так:
    Код (Text):
    1. LoadFile proc lpFileName:dword, dwSize:dword
    2. mov eax, lpFileName   ; читается адрес как значение переменной
    3. mov [eax], результат ; сохранить результат по этому адресу
    4. mov eax, dwSize
    5. mov [eax], результат
    6. ...
    7.  
    8. Main proc uses ebx edi esi
    9. LOCAL   lpBuffer:dword
    10. LOCAL   dwSize:dword
    11.  
    12. lea eax, szFileName
    13. lea ecx, dwSize
    14. invoke LoadFile, eax, ecx  ; адреса локальных переменных грузятся через lea и передаются с помощью регистров
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Опять очепятка:
    вместо lea eax, szFileName, конечно же
    lea eax, lpBuffer
     
  6. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Спасибо, есть!