Как создать массив структур в masm?

Тема в разделе "WASM.BEGINNERS", создана пользователем _sheva740, 28 янв 2011.

  1. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Переписываю из С на masm прожку
    Встретил там вроде простую комбинацию
    На с ---------->
    Код (Text):
    1. typedef struct
    2. {
    3.     HINSTANCE hInstance;
    4.     DWORD   Name;
    5.     DWORD   Load;
    6.     DWORD   Unload;
    7.     DWORD   HMessage;
    8.  
    9. } PLUG;
    10.  
    11. PLUG  Plug_List[256]
    На масме ---------->

    Код (Text):
    1.     PLUG STRUCT
    2.         hInstance   dd  0
    3.         pName       dd  0      
    4.         Load        dd  0
    5.         Unload      dd  0
    6.         pHandleMessage  dd  0
    7.     PLUG ENDS
    8.  
    9. а вот это не пойму как
    10.  
    11.         ;PLUG  Plug_List[256]
    12.     PluginList  PLUG 256 dup(0) ;- так неправильно ((
    Как зарезервировать и получить указатель на массив из 256 структур PLUG?
    Подскажите пожалуйста )
     
  2. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    _sheva740
    наверное так: PluginList PLUG 256 dup (<0>)
    по крайней мере, масм это проглотил и забил нулями 5*256*4=5120 байт
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mikl___
    Класс, Спасибо!
     
  4. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    _sheva740
    Самому интересно. Может так попробовать(возможно глупость):
    Array db 256*sizeof(PLUG) dup(?).
     
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    AndjellaArtavazdovna (странный ник "Самому интересно")
    нет здесь используются < и >
    <?> или <> резервировать место
    <0> заполнить нулем
    <1,2,3> сделать hInstance=1 pName=2 Load=3 для всех структур PLUG
     
  6. EOT

    EOT New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    181
    > Array db 256*sizeof(PLUG) dup(?).
    <?>, структуры заполняются в "<>".
     
  7. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    в принципе любым способом выделить память (dd, на стеке sub, vittualalloc) и использовать assume reg:ptr PLUG
     
  8. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Вот я об этом тоже думал. В памяти то все равно массив байт,а заюзать assume ничто не мешает.
     
  9. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    AndjellaArtavazdovna
    можно и без assume, например mov [edi+PLUG.pName],12345678h