View on GitHub

SASM

Simple crossplatform IDE for NASM, MASM, GAS, FASM assembly languages

Download this project as a .zip file Download this project as a tar.gz file

SASM

English version of site here.

SASM (SimpleASM) - простая кроссплатформенная среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языке ассемблера. Вводите код в форму и запускайте приложение. Программа работает "из коробки" и хорошо подойдет для начинающих изучать язык ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

SASM

Загрузить .exe для Windows
Загрузить .zip для Windows
Загрузить для Linux
Установка на Mac: ссылка 1, ссылка 2

Для загрузки программы на Linux перейдите по соответствующей ссылке и выберите ваш дистрибутив и архитектуру (i386 / amd64).

Вы также можете собрать SASM из исходников, которые можно найти в GitHub репозитории.

Поддержите проект

PayPal и карты:

WebMoney: Z282016332582 и R331674303467

О программе

В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языках ассемблера NASM, MASM, GAS, FASM. Вводите код в форму и запускайте приложение. В Windows также возможен запуск приложения в отдельном окне. Входные данные указывайте в поле "Ввод". В поле "Вывод" Вы сможете увидеть результат работы программы. При этом все сообщения и ошибки компиляции будут выводиться в форму снизу. Вы можете сохранять исходный или скомпилированный (exe) код программы в файл, а также загружать свои программы из файла.

Программа поддерживает работу с несколькими проектами – новые файлы открываются и создаются в новых вкладках. При выходе из программы текущий набор открытых файлов сохраняется. При следующем запуске Вы сможете восстановить предыдущую сессию. В параметрах настраивается шрифт, цветовая схема и текст, отображающийся при создании нового файла. Интерфейс программы доступен на восьми языках (русский, английский, турецкий (спасибо Ali Goren), китайский (спасибо Ahmed Zetao Yang), немецкий (спасибо Sebastian Fischer), итальянский (спасибо Carlo Dapor), польский (спасибо Krzysztof Rossa), иврит (спасибо Elian Kamal), испанский (спасибо Mariano Cordoba), французский (спасибо Franc Serres). Все окна в программе плавающие, с возможностью закрепления в одной из множества позиций. Имеется возможность переназначения горячих клавиш.

Стандартное меню "Правка" дополнено возможностью комментирования/раскомментирования выделенного куска кода и создания/удаления отступа в 4 пробела (Tab/Shift+Tab).

В SASM вы можете находить ошибки в своих программах с помощью интерфейса к отладчику gdb. В программе можно просматривать значения регистров и переменных, а также устанавливать точки останова и перемещаться по отлаживаемой программе. Дополнительно имеется возможность выполнять произвольные команды отладчика gdb, результаты которых будут отображаться в логе.

SASM полностью поддерживает работу с четырьмя ассемблерами NASM, MASM, GAS, FASM в двух режимах - x64 и x86, переключаться между которыми можно в настройках на вкладке "Построение". Там же можно изменить опции ассемблера и компоновщика и выбрать, какие программы будут использоваться для ассемблирования и компоновки.

SASM

Устранение неполадок

Если у Вас что-то работает не так (происходят ошибки при компиляции, отладке и др.), пожалуйста, прочитайте главу "Устранение неполадок" в справке в программе (F1) или в Wiki проекта на GitHub. Возможно, там Вы сможете найти полезный совет для решения Вашей проблемы.

Примеры кода

Работоспособные примеры кода для разных ассемблеров, включая примеры работы с фунциями ввода-вывода и макросами "io.inc", содержатся в папке Projects по пути, где установлен SASM (обычно C:\Program Files (x86)\SASM на Windows, /usr/share/sasm на Linux).

Библиотека макросов для NASM "io.inc"

В программу включена библиотека кроссплатформенных макросов ввода-вывода "io.inc". Для её использования в начале программы нужно добавить директиву %include "io.inc" (%include "io64.inc" для 64-битного ассемблера). Подробнее о ее командах Вы можете узнать здесь: http://asmcourse.cs.msu.ru/?page_id=169 или ниже.

Имя макроса Описание макроса
PRINT_UDEC size, data

PRINT_DEC size, data

Вывод числовых данных заданных параметром data в 10-чном представлении. Параметр size – число, указывающее размерность данных в байтах; допускаются значения 1, 2, 4, 8 (x64). В качестве параметра data может выступать числовая константа, символьная константа, имя переменной, имя регистра или адресное выражение (без спецификатора размера данных в памяти). Если задается регистр большего размера, то берется заданное параметром size количество младших разрядов. PRINT_UDEC интерпретирует число как беззнаковое, PRINT_DEC — как знаковое.
PRINT_HEX size, data Аналогично предыдущему, но данные выводятся в 16-чном представлении.
PRINT_CHAR ch Печатается символ, заданный параметром ch. В качестве параметра может выступать численная константа, символьная константа, имя переменной, имя регистра или адресное выражение (без спецификатора размера данных в памяти). Печатается всегда содержимое 8 младших разрядов.
PRINT_STRING data Печать строки текста, оканчивающейся символом с кодом 0. В качестве параметра можно передавать строковую константу, имя переменной или адресное выражение (без спецификатора размера данных в памяти). В случае печати строковой константы, наличие символа с кодом 0 в конце строки необязательно.
NEWLINE Макрос переводит печать на новую строку.
GET_UDEC size, data

GET_DEC size, data

Ввод числовых данных в 10-чном представлении с клавиатуры. Размер вводимых данных ограничен параметром size, который задается числом (1, 2, 4, 8 (x64)). Введенные данные обрезаются соответствующим образом. Параметр data – либо имя переменной, либо имя регистра, либо адресное выражение (без спецификатора размера данных в памяти). Если задается регистр большего размера, то старшие разряды заполняются знаковым битом в случае GET_DEC и нулями в случае GET_UDEC. GET_UDEC считывает беззнаковое число, GET_DEC — знаковое. Запрещается использовать в качестве параметра регистр esp.
GET_HEX size, data Аналогично предыдущему, но данные задаются в 16-чном представлении с префиксом 0x.
GET_CHAR data Аналогично предыдущему, но происходит считывание одного символа, нажатие Enter не требуется. Более того, нажатие Enter будет расцениваться как ввод управляющих символов перевода строки: 0xD 0xA в ОС Windows, 0xA в ОС *nix. Если параметр – регистр, размер которого больше 1 байта, значение считанного символа будет дополнено нулями.
GET_STRING data, maxsz Ввод последовательности символов длиной не более чем (maxsz-1). Чтение последовательности останавливается на EOF или переводе строки, причем перевод строки сохраняется в буфере. В конец считанной строки добавляется символ с кодом 0. Параметр data – либо имя переменной, либо адресное выражение (без спецификатора размера данных в памяти). Параметр maxsz – регистр или числовая константа.

При вызовах макросов значения всех регистров общего назначения не изменяются.

Функции ввода-вывода для NASM (x86)

Наряду с макросами, другим простым вариантом ввода-вывода в NASM являются соответствующие макросам вспомогательные функции ввода-вывода, доступные в SASM (работают только для x86 NASM проектов). Для их использования необходимо объявить нужные функции с помощью директивы extern <имя функции>, а затем размещать аргументы в регистрах в соответствии с таблицей ниже и вызывать функции с помощью инструкции call. Подробнее о функциях ввода-вывода Вы можете узнать здесь: http://asmcourse.cs.msu.ru/?page_id=2611 или ниже.

Имя функции EAX EDX
io_get_dec
io_get_udec
io_get_hex
выход: число
io_get_char выход: символ
io_get_string вход: адрес вход: размер
io_print_dec
io_print_udec
io_print_hex
вход: число
io_print_char вход: символ
io_print_string вход: адрес
io_newline

При вызовах функций значения регистров EBX, EBP, ESP, EDI, ESI не изменяются, значения остальных регистров могут быть изменены.

Реализация

Windows

В качестве ассемблера для NASM используется nasm 2.15.05, в качестве компоновщика - gcc 4.6.2 из MinGW (gcc 4.8.1 из MinGW64 в режиме x64) или ld 2.22 из MinGW (ld 2.23.2 из MinGW64 в режиме x64).

Версии ассемблеров и компоновщиков для NASM подобраны с учетом рекомендуемых программ для курса "Архитектура ЭВМ и язык ассемблера" ВМК МГУ 1-го потока.

Также в программу включен отладчик gdb 7.4 (7.6 для x64) из пакета MinGW и немного измененная для отладки библиотека макросов ввода-вывода.

Начиная с версии 3.0, в SASM включены fasm 1.73.30 и gas 2.23.1 из MinGW (gas 2.23.2 из MinGW64).

Ассемблер MASM невозможно было включить в сборку из-за его лицензии. Чтобы им воспользоваться, Вы должны установить MASM на Ваш компьютер с сайта https://www.masm32.com/ и указать пути до ассемблера (ml.exe, путь обычно "C:/masm32/bin/ml.exe") и до компоновщика (link.exe, путь обычно "C:/masm32/bin/link.exe") в соответствующих полях на вкладке "Построение".

Под Windows SASM после установки сразу готов к работе.

Linux

Для работы программы на Linux должны быть установлены: nasm или gas (если их планируется использовать, fasm уже включён в сборку), gcc, gdb (для отладки).

Больше информации о программе и её использовании можно получить в Wiki проекта на GitHub или в справке в самой программе (F1).

История изменений:

03.03.2023 - версия 3.14.0 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

13.02.2023 - версия 3.13.4 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

09.02.2023 - версия 3.13.3 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

07.02.2023 - версия 3.13.2 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

07.02.2023 - версия 3.13.1 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

06.02.2023 - версия 3.13.0 (zip, exe):

При обновлении с предыдущих версий рекомендуется в настройках нажать кнопку "Сбросить все настройки на начальные".

09.03.2022 - исправления установщика и zip-архива версии 3.12.2 (zip, exe)

06.02.2022 - версия 3.12.2 (zip, exe):

13.02.2021 - версия 3.12.1 (zip, exe):

08.02.2021 - версия 3.12.0 (zip, exe):

03.02.2020 - версия 3.11.1 (zip, exe):

31.01.2020 - версия 3.11.0 (zip, exe):

08.10.2018 - версия 3.10.1 (zip, exe):

01.10.2018 - версия 3.10.0 (zip, exe):

12.09.2017 - версия 3.9.0 (zip, exe):

19.02.2017 - версия 3.8.0 (zip, exe):

30.10.2016 - версия 3.7.0 (zip, exe):

25.09.2016 - версия 3.6.0:

26.08.2016 - версия 3.5.1:

19.03.2016 - версия 3.5.0:

11.02.2016 - версия 3.4.0:

27.01.2016 - версия 3.3.0:

14.06.2015 - версия 3.2.0:

27.05.2015 - версия 3.1.4: исправлена ошибка, возникающая при использовании в системе локализованной версии objdump.

30.03.2015 - версия 3.1.3: добавлено отображение информации о полученных программой сигналах (в т. ч. об ошибках, возникающих в ходе её работы) при отладке.

27.03.2015 - версия 3.1.2: улучшена работа при отладке файлов с директивой include.

24.03.2015 - версия 3.1.1: исправлены ошибки с подсветкой синтаксиса.

29.08.2014 - версия 3.1.0: изменения из pull requsts и issues на GitHub - перемещаемые вкладки, сообщения об ошибках при неправильном ассемблере или компоновщике, улучшенная отмена и постановка отступа в 4 пробела, опция noexecstack для исполняемых файлов в Linux.

24.07.2014 - версия 3.0.1: добавлена возможность просмотра дополнительных регистров (xmm, st и других).

13.07.2014 - версия 3.0:

23.04.2014 - версия 2.3.1: исправлена ошибка, возникающая при наличии пробелов в пути до временной директории (в частности восстановлена работа SASM на Windows XP).

03.04.2014 - версия 2.3:

16.02.2014 - версия 2.2:

13.11.2013 - версия 2.1:

04.06.2013 - версия 2.0: сделаны все запланированные изменения - реализован отладчик, улучшена подсветка, стало возможно работать с несколькими файлами, SASM (новое название) полностью переписан на Qt и теперь с открытым кодом и кроссплатформен. Исходники выложены на GitHub, сюда же переехал и сайт. Если Вам нужны более ранние версии программы, Вы можете их найти на предыдущем сайте.

21.04.2013 - версия 1.0.4 - исправлена ошибка с CEXTERN.

18.03.2013 - версия 1.0.3 - исправлены ошибки подсветки синтаксиса, теперь подсвечиваются все ключевые слова NASM, исправлен запуск программ на MASM.

10.03.2013 - версия 1.0.2 - исправлены ошибки, добавлено автосохранение кода и пути.

07.03.2013 - появилась первая версия программы - 1.0.0.

Пожелания и сообщения об ошибках отправляйте на адрес Dman1095@gmail.com или оставляйте на GitHub Issues.

Copyright © 2013 Дмитрий Манушин