Програмирование на fasm под Win64 часть 1 \"Ассемблер, отладчик, IDE\"

Дата публикации 5 июл 2017 | Редактировалось 10 янв 2018
Введение

Я начинаю цикл статей по ассемблеру fasm. Возможно у вас есть вопрос: “Зачем в 21 веке нужен ассемблер?”. Я бы ответил так: Конечно, знание ассемблера не обязятельно, но оно способствует пониманию, во что превращается ваш код, как он работает, это позволяет почувствовать силу. Ну и в конце концов: Писать на ассемблере просто приятно (ну по крайней мере небольшие приложения).
Так что надеюсь, что мои статьи будут вам полезны.

Где взять fasm?

Собственно тут: http://flatassembler.net/download.php
На этой странице Томаш Грыштар(создатель fasm-а) выкладывает последнюю версию ассемблера. Там есть версии для DOS, Linux, Unix и Windows, нам нужна для Windows. В скачанном архиве находятся следующие компоненты:
  • fasm.exe – собственно сам ассемблер
  • fasmw.exe – IDE (среда разработки)
  • fasm.pdf – документация
  • папка source – исходники fasm-а (написан на самом себе)
  • папка include – папка с заголовками, импортами, и т.д.
  • папка examples – примеры программ на fasm-е
    Содержимое fasm.pdf дублирует 2 раздела документации “flat assembler 1.71 Programmer’s Manual” и “Windows programming” отсюда: http://flatassembler.net/docs.php
IDE (среда разработки)

Перед тем, как писать программы нужно определиться, в чём их писать. Для fasm-а существуют разные IDE, например: fasmw.exe(находится в архиве с fasm-ом), RadAsm, WinAsm Studio, Fresh, … Выберайте, какая вам больше по вкусу. Сразу скажу, что IDE из поставки fasm-а обладает минимальным количеством фичей, так что я бы рекомендовал использовать альтернативную IDE. Я, например, использую RadAsm 3.0, его можно взять здесь: https://fbedit.svn.sourceforge.net/svnroot/fbedit/RadASM30/Release/RadASM.zip (это хорошая IDE, но к сожалений она больше не обновляется) К статье приложен файл Fasm.ini, там выбрана чёрная тема, добавлены x64 регистры и добавлена подсветка для большего числа инструкций. Можете поставить его вместо Fasm.ini поумолчанию, только исправьте в нём пути к папке с fasm-ом в 6 и 7 строках. Там написано:
Код (Text):
  1. [Environment]
  2. 0=path,C:\Program Files (x86)\fasm;$A\..\Ollydbg
  3. 1=include,C:\Program Files (x86)\fasm\INCLUDE
Если вы распаковали fasm в папку <полный путь>, то надо заменить приведённый выше код на:
Код (Text):
  1. [Environment]
  2. 0=path,<полный путь>\fasm;$A\..\Ollydbg
  3. 1=include,<полный путь>\fasm\INCLUDE
Отладчик

Писать программы это — хорошо, но нужно находить и исправлять баги, для этого нужен отладчик. Существуют разные отладчики способные отлаживать 64-битный код например: WinDbg, fdbg, x64dbg. Наиболее удобный на мой взгляд - x64dbg, его можно скачать здесь.
Это — всё, что я хотел рассказать в первой части.

Вложения:

  • Fasm.zip
    Размер файла:
    6,8 КБ
    Просмотров:
    1.407

5 30.821
_qwe8013

_qwe8013
Active Member

Регистрация:
30 ноя 2016
Публикаций:
2

Комментарии


      1. omne999666 16 июл 2020
        Легко все описано и освоилось напоследок удивило вложения файлика архива Fasm.zip в котором много интересного для настроек новых инструкций и регистров. Вводно понятно в месте содержания .ini и дополнение есть самим что не на есть знаниями.
      2. addedie 22 сен 2019
        перезалейте пожалуйста эту версию RadAsm, буду весьма благодарен....
      3. седьмой 10 июл 2017
        Спасибо, все разобрался, код работает под windows 7 - 64.
      4. седьмой 10 июл 2017
        Спасибо, очень интересно, но почему то Fasm в ОС вин 64 не компилируется код, скаченный по этой ссылке
        код взял вот отсюда
        Код (Text):
        1.  
        2. use16               ;Генерировать 16-битный код
        3. org 100h            ;Указание компилятору вести отсчёт смещения от адреса 100h, так как DOS грузит по данному смещению.
        4.     mov dx,hello    ;В DX адрес строки.
        5.     mov ah,9        ;Номер функции DOS.
        6.     int 21h         ;Обращение к функции DOS.
        7.     mov ax,4C00h    ;\
        8.     int 21h         ;/ Завершение программы
        9. ;-------------------------------------------------------
        10. hello db 'Hello, world!$'
        11.  
        код взял по ссылке http://www.programmersforum.ru/showthread.php?t=306951&page=2 Может быть там надо что то перенастроить? Выдает сообщение, что не может откомпилировать код в системе вин 64. Сам уже кажется понял, этот код для доса, а можно где то взять рабочий код минимальный для проверки работы компилятора Fasm вин 64?
      5. yashechka 9 июл 2017
        Спасибо, молодец!!!