первая программа на асм-е и неудача, что не так, подскажите плиз

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

  1. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    .386

    .model flat,stdcall
    option casemap:none
    include \masm32\include\kernel32.inc

    includelib \masm32\lib\kernel32.lib
    include \masm32\include\user32.inc
    includelib \masm32\lib\user32.lib

    .data
    MsgBoxCaption db "Iczelion Tutorial No.2",0
    MsgBoxText db "Win32 Assembly is Great!",0
    .code
    start:
    push offset MsgBoxCaption
    push offset MsgBoxText
    call MessageBox
    push 0
    call ExitProcess
    end start

    если делать чер долбаный invoke то всё работает нормально, а хочется без всяких инвоке писать проги, что не так, подскажите
     
  2. Klajnor_666

    Klajnor_666 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    22
    Адрес:
    Russia
    Вроде должно быть так:
    Код (Text):
    1. .386
    2.  
    3. .model flat,stdcall
    4. option casemap:none
    5. include \masm32\include\kernel32.inc
    6.  
    7. includelib \masm32\lib\kernel32.lib
    8. include \masm32\include\user32.inc
    9. includelib \masm32\lib\user32.lib
    10.  
    11. .data
    12. MsgBoxCaption  db "Iczelion Tutorial No.2",0
    13. MsgBoxText     db "Win32 Assembly is Great!",0
    14. .code
    15. start:
    16. push 0
    17. push offset MsgBoxCaption
    18. push offset MsgBoxText
    19. push 0
    20. call  MessageBox
    21. push 0
    22. call ExitProcess
    23. end start
     
  3. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    Большое спсибо. Значит нужно мне глубже изучать winApi..гдеб тока на русском достать..неподскажешь?

    Вобще вопросов куча, но всех их задавать здесь на форуме не лучший вариант не подскажешь где взять мануал по азам асма (только азы и только под win32)
     
  4. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    а вот так не работает:...
    start:
    push 0
    mov eax, 12345678h
    push eax
    push offset MsgBoxText

    наверно потому, что с регистра поступает число, а функция MessageBox требует строку?
     
  5. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    RuAsm
    в первом случае у тебя была проблема с количеством параметров, передаваемых функции
    использование invoke эту проблему решает
    т.е. если ты ошибся с кол-вом параметров, тебя об этом предупредит компилятор
    в принципе, достаточно использовать редактор кода, который показывает подсказки о параметрах функции, когда ты её пишешь.
    либо можешь консультироваться в MSDN
    например: инфа о MessageBox
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    На главной странице васма смотри ссылку "Неофиту", перекопай там всё, много вопросов отпадёт.
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    RuAsm
    Да, причем указатель на строку. Преобразуй число в строку с помощью апишной wsprintf или масмовской dwtoa