не могу понять как в fasm'е работать со структурами

Тема в разделе "WASM.ASSEMBLER", создана пользователем Andrey Ch, 21 сен 2009.

  1. Andrey Ch

    Andrey Ch New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2003
    Сообщения:
    5
    Адрес:
    Minsk
    Код (Text):
    1. ; Структура md2
    2. struct md2_header_t
    3.    .magic       dd ?
    4.    .version     dd ?
    5.    .skinWidth       dd ?
    6.    .skinHeight      dd ?
    7.    .frameSize       dd ?
    8.    .numSkins        dd ?
    9.    .numVertices     dd ?
    10.    .numTexCoords    dd ?
    11.    .numTriangles    dd ?
    12.    .numGlCommands   dd ?
    13.    .numFrames       dd ?
    14.    .offsetSkins     dd ?
    15.    .offsetTexCoords dd ?
    16.    .offsetTriangles dd ?
    17.    .offsetFrames    dd ?
    18.    .offsetGlCommands    dd ?
    19.    .offsetEnd       dd ?
    20. ends
    21.  
    22.  
    23. struct md2_model_t
    24.     .header     md2_header_t
    25.     .skins      dd ?    ;skin_t
    26.     .texCoords      dd ?    ;md2_textureCoordinate_t
    27.     .triangles      dd ?    ;md2_triangle_t
    28.     .frames         dd ?    ;md2_frame_t
    29.     .glCommandBuffer dd ?   ;указатель gl список
    30. ends
    31.  
    32. proc md2Load LpFileName
    33.         local   hFileMD2:   DWORD
    34.     local   bytes_count:    DWORD
    35.     local   md2_model:  md2_model_t
    36.  
    37. mov eax, [md2_model+md2_model_t.header.version]
    38.  
    39.  
    40. endp
    в eax хочу присвоить значение по адресу md2_model.md2_model_t.header.version
    перебрал разные комбинации ничего не добился.
     
  2. Marazm

    Marazm Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    95
    proc md2Load LpFileName
    locals
    hFileMD2 dd ?
    bytes_count dd ?
    md2_model md2_model_t
    endl

    mov eax, [md2_model.header.version]

    endp
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    Код (Text):
    1. struct md2_model_t
    2.     header      md2_header_t
    3.     skins       dd ?    ;skin_t
    4.     texCoords      dd ? ;md2_textureCoordinate_t
    5.     triangles      dd ? ;md2_triangle_t
    6.     frames         dd ? ;md2_frame_t
    7.     glCommandBuffer dd ?    ;указатель gl список
    8. ends
    9. proc md2Load LpFileName
    10.         local   hFileMD2:   DWORD
    11.     local   bytes_count:    DWORD
    12.     local   md2_model:  md2_model_t
    13. lea esi,[md2_model]
    14. mov eax, [esi+md2_model_t.header.version]
    15. endp
    Как-то так...
     
  4. Andrey Ch

    Andrey Ch New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2003
    Сообщения:
    5
    Адрес:
    Minsk
    Одним и другими способом не получилось, вот мой исходник, помогите понять в чем грабли.
     
  5. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    точки у тебя на кой перед именами полей структуры ???
    незнаю как фасм - масм бы за такое дело порвал
     
  6. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Если структура сделана через struct, точки перед полями структуры не нужны (они создаются самим макросом struct). Убираем все точки из всех структур, и вуаля)
     
  7. Andrey Ch

    Andrey Ch New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2003
    Сообщения:
    5
    Адрес:
    Minsk
    Спасибо, бывает, не обратил внимание.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    Andrey Ch
    Опередили, дело в точках, мой вариант нормально компелируется ;)