Помогите с изучением fasm

Тема в разделе "WASM.WIN32", создана пользователем Rohan, 20 ноя 2004.

  1. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133
    Вот начал я изучать asm. Вот пытаюсь понять как и что нужно делать. Пишу все в fasm. Но никак не могу понять чем отличается написание программ скажем в fasm и masm32. Я понимаю что синтаксис разный, но насколько?

    Никак не могу адаптировать прогу для fasm.
    Код (Text):
    1.  
    2. include def32.inc
    3. include kernel32.inc
    4. include user32.inc
    5.         .386
    6.         .model flat
    7.         .const
    8. hello_title db "Hello program",0
    9. hello_message db "hello!",0
    10.          .code
    11. _start:
    12.         push MB_ICONINFORMATION
    13.         push offset hello_title
    14.         push offset hello_message
    15.         push 0
    16.         call MessageBox
    17.         push 0
    18.         call ExitProcess
    19. end _start          


    Как в fasm быть с include? Короче как это все переделать для fasm? Я подконец запутался что нужно делать. Конечно пробовал писать и в masm32 но там еще больше наперезапутывался. То у меня то не работает то се... Что делать уже и незнаю
     
  2. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Я не понимаю: человек пишет на Ассемблере, самом сложном языке для изучения и понимания (по мнению многих), и при этом путается в инклудах...

    Посмотри статьи по фасму на сайте
     
  3. ipse

    ipse New Member

    Публикаций:
    0
    Регистрация:
    15 сен 2004
    Сообщения:
    8
    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'

    и.т.д...
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Rohan



    Смотри fasm\EXAMPLES\HELLO\HELLO.ASM
     
  5. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    Код (Text):
    1. include '%fasminc%/win32ax.inc'  
    2. .code
    3. start:
    4. invoke  MessageBox,HWND_DESKTOP,\
    5. "hello!","Hello program"",MB_OK
    6. invoke  ExitProcess,0
    7. .end start


    Например так :)
     
  6. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133


    К примеру многие жалеют что начали изучать в начале разные basic'и а уж потом asm. Это гораздо осложнило понимание структуры языка. И Asm не является самым сложным языком для понимания и изучения, ведь существуют языки с гораздо более сложной структурой, prolog'и с lisp'ами.





    Смотрел но так толком и не понял.



    include '%fasminc%/win32ax.inc' это что равнозачно объявлению

    include def32.inc

    include kernel32.inc

    include user32.inc



    А вопросы у меня такие глупые потому что сложно учить по книге где описывается все кроме fasm сам fasm.
     
  7. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133




    Что-то fasm ругается на include '%fasminc%/win32ax.inc' мол файл не найден.
     
  8. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Rohan

    Так нужно в переменную окружения с именем fasminc путь правильный прописать.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Rohan



    Это хорошо, но сначала лучше почитать документацию по самому FASM'у: http://flatassembler.net/docs.php



    Если нужно на русском, то на wasm.ru есть несколько статей, неплохо описывающих программирование на этом ассемблере.
     
  10. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133


    А где располагается эта самая переменная окружения. Как она называется?



    А эти статьи в какой рубрике?
     
  11. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035


    Для 2000 винды:

    Мой компьютер\свойства\вкладка дополнительно\кнопка переменные среды\кнопка создать...

    имя - fasminc

    значение - C:\fasm\include (зависит от того, где он живёт)
     
  12. ipse

    ipse New Member

    Публикаций:
    0
    Регистрация:
    15 сен 2004
    Сообщения:
    8
    Да блин, RTFM!! Я че зря жирными буквами выделял.

    Пропиши в файле fasmw.ini путь к директории include



    [Environment]

    Fasminc = c:\fasmw\include
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Этот способ для fasmw

    Для консольного fasm нужно задавать переменные окружения FASMINC или INCLUDE (путь по умолчанию)
     
  14. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > Для консольного fasm нужно задавать переменные окружения FASMINC



    Ну и для fasmw этот способ тоже сгодится :derisive:



    ЗЫ: в Win98 "Переменные окружения" живут в AutoExec.bat :)
     
  15. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    IMHO удобнее прописать пути в INCLUDE, и не надо никаких извратов вроде '%fasminc%/win32ax.inc'. FASM просматривает все папки, что указаны в INCLUDE, на предмет нахождения в них включаемого файла, если этого файла нет в текущем каталоге.
     
  16. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133
    О все спасибо большое! Теперь все компилится!

    А где написано какой include для чего нужен? И в каких конкретно статьях описывается на русском программирование в fasm.

    И есть ли где сравнение синтаксисов скажем masm'а и fasm', а не совсем понятно какие директивы нужно заменять а какие оставлять. Ведь тот листин который написал вам я в самом начале и который вы мне предложили различаются очень сильно.
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Интересный вопрос.



    Вообще, советую хорошенько покопаться в дистрибутиве 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.
     
  18. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133


    Что-то вупор не вижу. fasm_preproc.chm - нашел
     
  19. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вот, но это для ДОС в основном, к тому же не завершено самим автором.
     
  20. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia