использование offset

Тема в разделе "WASM.BEGINNERS", создана пользователем wsd, 2 сен 2007.

  1. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Забил данные в конце проги у места их использования
    для наглядности.Потом потребовалось инвокнуть MessageBox
    с ними в середине проги.
    И как учил дядька Iczelion во 2-ом туториале передаю их по
    offset а не addr.

    код:

    invoke MessageBox, NULL, offset str3, offset str4 , MB_OK
    .........
    .........
    jmp @f
    str3 db "one",0
    str4 db "Warning",0
    @@:

    MASM32 это почему-то не берёт...
    Как поступать? И как же Iczelion?
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Вот в таком варианте это будет работать:
    mov eax,offset MsgBoxText
    lea ebx, MsgCaption
    invoke MessageBox, NULL,eax, ebx, MB_OK
    ........
    ........
    jmp @f
    MsgCaption db "Iczelion's tutorial no.2",0
    MsgBoxText db "Win32 Assembly is Great!",0
    @@:
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Спасибо Aspire!

    А Iczelion знач погарячился:
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Видимо тут дело в версии масма и в макросе invoke...
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Видимо масм обрабатывает addr до компиляции а offset после. Следовательно если метка стоит далее, то на момент обработки строки с addr масм не знает точный адрес метки.
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Вообще-то скорей всего.
    Человек всё-таки он серьёзный!