Установка и настройка 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.
Техническую документацию по FASM на английском языке можно скачать с офсайта, на русском языке есть вот такие мануалы:
Для продвинутых программистов могу порекомендовать справочник Windows NT/2000 Native API Reference на английском языке:
Для общего развития можно почитать книги Ассемблер для процессоров Intel Pentium (автор Ю.С.Магда) и Ассемблер для DOS, Windows и Unix (автор С.В.Зубков), Ассемблер & Win32. Курс молодого бойца (автор и составитель Р.Аблязов), Intel Hex Opcodes And Mnemonics - общее описание ассемблерных команд Intel 80486, x86 Instruction Set Reference - перечень и описание команд x86 процессора.
И напоследок две книги из категории "must have". Их, конечно, лучше иметь в бумажном варианте в качестве настольных справочников, но электронные версии тоже вполне подойдут. Книги залиты на файлообменник. Обе книги на русском языке, в хорошем качестве.
Внутреннее устройство 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", формат файла: 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 обязательная, остальные для удобства. Теперь при написании программ вместо абсолютных путей можно (и нужно) использовать относительные:
Code (Assembler) : Убрать нумерацию
- format PE GUI 4.0
- entry start
- ; В некоторых исходниках встречается подобные строчки:
- ; include '%fasminc%\win32a.inc'
- ; После установки переменной %include% более правильная запись будет такая:
- include 'win32a.inc' ; Путь к файлу берется из %include%
- ...
- ; Добавление файлов в секцию данных
- section '.data' data readable writeable
- xm file '%music%\jamers.xm' ; Путь к файлу берется из %music%
- xm_len = $-xm
- ...
- ; Подключение функций в таблицу импорта
- section '.idata' import data readable writeable
- library kernel32,"kernel32.dll",\
- user32,"user32.dll",\
- shell32,"shell32.dll",\
- gdi32,"gdi32.dll"
- include "apia\kernel32.inc" ; Путь к файлу берется из %include%
- include "apia\user32.inc"
- include "apia\shell32.inc"
- include "apia\gdi32.inc"
- ...
- ; Подключение отдельных файлов
- include '%ufmod%\ufmod.inc' ; Путь к файлу берется из %ufmod%
- ...
Просмотров: 80214 | Комментариев: 56
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
NeshAliNehrin
(31.05.2019 в 18:08):
Для тех, кому основной мануал Flat Assembler 1.64 показался излишне сухим в изложении, стоит почитать: Норсеев С.А. «Разработка оконных приложений на FASMе».
Даю ссылочку на сайт автора, где в свободный доступ выложена книга в pdf формате. Скачивание прямое, без всяких капч и ожиданий
https://norseev.ru/books/windo...icationfasm/
Даю ссылочку на сайт автора, где в свободный доступ выложена книга в 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
Описаны 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.
Если нет,я от этого не умру.
принадлежащим одному из способов управления
информацией.В частности,сумел установить на
флоппи-диски Колибри и Менуэт. Но после появления
рабочего стола в обоих случаях ничего не
предпринимаю,так как по большому счёту дуб
в каракулях программистов.Теперь занимаюсь
урывками информацией по ассемблеру.Хотелось
бы посоветовать автору описать следующий
метод использования Колибри или Менуэта.
Поскольку в приводе флоппи есть гнездо для
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
кстати на офф сайте доступна версия 1.69.29
Вася
(12.12.2010 в 16:22):
кто знает FASM из под обычного
пользователя будет работать?
а то из под админа страшно запускать
пользователя будет работать?
а то из под админа страшно запускать
DELLPZ
(07.12.2010 в 09:28):
Классная штучка,работает настроенный даже на флехе...
К Win 7 нужно ещё MFCDLL Shared Library - Retail Version запихнуть 71-ую,
СПАСИБО !!!!
ТЕперь не надо долгое время сидеть со словарём.
К 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, оттуда легче дергать код при необходимости.
Зубкова, кстати, удобнее читать в 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 не фурычит
в 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-у?
Добавить комментарий
Заполните форму для добавления комментария
Благодарю за справку! Действительно, очень удобно.
К сожалению, не работает оглавление (Alt+F1) из-за отсутствия дополнительных файлов.
Нашёл расширенный вариант справки с оглавлением, плюс много чего ещё:
https://web.archive.org/web/20...2hlp_big.zip
Фактически, это справка для целого SDK. В качестве основного файла нужно выбрать win32sdk.hlp.
Упс... Не то процитировал. Нужно было вот это: