Как обратиться к структуре через регистр

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

  1. n0iz

    n0iz New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2007
    Сообщения:
    4
    Есть код:

    Код (Text):
    1. 1.  .386
    2. 2.  .model flat, stdcall
    3. 3.
    4. 4.  test_struc struc
    5. 5.      dword_1 dd ?
    6. 6.      dword_2 dd ?
    7. 7.  test_struc ends
    8. 8.
    9. 9.  .data
    10. 10.     structura_1 test_struc <11223344h, 55667788h>
    11. 11.
    12. 12. .code
    13. 13. start:
    14. 14. mov structura_1.dword_1, 0123h
    15. 15. lea ebx, structura_1
    16. 16. mov eax, dword ptr [ebx].dword_1   
    17. 17. end start
    TASM'ом транслируется нормально, а вот MASM в 16 строке выдает ошибку: undefined symbol : dword_1
    Так вот как сделать чтобы этот код работал в MASM?
     
  2. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Код (Text):
    1. assume <регистр>,PTR structura_1
    если я правильно помню
     
  3. n0iz

    n0iz New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2007
    Сообщения:
    4
    Большое спасибо. Немножко поправил и все заработало. Вот как надо было:

    Код (Text):
    1. assume <регистр>:PTR test_struc
    Просто у Юрова эта директива использовалась только для связи сегментных регистров с сегментами. Я об ней даже и не подумал.
     
  4. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    n0iz
    кстате я корректировал пост! только вот изменения не сохранились :dntknw:
     
  5. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    Я вообще не помню, но разве это не подходит?

    mov eax, test_struc ptr [ebx].dword_1
     
  6. n0iz

    n0iz New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2007
    Сообщения:
    4
    Ultrin Faern
    В TASM'е работает, в MASM'e нет
     
  7. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    n0iz
    Код (Text):
    1. mov eax, (test_struc ptr [ebx]).dword_1
     
  8. n0iz

    n0iz New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2007
    Сообщения:
    4
    q_q
    Спасибо, так тоже работает.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    mov eax,[ebx + test_struc.dword_1]
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    И последнее:
    mov eax,[ebx].test_struc.dword_1
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    MSoft
    Точно.