3 вопроса о масм

Тема в разделе "WASM.BEGINNERS", создана пользователем XshStasX, 26 апр 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    1)
    в [esi] есть двойное слово
    как теперь от туда записать
    по одну слову в регистры eax,ecx ?
    делал так(в Delphi 7)
    но масм это не распознает, пишет :
    invalid instruction operands
    2)
    есть переменная text
    где вместо text при компиляции нужно подставить ее адрес .
    как в масм организовать такую запись?
    3) Как в масм создать массив ?
    вот так:
    правильно ?
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    и еще вопросик как инициализировать структуру ?
    к примеру:
    mouse MOUSE_EVENT_RECORD ;а дальше?
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    1) регистры eax, ecx это уже двойные слова (dword), с ними нужна просто
    mov eax, [esi]
    mov ecx, [esi+4] ; если нужен qword

    если хочешь прочитать слово (word) или байт (byte) со знаковым расширением то
    movsx eax, word ptr [esi]
    movsx eax, byte ptr [esi]

    2) описание переменных
    .data?
    myVar1 dd ?

    .data
    myVar1 dd 5
    myText db 'Привет', 0

    адресовать можно и метками
    .code
    myLable:

    3) массив
    .data?
    m1 dd 20 dup (?) ; неинициализированный массив

    .data
    m2 dd 30 dup (5) ; инициализированный массив

    вместо dd, можно db, dw

    4)
    POINT STRUCT
    x DWORD ?
    y DWORD ?
    POINT ENDS

    .data?
    myPoint1 POINT <?>
    myPointArray POINT 30 dup (<?>)

    .data
    myPoint2 POINT {35, 10}


    PS и почитай маны их море
     
  4. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    можешь ссылочку ?
    искал на тему "синтаксис масм", там что-то не то ((
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    http://www.wasm.ru/publist.php?list=1
    http://www.wasm.ru/forum/viewtopic.php?id=20506
    http://www.wasm.ru/forum/viewforum.php?id=18 (<- тут найдёшь названия книг и с ними в искалку - практически все асм книги про masm)
     
  6. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    http://blackbeam.narod.ru/asm.htm
     
  7. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    и в самом masm есть справка /masm32/help/masm32.chm
     
  8. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    есть ли возможность в масм получить размер структуры?
    что то типа sizeof().
    Или нужно самому считать размер структуры ?
     
  9. EFiR

    EFiR New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2010
    Сообщения:
    28
    sizeof STRUCT_NAME
     
  10. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    есть такой код:
    Код (Text):
    1.     .386
    2.     .model flat,stdcall
    3.     option casemap:none
    4.     include \masm32\include\windows.inc
    5.     include \masm32\include\user32.inc
    6.     include \masm32\include\kernel32.inc
    7.     include \masm32\include\masm32.inc
    8.     include \masm32\include\comdlg32.inc
    9.     includelib \masm32\lib\user32.lib
    10.     includelib \masm32\lib\kernel32.lib
    11.     includelib \masm32\lib\masm32.lib
    12.     includelib \masm32\include\comdlg32.lib
    13.  
    14. szText MACRO Name,Text:VARARG
    15.     LOCAL   lbl
    16.     jmp     lbl
    17.     Name    db Text,0
    18.     lbl:
    19. ENDM
    20. .const
    21. .data?
    22. HDC hdc;
    23. hPrinter HANDLE<?>
    24. infodoc DOCINFO<?>
    25. pd PRINTDLG  <0>
    26. .data
    27. szMessage   db "Message",0
    28. .code
    29. start:
    30.   call  AllocConsole
    31.   mov ecx,sizeof infodoc
    32.   mov edi, offset infodoc
    33.   rep stosb
    34.  
    35.  
    36.  mov pd.lStructSize,sizeof pd
    37.  mov pd.Flags,PD_RETURNDC
    38.  push offset pd
    39.  call PrintDlg
    40.  
    41.  
    42.  push 0
    43.  call   ExitProcess
    44. end start
    при компиляции пишет: fatal error lnk1104 le "\masm32\include\comdlg32.lib"
    Вчем тут ошибка? вроде все нормально подключил
     
  11. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    XshStasX
    Перед тем как задавать вопрос, дайте немного поработать мозгу.
     
  12. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    не подумал, точно.
     
  13. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    В какой библиотеке масма есть есть такие функ: StartDoc, StartPage ?
    В мсдн сказано что они есть в windows.h(то есть как я понимаю в масме это windows.inc).
    Вот что подключил
    И все равно пишет что не знает StartDoc, StartPage .
     
  14. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    gdi32? В винде поиск отключили?
     
  15. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    XshStasX,

    В MSDN также сказано (строчкой ниже):