FASM (расшифровывается как Flat Assembler - Ассемблер Плоского Режима) - это крайне необычный транслятор с экзотичными возможностями.
Что же такое FASM? Это ассемблер с предельно упрощенным синтаксисом, качественным кодогенератором,
мощным макропроцессором и гибкой системой управления за форматом выходных файлов.
Плюсы FASM в том, что он может генерировать очень маленький код, имеет офигенный простой синтаксис(из всех ассемблеров) и вобще по моему ничего круче еще не придумали.
Из недостатков можно выделить несовместимость с MASM/TASM но это по моему не нужно.
Итак, приведем самую простую программу на FASM, которая выводит сообщение: "Fuck you, Windows".
Minimal.asm
format PE GUI 4.0 ;формат EXE файла
include 'C:\FASM\include\win32ax.inc' ;подключаем макросы
.code
start: ;начало метки Start
invoke invoke MessageBox,HWND_DESKTOP,"Fuck you, Windows","Minimal",MB_OK ;выводит Message Box с текстом "Fuck you, Windows", заголовком "Minimal" и кнопочкой OK
invoke ExitProcess,0 ;завершает прогу
.end start ;конец метки Start
Попробуем усовершенствовать нашу программу, чтоб она могла посчитать (135+200-56):2 и вывести это в сообщение.
Minimal2.asm
;Итак нам надо чтобы наша программа посчитала (135+200-56):2 и вывела результат.
;Вместо переменных используются регистры процессора или ячейки памяти.
;Код который посчитает нам результат этих вычислений:
format PE GUI 4.0 ;формат EXE файла
include 'C:\FASM\include\win32ax.inc' ;подключаем макросы
.code
start: ;начало метки Start
;посчитаем выражение (135+200-56):2
mov eax,135 ;заносим в регистр eax значение 135
add eax,200 ;прибавляем к eax 200
sub eax,55 ;отнимаем от результата 56
mov bl,2 ;заносим делитель в BL
div bl ;делим EAX на BL
;Результат получаем в eax. В ASCII число преобразуем так:
invoke wsprintf,ebx,szformat,eax
invoke MessageBox,HWND_DESKTOP,"Fuck you, Windows","Minimal2",MB_OK ;выводит Message Box с текстом "Fuck you, Windows", заголовком "Minimal2" и кнопочкой OK
invoke MessageBox,HWND_DESKTOP,ebx,"Minimal2",MB_OK ;выводит Message Box с числом "140", заголовком "Minimal2" и кнопочкой OK
invoke ExitProcess,0 ;завершает прогу
.end start ;конец метки Start
szformat db "%u",0 ; эта строка нужна чтобы правильно отобразилось число
Фуух))) Можете спокойно скопировать и наслаждатся своей первой программой на FASM. Можете подставлять различные числа и проверить какое число посчитает прога.
Вобщем, эксперементируйте!!!
FASM Tutorial by Dr.Lithium/minor9k
E-mail: spectrum53@yandex.ru