Как правильно передать строку в функцию.

Тема в разделе "WASM.BEGINNERS", создана пользователем _sheva740, 7 авг 2009.

  1. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Передаю по адресу в стеке - адрес смещается проголом.
    Как правильно передавать строку в функцию?
    Как правильно Вы это делаете?

    Код (Text):
    1. .data
    2. tperr   db '%s, - ,%d',13,10,0  ;шаблон для вывода ошибок 
    3. msg06   db 'Error in listen()',13,10,0
    4.  
    5.  
    6.  
    7. .code
    8. ...
    9. invoke  OutputScreenError,ADDR msg07    ;Error in listen()
    10. ...
    11.  
    12.  
    13. OutputScreenError proc errmsg:DWORD
    14. local errorbuff[MAX_PATH]   : BYTE
    15.     lea esi, errmsg ; <------------------ТУТ Уже МУСОР
    16.     invoke  wsprintf,ADDR errorbuff,ADDR tperr,errmsg,eax
    17.     invoke  StdOut, addr errorbuff
    18.     ret
    19. OutputScreenError Endp
    Спасибо.
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    да нет, правильно, просто не ту строку ухватил, ну пусть там
    Код (ASM):
    1. .data
    2. tperr    db '%s, - ,%d',13,10,0    ;шаблон для вывода ошибок  
    3. msg07    db 'Error in listen()',13,10,0
     
  3. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Что то мне подсказывает, что нужно не
    Код (Text):
    1. lea esi, errmsg
    а
    Код (Text):
    1. mov esi, errmsg
    так как у вас в errmsg уже находится адрес строки, и в esi окажется адрес локальной переменной (та, что в стеке).
     
  4. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    вроде простой случай - и ...
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Forever
    да спасибо.
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    max7C4
    макросы - хорошо, если знаешь как они работают (например если сам их писал)
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    это слишком большая оговорка