Blog. Just Blog

Установка и настройка Flat Assembler (FASM)

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Установка и настройка Flat Assembler (FASM)
Установка и настройка Flat Assembler (FASM)

Программирование на Ассемблере я начинал с Turbo Assembler (TASM) под MS-DOS, сейчас пишу на Flat Assembler (FASM) под Windows. Это очень удобный и мощный пакет для разработки, бесплатный для любого использования. Написан полностью на самом себе, исходники прилагаются. Мне он нравится тем, что позволяет хранить код и описания ресурсов в одном ASM-файле, поддерживает макросы, генерит чистый машинный код без всякой незаявленной самодеятельности, не требует лишней рутинной работы типа прописывания каждой задействованной функции в секцию импорта и еще множество приятных мелочей, облегчающих жизнь программисту. Единственным недостатком является отсутствие достаточного количества готовых исходников, например по сравнению с тем же MASM'ом, а портирование исходников с других платформ на FASM иногда вызывает затруднения. Но на мой взгляд портирование, в отличие от копирования, помогает гораздо лучше изучить язык. Несколько исходников-примеров есть в самом дистрибутиве FASM, еще несколько примеров можно скачать с офсайта или поискать в Интернете. Ответы на многие возникающие вопросы можно найти на официальном форуме FASM. Форум англоязычный, но на нем немало наших соотечественников. К новичкам на форуме относятся хорошо и отвечают даже на самые глупые вопросы.

Для установки Flat Assembler скачайте дистрибутив с офсайта (около 800 килобайт). На момент публикации версия FASM 1.67.27, если ссылка изменится, то можете посмотреть обновление на странице загрузки. Там же можно скачать версии FASM для Linux, Unix и MS-DOS. Бесплатный add-on FASMARM к FASM для работы с ARM можно найти здесь, текущая версия FASMARM 1.12. Инсталлятора нет, программа устанавливается простым извлечением из архива в какое-нибудь удобное для вас место, например C:\FASM. Обязательно скачайте справочник Microsoft Win32 Programmer's Reference, распакуйте его в папку с FASM'ом. Для удобства можно сделать вложенную папку \help.

Microsoft Win32 Programmer's ReferenceMicrosoft Win32 Programmer's Reference

Microsoft.Win32.Programmers.Reference.zip (5,682,421 bytes)

Техническую документацию по FASM на английском языке можно скачать с офсайта, на русском языке есть вот такие мануалы:

Основной мануал Flat Assembler 1.64Основной мануал Flat Assembler 1.64

FASM.1.64.Manual.Rus.zip (26,950 bytes)

Руководство по препроцессору FASMРуководство по препроцессору FASM

FASM.Preprocessor.Tutorial.zip (19,429 bytes)

FASM 1.64: Руководство программистаFASM 1.64: Руководство программиста

FASM.Manual.Rus.zip (119,355 bytes)

Для продвинутых программистов могу порекомендовать справочник Windows NT/2000 Native API Reference на английском языке:

Windows NT/2000 Native API ReferenceWindows NT/2000 Native API Reference

Windows.NT.2000.Native.API.Reference.zip (1,657,576 bytes)

Для общего развития можно почитать книги Ассемблер для процессоров Intel Pentium (автор Ю.С.Магда) и Ассемблер для DOS, Windows и Unix (автор С.В.Зубков), Ассемблер & Win32. Курс молодого бойца (автор и составитель Р.Аблязов), Intel Hex Opcodes And Mnemonics - общее описание ассемблерных команд Intel 80486, x86 Instruction Set Reference - перечень и описание команд x86 процессора.

Ассемблер для процессоров Intel PentiumАссемблер для процессоров Intel Pentium

Assembler.for.Intel.Pentium.zip (2,168,688 bytes)

Ассемблер для DOS, Windows и UnixАссемблер для DOS, Windows и Unix

Assembler.for.DOS.Windows.and.Unix.zip (674,385 bytes)

Ассемблер & Win32. Курс молодого бойцаАссемблер & Win32. Курс молодого бойца

Assembler.Win32.Kurs.Molodogo.Boyca.zip (119,283 bytes)

Учебник по основам языка АссемблераУчебник по основам языка Ассемблера

Assembler.Manual.zip (1,922,159 bytes)

Учебник по языку Ассемблер в задачах и примерахУчебник по языку Ассемблер в задачах и примерах

Assembler.Examples.zip (703,463 bytes)

Intel Hex Opcodes And MnemonicsIntel Hex Opcodes And Mnemonics

Intel.Hex.Opcodes.And.Mnemonics.zip (66,976 bytes)

x86 Instruction Set Referencex86 Instruction Set Reference

x86.Instruction.Set.Reference.zip (425,658 bytes)

И напоследок две книги из категории "must have". Их, конечно, лучше иметь в бумажном варианте в качестве настольных справочников, но электронные версии тоже вполне подойдут. Книги залиты на файлообменник. Обе книги на русском языке, в хорошем качестве.

Внутреннее устройство Microsoft Windows 2000. Мастер-класс
Внутреннее устройство Microsoft Windows 2000. Мастер-класс

Соломон Д., Руссинович М. - "Внутреннее устройство Microsoft Windows 2000. Мастер-класс", формат файла: PDF, размер архива 34 Мб. Скачать

Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000
Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000

Соломон Д., Руссинович М. - "Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000", формат файла: DjVu, размер архива 27 Мб. Скачать

При первом запуске FASM создаст файл настроек FASMW.INI, откройте его для редактирования в Блокноте. В конец файла надо будет добавить две новых секции. Сперва пропишите полный путь к Win32 Programmer's Reference:

[Help]
path=C:\FASM\help\WIN32.HLP

Это же можно сделать и через меню редактора Help - Pick help file... Теперь, если все сделано правильно, достаточно установить в редакторе курсор на название функции API и нажать F1. Справочник сразу откроется на описании этой функции.

После этого надо установить необходимые переменные окружения и пути для подключаемых файлов. Например у меня прописаны вот такие:

[Environment]
include="C:\FASM\INCLUDE"
music="C:\FASM\KEYGEN\XM_FILES"
ufmod="C:\FASM\INCLUDE\MUSIC"

Переменная include обязательная, остальные для удобства. Теперь при написании программ вместо абсолютных путей можно (и нужно) использовать относительные:
  1. format PE GUI 4.0
  2. entry start
  3.  
  4. ; В некоторых исходниках встречается подобные строчки:
  5. ; include '%fasminc%\win32a.inc'
  6. ; После установки переменной %include% более правильная запись будет такая:
  7. include 'win32a.inc'          ; Путь к файлу берется из %include%
  8. ...
  9.  
  10. ; Добавление файлов в секцию данных
  11. section '.data' data readable writeable
  12. xm file '%music%\jamers.xm'   ; Путь к файлу берется из %music%
  13. xm_len  = $-xm
  14. ...
  15.  
  16. ; Подключение функций в таблицу импорта
  17. section '.idata' import data readable writeable
  18. library kernel32,"kernel32.dll",\
  19.         user32,"user32.dll",\
  20.         shell32,"shell32.dll",\
  21.         gdi32,"gdi32.dll"
  22.  
  23. include "apia\kernel32.inc"   ; Путь к файлу берется из %include%
  24. include "apia\user32.inc"
  25. include "apia\shell32.inc"
  26. include "apia\gdi32.inc"
  27. ...
  28.  
  29. ; Подключение отдельных файлов
  30. include '%ufmod%\ufmod.inc'   ; Путь к файлу берется из %ufmod%
  31. ...
Когда в настройках FASM установлена переменная include, использовать переменную %fasminc% уже не требуется. В крайнем случае ее можно продублировать в FASMW.INI, но делать это нежелательно, лучше просто удалить ее из всех исходников.

Поделиться ссылкой ВКонтакте
Просмотров: 80214 | Комментариев: 56

Метки: Assembler, FASM
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Петренко (31.03.2022 в 00:19):
ЦитатаWindows.NT.2000.Native.API.Reference.zip (1,657,576 bytes)

Благодарю за справку! Действительно, очень удобно.
К сожалению, не работает оглавление (Alt+F1) из-за отсутствия дополнительных файлов.
Нашёл расширенный вариант справки с оглавлением, плюс много чего ещё:
https://web.archive.org/web/20...2hlp_big.zip
Фактически, это справка для целого SDK. В качестве основного файла нужно выбрать win32sdk.hlp.

Упс... Не то процитировал. Нужно было вот это:
ЦитатаMicrosoft.Win32.Programmers.Reference.zip (5,682,421 bytes)
NeshAliNehrin (31.05.2019 в 18:08):
Для тех, кому основной мануал Flat Assembler 1.64 показался излишне сухим в изложении, стоит почитать: Норсеев С.А. «Разработка оконных приложений на FASMе».

Даю ссылочку на сайт автора, где в свободный доступ выложена книга в pdf формате. Скачивание прямое, без всяких капч и ожиданий

https://norseev.ru/books/windo...icationfasm/
Fasmer (26.11.2018 в 18:52):
ЦитатаЖаль что язык Ассемблера превратили в говно высокого уровня.И сделали это намерено твари.

Для тех, кто не понял философию FASM'а, есть спец. статья "Понимание FASM".
https://wasm.in/threads/ponimanie-fasm.31761/
ЛаЛалка (23.10.2018 в 13:48):
Всем привет
Виктор (11.02.2018 в 14:01):
https://yadi.sk/d/PcQHq1fM3SHQk7 - Windows internals 6 th editor part 1,2.rar - Внутреннее устройство Microsoft Windows. 6-е изд. в 2-х частях М. Руссинович, Д. Соломон
Описаны Microsoft Windows 7 и Windows Server 2008 R2

Эх. Еще бы найти на русском
64-ia-32-architectures-software-developer-vol-1-manual
и
Ralf Brown’s Interrupt List
Серж (16.05.2016 в 15:52):
Огромное спасибо! Ну что же, начнем кумекать. Три формы ассемблера разобрал,
теперь понадобился и четвертый.
Яшка (31.12.2015 в 22:28):
Читаю комменты...далёкий 2008 год...нахлынуло...
Спасибо за полезную инфу автор!
Sandor (01.09.2015 в 21:20):
Спасибо !
Сергей (31.07.2015 в 16:16):
Благодарю. Информация то что надо.
lamer19 (23.06.2015 в 09:41):
На "Зубкова, кстати, удобнее читать в CHM," я скажу одно. Зубкова лучше вообще не читать. Читать надо Пустоварова Владимира Ильича.
ManHunter (08.04.2015 в 01:18):
Обновил ссылки.
vonMI (30.03.2015 в 23:19):
Обе ссылки на внутреннее устройство покойнички.Если не трудно можно бы перезалить....Как ни странно,достаточно сложно,а главное долго искать.
Ирина (07.11.2014 в 23:21):
Как добавить нумерацию?
ManHunter (19.08.2014 в 17:13):
Угу, раньше слово "Ассемблер" произносили чуть не шепотом, а щаз каждое школоло скачает дистрибутив и начинает срать по форумам "хочу выучеть асемблер обьясните чем отлечаиться invoke от include". Про чудо-курсы типа "Ассемблер за 24 часа" я вообще молчу.
1111111 (19.08.2014 в 16:55):
Жаль что язык Ассемблера превратили в говно высокого уровня.И сделали это намерено твари.Якобы для облегчения программирования, но увы это лукавство, язык С++ разве легкий?)нет, а вот ассемблер действительно давал понять как работает машина.Теперь же из простого ассемблера превратили всего лишь в запутаный синтаксис с функциями и прочим дерьмом который создан лишь с одной целью оторвать человека от истиного понимания работы компьютера.Не удивлюсь что в скором времени этот язык вообще уберут,якобы есть др языки и зачем типа он нужен) И этот прекрасный ассемблер знать будут лишь оч небольшое количество так называемых избранных.
ManHunter (11.05.2014 в 20:43):
Как можно заниматься программированием и при этом не учить английский язык? 95% всех мануалов, специализированных форумов и прочей технической информации только на английском.
Аркадей (11.05.2014 в 05:02):
Перевел гугл транслитом rghost.ru/55080329. Может кто-нибудь возмется переводить на человеко-русский.
art (09.12.2013 в 19:57):
не плохо бы сделать ещё скачать всё разом....
максим (03.01.2013 в 22:09):
не все ссылки пашут
Даниил (07.11.2012 в 01:30):
Большое спасибо!)
redGoblin (01.07.2012 в 20:21):
Не могу никак скачать браузером. Есть другие ссылки?
Денис (11.03.2012 в 20:35):
это что все FASM? Недавно же слышал что на fasm нет книг

а так спасиьо за книжки
ManHunter (29.02.2012 в 08:10):
*facepalm*
Не пиши больше, не надо.
flawiimark (29.02.2012 в 04:41):
Я купил флоппи-диск,считая его предметом,
принадлежащим одному из способов управления
информацией.В частности,сумел установить на
флоппи-диски Колибри и Менуэт. Но после появления
рабочего стола в обоих случаях ничего не
предпринимаю,так как по большому счёту дуб
в каракулях программистов.Теперь занимаюсь
урывками информацией по ассемблеру.Хотелось
бы посоветовать автору описать следующий
метод использования Колибри или Менуэта.
Поскольку в приводе флоппи есть гнездо для
USB,то можно для этих крох подключить
трубопровод с большой памятью.В этом
случае отпадает необходимость устанавливать
обе эти "FASM-OS" на жёсткий диск с риском
испортить загрузочное меню.К примеру,после
попытки установить HaikuOS,которая тоже не
лишёна славы,пришлось обращаться в
мастерскую на предмет восстановления и
переустановки Windows7&XP.Получилось всё
дорого.А уж если что-то напутать с
ассемблер,то можно и с компьютером
попрощаться...Всего наилучшего.Если будет
решение по предложенной задаче,то звякните
по адресу flawii@ya.ru или flawiimark@hotmail.com.
Если нет,я от этого не умру.
ManHunter (24.01.2012 в 20:16):
Читай камменты, все написано как качать.
sergo (24.01.2012 в 18:29):
Microsoft.Win32.Programmers.Reference.zip - битый архив
Павел (23.03.2011 в 20:34):
респект
Колян (04.02.2011 в 07:46):
Спасибо
Sergey_K (05.01.2011 в 20:49):
Спасибо! Попробуем.
Вася (12.12.2010 в 17:57):
отвечаю сам себе - работает
кстати на офф сайте доступна версия 1.69.29
Вася (12.12.2010 в 16:22):
кто знает FASM из под обычного
пользователя будет работать?
а то из под админа страшно запускать
DELLPZ (07.12.2010 в 09:28):
Классная штучка,работает настроенный даже на флехе...
К Win 7 нужно ещё MFCDLL Shared Library - Retail Version запихнуть 71-ую,

СПАСИБО !!!!
ТЕперь не надо долгое время сидеть со словарём.
Ivan (24.10.2010 в 12:18):
Спасибо!!!!
Maks (02.10.2010 в 22:48):
Несколько суток искал ассемблер спс.
looooser (27.07.2010 в 17:03):
сейчас посмотрим. вдруг поможет..
Святозарка (14.07.2010 в 23:23):
Спс
ManHunter (13.04.2010 в 16:26):
zed, там олдскульная кодировка MS-DOS
zed (16.03.2010 в 14:25):
Основной Мануал к FASM.txt подскажите плз чем это открыть можно, пробовал блокнотом и нотпадом++ вижу одни иероглифы, менял кодировки в нотпад++ не помогло
vim (10.02.2010 в 00:09):
Спасибо
Shyntiles (21.01.2010 в 06:47):
какой учебник более понятнее по языку Ассемблер
ManHunter (15.11.2009 в 20:41):
serega386, насколько я знаю, достаточно взять winhlp32.exe от WinXP и заменить им аналогичный файл в Windows 7. А те, кто по какой-то причине сидит на висте - сами себе злобные буратины и это их личные проблемы.
Зубкова, кстати, удобнее читать в CHM, оттуда легче дергать код при необходимости.
serega386 (15.11.2009 в 04:19):
в вин7 и виста еще требуется докачать KB для просмотра HLP, а там дают тока после проверки системы. полезно наверно тоже выложить? могу выслать для вин7 32и64.msu мой адрес никсобакаmailru
а так же зубкова в нормальном пдф
ManHunter (09.11.2009 в 12:29):
Добавил еще две книжки по Ассемблеру для общего развития.
ТОЛИК (30.10.2009 в 00:41):
ВСЕ ЧТО НАДА ВМЕСТЕ
КОРОТКО ЯСНО
БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО )))
Rambler (07.10.2009 в 03:53):
СПС!
ssu (18.09.2009 в 14:25):
Спасибо за информацию
ГоРяЩиЙ^зАяЦ (24.07.2009 в 00:21):
Большое пасибо. ща начну его потрошить))))))
Поддубный (04.05.2009 в 22:34):
Как прикрутить строку вида '%fasminc%\APIA\kernel32.inc'   чтобы каждый раз не пришлось редактировать исходники в частности "APIA" (fasminc прикрутил)
в FASMW.ini строка вида APIA = C:\fasmw\INCLUDE\API не фурычит
vik (27.03.2009 в 18:03):
win32 говняный
Сергій (18.02.2009 в 06:56):
Дякую!
ManHunter (05.02.2009 в 08:12):
TiK-TiK, качай браузером и будет тебе счастье
TiK-TiK (05.02.2009 в 08:01):
тока  вот что то мануалы скачать не получаеться:(
TiK-TiK (05.02.2009 в 07:44):
спасибо  искал  фуф   ели нашел !
zLoy (13.01.2009 в 18:42):
очень пасибки за полезную инфу)
ManHunter (14.12.2008 в 19:18):
Вот когда я в качестве IDE буду использовать RadAsm, тогда и напишу. А случится это НИКОГДА.
Ivan_32 (14.12.2008 в 05:14):
А не могли бы вы написать гайд как FASM прикрутить к RadASM-у?

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.004 сек.) / Память: 4.5 Mb
Наверх