Модератор
1760 / 669 / 141
Регистрация: 10.06.2009
Сообщений: 2,601
|
||||||
1 | ||||||
Masm64 and FASM64, win_API, Examples22.03.2015, 23:19. Показов 17006. Ответов 41
Метки нет (Все метки)
Предисловие.
По скорости написания программы: макро ассемблеры, требуют меньше времени чем любой другой язык программирования. Наша собственная "студия"
Masm64 - Набор макросов
link и ml64 из x86_amd64. v.9.0 или link из amd64 x64dbg Для удобства работы. и/или IDA Мне лично нравится консольная версия. и/или Hiew - Hacker's view и/или FARManager или аналоги Данный список будет дополняться И так вы собрали свою начальную лабораторию для работы. Example 0
main64.asm
make64.bat
Код
@echo off if not exist rsrc.rc goto empty rc /v rsrc.rc cvtres /machine:ix86 rsrc.res :empty if exist "%1.obj" del "%1.obj" if exist "%1.exe" del "%1.exe" D:\masm\masm64\bin\ml64 /I"D:\masm\masm64\include" /c /Cp "%1.asm" if errorlevel 1 goto errasm if not exist rsrc.obj goto nores D:\masm\masm64\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF "%1.obj" rsrc.res if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /ENTRY:WinMain /SUBSYSTEM:WINDOWS /ALIGN:16 /stub:stub.exe "%1.obj" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :errlink echo _ echo Link error goto TheEnd :errasm echo _ echo Assembly Error goto TheEnd :TheEnd call debug.exe "%1.exe" makecon64.bat
Код
@echo off if not exist rsrc.rc goto empty rc /v rsrc.rc cvtres /machine:ix86 rsrc.res :empty if exist "%1.obj" del "%1.obj" if exist "%1.exe" del "%1.exe" D:\masm\masm64\bin\ml64 /I"D:\masm\masm64\include" /c /Cp "%1.asm" if errorlevel 1 goto errasm if not exist rsrc.obj goto nores D:\masm\masm64\bin\Link /SUBSYSTEM:CONSOLE /OPT:NOREF "%1.obj" rsrc.res if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /MERGE:.data=.text /MERGE:.rdata=.text /ENTRY:WinMain /SUBSYSTEM:CONSOLE /ALIGN:16 /stub:stub.exe "%1.obj" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :errlink echo _ echo Link error goto TheEnd :errasm echo _ echo Assembly Error goto TheEnd :TheEnd call debug.exe "%1.exe" MERGE:.rdata=.text - Мы помещаем не инициализированные переменные в сегмент .text MERGE:.data=.text - Мы помещаем инициализированные переменные в сегмент .text ALIGN:16 - Уменьшаем размер готового бинарника stub:stub.exe - Заголовок программы call AllocConsole или invoke AllocConsole Очень важна если компилироваться под WINDOWS. А если компилироваться под CONSOLE можно данный вызов опустить. Ну вот мы написали своё первое консольное приложение для win64, научились его собирать в готовый бинарник. Дальше я-бы предложил его доработать в TASM, но это совсем другая история. p.s. Думаю к концу данной темы мы получим консольную обёртку для написания собственного приложения. Прошу ваши предложения для написания 1-го примера приложения. Самый красивый и лаконичный язык программирования, Машинный Код. (с) Это мой первый пост на данном форуме, сильно не пинайте. Добавлено через 4 часа 18 минут Example 1
пример цикла, я рад увидеть ваши предложения по поводу модификации данного цикла.
1
|
22.03.2015, 23:19 | |
Ответы с готовыми решениями:
41
Как в FASM64 вывести число на экран? Bootstrap examples н Borland/CBuilder6/Examples The type `Examples.Collections.Generic.Node<T>' does not contain a constructor that takes `0' arguments |
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
16.04.2015, 06:40 | 21 | |||||
Win64. Мышь В отличии от Урока 7 Iczelion'a где обрабатывалось событие по нажатию левой клавиши мыши и выводилась единственная надпись "Our First Window", мы будем обрабатывать нажатие на левую и правую клавиши мыши и будем выводить надписи "Нажата левая клавиша" и "Нажата правая клавиша" и этих надписей будет столько, какое значение мы присвоим константе MAXRECTS. Если количество нажатий превысит число MAXRECTS ― будет раздаваться звуковой сигнал. Координаты кликов запоминаются, чтобы убедиться в этом ― измените размер окна и снова восстановить его...Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
16.04.2015, 09:49 | 22 | |||||
Win64. Простой битмэп
Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||||||||||||
16.04.2015, 11:46 | 23 | |||||||||||||||
Win64. Иконка и курсор В качестве курсора и иконки используем иконку из файла Cursor.cur. Убеждаемся, что разницы между курсором и иконкой нетСоздание курсора и иконки из ресурсов в FASM Кликните здесь для просмотра всего текста
Создание курсора и иконки из файла
Кликните здесь для просмотра всего текста
Функцией DrawIcon рисуем пиктограмму в рабочей области окна заданным контекстом устройства. Кликните здесь для просмотра всего текста
0
|
Модератор
1760 / 669 / 141
Регистрация: 10.06.2009
Сообщений: 2,601
|
||||||
22.04.2015, 12:46 [ТС] | 24 | |||||
Я не рекомендую инициализировать глобальные переменные в других разделах кроме .const
0
|
Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
|
||||||
23.04.2015, 00:59 | 25 | |||||
А ничего что у тебя константы в секции неинициализированных данных?
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
23.04.2015, 05:25 | 26 | |||||
Win64. Работа с таблицей акселераторов
Кликните здесь для просмотра всего текста
0
|
Модератор
1760 / 669 / 141
Регистрация: 10.06.2009
Сообщений: 2,601
|
|||||||||||
23.04.2015, 10:06 [ТС] | 28 | ||||||||||
Так проще себя проверить на ошибки, ещё на стадии компиляции.
При попытке явного изменения значений в секции .const ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Это скорее вопрос к подсветке синтаксиса. Добавлено через 2 часа 18 минут
0
|
Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
|
|
23.04.2015, 10:40 | 29 |
Как то всё думал что ассемблер не из тех дисциплин где принято гадать.
Больше на логику опирался. Вот что мне поведал другой источник. Добавлено через 10 минут Да, спсибо. Освежил память. Раньше я про неё знал но уже успел благополучно забыть. Потому что Что до конкретной рекомендации озвученной тут NoNaMe у меня вообще одни недоумения. Очень часто в программах текст требует изменений, за примером далеко ходить не буду, та же функция перевода консольной русификации в виндосовскую. Нахрена мне плодить эти переменные если я могу всё это сделать "саму на себя"
0
|
Модератор
1760 / 669 / 141
Регистрация: 10.06.2009
Сообщений: 2,601
|
|
23.04.2015, 10:56 [ТС] | 30 |
Всё дальше написанное "IMHO"
%FilePath%\%FileName%.asm(Номер строки) : warning A4000:cannot modify READONLY segment .const применяется во время компиляции, и если в коде явно меняешь константу, то компилятор ругается при сборке. Ошибок не возникает при попытке изменить эти данные(Но возникает WARNING) Эта секция, полезная на этапе разработки приложения.
0
|
Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
|
||||||
23.04.2015, 11:11 | 31 | |||||
Попробовал сейчас все этот прикол в FASM_64
FASM вообще по барабану как назвать секцию. У меня работало даже с секцией .eprst Решающее значение имеет приписка за секцией. Если она data readable writeable с данными можно вытворять всё что угодно, даже если секция подписана как .const Но если оставить только data readable то чёрта лысого оно даст в ней менять.
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
23.04.2015, 12:36 | 32 | |||||
Win64. Создание динамического меню
Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
03.06.2015, 08:40 | 33 | |||||
Win64 Tutorial #18: Несколько разных прогресс-баров
Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|||||||||||
03.06.2015, 08:49 | 34 | ||||||||||
Win64 Tutorial #13: Memory Mapped File asm-файлКликните здесь для просмотра всего текста
rc-файл Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|||||||||||
03.06.2015, 08:57 | 35 | ||||||||||
Win64 Tutorial #11: More about Dialog Box asm-файл Кликните здесь для просмотра всего текста
rc-файл Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|||||||||||
05.06.2015, 10:46 | 36 | ||||||||||
Win64 Tutorial #32: Создание MDI-приложения asm-файлКликните здесь для просмотра всего текста
rc-файл Кликните здесь для просмотра всего текста
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|
08.07.2015, 08:11 | 37 |
0
|
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 3
|
|
10.10.2015, 19:24 | 38 |
[delete]
0
|
Модератор
1760 / 669 / 141
Регистрация: 10.06.2009
Сообщений: 2,601
|
|
11.03.2016, 04:11 [ТС] | 40 |
Очень полезная утилита для конвертации из Си заголовков в Файлы включений!
0
|
11.03.2016, 04:11 | |
11.03.2016, 04:11 | |
Помогаю со студенческими работами здесь
40
Ошибка в Struts: Error: 500 Location: /examples/green/Struts1st.jsp Masm64 masm64 и winAPI Соглашения о вызовах и masm64 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |