Вот начал я изучать asm. Вот пытаюсь понять как и что нужно делать. Пишу все в fasm. Но никак не могу понять чем отличается написание программ скажем в fasm и masm32. Я понимаю что синтаксис разный, но насколько? Никак не могу адаптировать прогу для fasm. Код (Text): include def32.inc include kernel32.inc include user32.inc .386 .model flat .const hello_title db "Hello program",0 hello_message db "hello!",0 .code _start: push MB_ICONINFORMATION push offset hello_title push offset hello_message push 0 call MessageBox push 0 call ExitProcess end _start Как в fasm быть с include? Короче как это все переделать для fasm? Я подконец запутался что нужно делать. Конечно пробовал писать и в masm32 но там еще больше наперезапутывался. То у меня то не работает то се... Что делать уже и незнаю
Я не понимаю: человек пишет на Ассемблере, самом сложном языке для изучения и понимания (по мнению многих), и при этом путается в инклудах... Посмотри статьи по фасму на сайте
RTFM ...For example, when you have unpacked the flat assembler files into the c:\fasmw directory, you should put the following two lines into your c:\fasmw\fasmw.ini file: [Environment] Fasminc = c:\fasmw\include А писать так: include '%fasminc%/def32.inc' и.т.д...
Код (Text): include '%fasminc%/win32ax.inc' .code start: invoke MessageBox,HWND_DESKTOP,\ "hello!","Hello program"",MB_OK invoke ExitProcess,0 .end start Например так
К примеру многие жалеют что начали изучать в начале разные basic'и а уж потом asm. Это гораздо осложнило понимание структуры языка. И Asm не является самым сложным языком для понимания и изучения, ведь существуют языки с гораздо более сложной структурой, prolog'и с lisp'ами. Смотрел но так толком и не понял. include '%fasminc%/win32ax.inc' это что равнозачно объявлению include def32.inc include kernel32.inc include user32.inc А вопросы у меня такие глупые потому что сложно учить по книге где описывается все кроме fasm сам fasm.
Rohan Это хорошо, но сначала лучше почитать документацию по самому FASM'у: http://flatassembler.net/docs.php Если нужно на русском, то на wasm.ru есть несколько статей, неплохо описывающих программирование на этом ассемблере.
А где располагается эта самая переменная окружения. Как она называется? А эти статьи в какой рубрике?
Для 2000 винды: Мой компьютер\свойства\вкладка дополнительно\кнопка переменные среды\кнопка создать... имя - fasminc значение - C:\fasm\include (зависит от того, где он живёт)
Да блин, RTFM!! Я че зря жирными буквами выделял. Пропиши в файле fasmw.ini путь к директории include [Environment] Fasminc = c:\fasmw\include
Этот способ для fasmw Для консольного fasm нужно задавать переменные окружения FASMINC или INCLUDE (путь по умолчанию)
> Для консольного fasm нужно задавать переменные окружения FASMINC Ну и для fasmw этот способ тоже сгодится ЗЫ: в Win98 "Переменные окружения" живут в AutoExec.bat
IMHO удобнее прописать пути в INCLUDE, и не надо никаких извратов вроде '%fasminc%/win32ax.inc'. FASM просматривает все папки, что указаны в INCLUDE, на предмет нахождения в них включаемого файла, если этого файла нет в текущем каталоге.
О все спасибо большое! Теперь все компилится! А где написано какой include для чего нужен? И в каких конкретно статьях описывается на русском программирование в fasm. И есть ли где сравнение синтаксисов скажем masm'а и fasm', а не совсем понятно какие директивы нужно заменять а какие оставлять. Ведь тот листин который написал вам я в самом начале и который вы мне предложили различаются очень сильно.
Интересный вопрос. Вообще, советую хорошенько покопаться в дистрибутиве FASM'a, просмотреть и попытаться разобраться в нём. В каталоге %FASMINC%\ лежат файлики вида Win32*.inc. Это подключаемые файлы, содержащие директивы подключения всех основных заголовочных файлов для создания приложений под Win32. В Win32a.inc определяются директивы подключения различных макросов из каталога %FASMINC%\macro (макросы ресурсов, импорта, процедур, структур и прочего) и файлов с определениями структур и констант из каталога %FASMINC%\equates. Win32w.inc полностью аналогичен файлу Win32a.inc, но подключается он если вы создаёте Unicode-версию приложения. Win32ax.inc — это уже заготовка приложения PE32 EXE под Win32, в которой определён PE заголовок и таблица импорта для ANSI функций; в нём также содержатся дополнительные макросы. Win32wx.inc аналогичен предыдущему, только таблица импорта сделана для Unicode-версий функций Win32 API. Win32axp.inc содержит расширение макроса invoke для поддержки контроля количества передаваемых аргументов в функции Win32 API. Обычно достаточно подключить Win32a.inc. Если какая-то константа или структура неизвестна, поищите её в каталоге FASM'a, может быть она всё же определена в каком-то из файлов. Если нет - ищите определение в дистрибутиве MASM32 а лучше в PlatformSDK. Ну неужели так трудно воспользоваться поиском? Загляни в раздел Компиляторы для начала. Поищи также fasm_preproc.chm, это перевод руководства по макросам в FASM'e. Есть ещё перевод "Туториалов из тайги" (если не спутал название). Проще переписывать полностью программы, беря за основу примеры из FASM'a.