.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 то всё работает нормально, а хочется без всяких инвоке писать проги, что не так, подскажите
Вроде должно быть так: Код (Text): .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 0 push offset MsgBoxCaption push offset MsgBoxText push 0 call MessageBox push 0 call ExitProcess end start
Большое спсибо. Значит нужно мне глубже изучать winApi..гдеб тока на русском достать..неподскажешь? Вобще вопросов куча, но всех их задавать здесь на форуме не лучший вариант не подскажешь где взять мануал по азам асма (только азы и только под win32)
а вот так не работает:... start: push 0 mov eax, 12345678h push eax push offset MsgBoxText наверно потому, что с регистра поступает число, а функция MessageBox требует строку?
RuAsm в первом случае у тебя была проблема с количеством параметров, передаваемых функции использование invoke эту проблему решает т.е. если ты ошибся с кол-вом параметров, тебя об этом предупредит компилятор в принципе, достаточно использовать редактор кода, который показывает подсказки о параметрах функции, когда ты её пишешь. либо можешь консультироваться в MSDN например: инфа о MessageBox
RuAsm Да, причем указатель на строку. Преобразуй число в строку с помощью апишной wsprintf или масмовской dwtoa