адрес стуктуры как параметр (MASM)

Тема в разделе "WASM.BEGINNERS", создана пользователем rain, 18 авг 2006.

  1. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    сразу к телу. вот есть, напрмер, структура:

    Код (Text):
    1. data struct
    2.  len dd ?
    3.  flags dd ?
    4.  dataoffset db 256 dup (?)
    5. data ends
    передаётся адрес этой структуры как параметр:

    Код (Text):
    1. UsingData proc pdata:DWORD
    2.  ;как здесь можно обратится к полю структуры кроме как
    3.  ;вручню  высчитывать оффсет каждого поля (если б что-то вроде ;[pdata].len было или как-то так)
    4. ...
    подскажите плиз хоть какие-то идеи, я определял константы примерно так:
    Код (Text):
    1. dataLEN equ 0
    2. dataFLAGS equ dataLEN+4
    3. dataDATAOFFSET equ dataFLAGS+4
    а потом добавлял в ручную, надоело уже :\
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Код (Text):
    1. mov eax,pdata
    2. mov ecx,[eax+data.len]
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Код (Text):
    1. masm:
    2.  
    3. mov  eax,pdata
    4. mov  ecx[eax+data.len]
    5. mov  ecx,[eax].data.len
    6. mov  ecx,(data ptr [eax]).len
    7. assume eax:data
    8. mov  ecx,eax.len
    9. assume eax:none
    10.  
    11. fasm:
    12. mov  eax,[pdata]
    13. mov  ecx,[eax+data.len]
    14. virtual at eax
    15.   .dat data
    16. end virtual
    17. mov  ecx,[.dat.len]
    при подключении masm.inc и в фасме можно через assume