| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Объясните пожалуйста! ASM под Windows |
| Автор: drZmeu 3.5.2007, 15:35 | ||
| Объясните пожалуйста! Программирование на ASM под Windows Привет знатоки ASM наверное самого интересного языка. Я решил потихоньку начать изучать ASM под Windows и тут же наткнулся на проблему и понял что ничего пока не понимаю в ASM под Windows и под DOS наверное тоже =))) Я в проекте попытался задействовать 3 WinAPI функции GetModuleFileName, MessageBox, ExitProcess Так вот я не знаю как правильно работать с функцией GetModuleFileName под ASM под C++ понятно! Пожалуйста разъясните как и что куда вносить и т.д Или отправьте куданить где это объясняется. С уважением, drZmeu.
Компилятор FASM 1.67.21 но это не очень важно. |
| Автор: drZmeu 3.5.2007, 18:18 | ||
| Прощу прошения за свою нелепость и глупость уже разобрался сам Тяжеловато переходить с Visual C++ на FASM У мну есть ещё несколько вопросов например как склеить 2 строки дайте пожалуйста линк на какой нить ликбез по программирования на ASM под Windows Кому интересно сделал то что хотел таким макаром
Мне кажется что-то тут неправильно =\ |
| Автор: anwe 3.5.2007, 18:22 |
| Склеить две строки так: lstrcat, addr_строки_к_которой_клеишь,addr добавляемой_строки |
| Автор: drZmeu 3.5.2007, 19:06 |
| Ооо спасибо большое =) Добавлено через 26 секунд Я думал это только в C++ можно так =))) |
| Автор: anwe 3.5.2007, 19:36 |
| invoke же еще. |
| Автор: drZmeu 3.5.2007, 20:34 |
| Я думал invoke служит для объявления winAPI! |
| Автор: anwe 3.5.2007, 20:48 |
| Это макроопределение, заменяющее call с передачей параметров вызываемой функции. |
| Автор: drZmeu 3.5.2007, 21:06 |
| Хорошо вынужден согласится поскольку в ASM не рублю да и счетаю что ты прав =) А можешь привести пример заменив invoke на call в моём верхнем примере? |
| Автор: anwe 3.5.2007, 21:27 | ||
|
| Автор: drZmeu 3.5.2007, 21:32 | ||
| Оооо спасибо большое =) А где об этом можно прочитать побольше просто пример я написал по подобию тех программ которые были в папке EXAMPLES и шли вместе в FASM Или всё равно как писать что invoke что call ,,,???,,, Добавлено через 4 минуты и 34 секунды Эммммммм. Я переписал так:
А он зараза меня на *** послал ='( |
| Автор: drZmeu 3.5.2007, 22:51 | ||||||||
| На самом деле чтоб не дергать вас уважаемые эксперты! Я хотел бы получить от вас направление на книжку или материал по ASM я опишу что я хочу узнать а решать вам! Просто я немогу слегка въехать в ASM после языка высокого уровня он настолько забивает мозги что ужс. Я привожу пример кода в котором я буду говорить что мне непонятно а вы дайте мне направление на литературу!
Первое что меня интересует тут это
Почему в wc.hInstance мы заносим содержимое из eax
Тоже самое я так понимаю eax выступает переменной в которой будет результат работы?
Вот тут если мы открываем стек то почему только для 3 параметров хотя WindowProc параметра 4 если мы конечно для него открываем если не для него то для чего тогда? и т.д Вот мне собственно нужна книжечка где это будет описано! Я правда извиняюсь за такие вопросы но мне нужна помощ ! =))) С уважением, drZmeu |
| Автор: drZmeu 4.5.2007, 18:19 |
| Оооо. Спасибо огромное что разъяснил очень многое стало понятно и за литературу огромное спасибо ;) тему можно считать закрытой =) Ещё раз спасибо anwe тебе +1 =) |
| Автор: drZmeu 4.5.2007, 23:54 | ||||
| И заключительный вопрос! =) Почему не работает этот код
Я поковырялся в отладчике и так меня и не осенило =( Но кое что я понял! Да вы и сами поймете загрузив программу в OllyDbg или в какой нить другой отладчик! Ну и конечно рабочий вариант
А вопрос мой почему же не работает? С уважением, drZmeu |
| Автор: anwe 5.5.2007, 00:53 |
| Не наю, не наю. В MASM'е работает и так и так. А, кажется, догадываюсь. Надо прописать соглашение о передаче параметров функции: как в сях stdcall. Но где - не знаю. |
| Автор: drZmeu 5.5.2007, 03:06 | ||||
| Будем рыть =) Может кто-то знает =) А на самом деле как лутше? Так
или так
или разницы нету? Я в отладчике ковырялся вроде всё также только одно работает а второе нет =))) |
| Автор: anwe 5.5.2007, 11:21 |
| По сути дела - по вкусу. |
| Автор: drZmeu 5.5.2007, 15:55 |
| Спасибо! Но всё же может кто сталкивался с этой проблемой? |
| Автор: dumb 5.5.2007, 17:00 | ||
это не проблема, а незнание синтаксиса...
|
| Автор: drZmeu 5.5.2007, 21:59 | ||
| dumb я очень признателен за 4 байта кода которые Вы добавили но я только начал изучать ASM! =) Было бы неплохо если бы Вы подсказали почему не работает этот код:
А по поводу ADDR большое спасибо =) Всегда рад получить хороший пример! С уважением, drZmeu =) |
| Автор: anwe 5.5.2007, 22:01 | ||
drZmeu, посмотри внимательно, тебе же написали ADDR, что означает адрес переменной. Для твоего примера так:
|
| Автор: drZmeu 5.5.2007, 22:42 |
| Эмммм. Я бивень не понял =) Извиняюсь только вот что пишет компилятор в этом случае Error: undefined symbol. Instruction: push addr _buf =\ Может в начале какойто inc нужно подключить? |
| Автор: anwe 5.5.2007, 22:46 |
| inc у тебя уже подключен. Попробуй вместо addr написать offset. Если нет - то нет. Я не знаю синтаксиса Fasm'а. |
| Автор: drZmeu 5.5.2007, 22:53 |
| Неть не хочет гад! =( |
| Автор: drZmeu 5.5.2007, 23:41 | ||
| Странно но полазив по форума и поюзав Serch я наткнулся на пару примеров =\ Вот код работающий
Бред почему именно так =\ парни но без вашей помощи яб не разобрался спасибо вам anwe и dumb =) Тема закрыта окончательно =) |
| Автор: anwe 5.5.2007, 23:48 |
| drZmeu, а отличия видишь? |
| Автор: drZmeu 6.5.2007, 03:34 |
| в отладчике нет =) Ну а в коде конечно да =) Ладно всем огромное спасибо за ответы =) |
| Автор: anwe 6.5.2007, 11:29 | ||
|