Как установить nasm в ubuntu
This is the project webpage for the Netwide Assembler (NASM), an asssembler for the x86 CPU architecture portable to nearly every modern platform, and with code generation for many platforms old and new.
License
As of version 2.07, NASM is now under the Simplified (2-clause) BSD license. The details of the license are available in the documentation.
Latest version
Stable | 2.16.01 | History |
---|---|---|
RC | 2.16.02rc5 | History |
Builds | List | |
Snapshots | Latest, List |
For users of RPM-based Linux distributions (e.g. Fedora, Red Hat, SUSE, . ), you can download the official NASM builds using dnf or yum by installing nasm.repo in your /etc/yum/yum.repos.d directory.
Infrastructure Change
On July 1, 2020, the official NASM git repository moved to github.
The previous repository on repo.or.cz is no longer maintained.
Development Team
NASM was originally developed by Simon Tatham and Julian Hall, and is now maintained by a team led by H. Peter Anvin.
- H. Peter Anvin
- Cyrill Gorcunov
- Chang Seok Bae
- Jim Kukunas
- Frank B. Kotler
. with support from many others, and we are always looking for more developers.
Your reports aren’t going to /dev/null
We’re looking for your comments, suggestions and, of course, bug-reports. Report any suspicious behavior you encounter to help us improve the NASM for everyone!
Please post your messages to the mailing list, or file a bug report.
Don’t worry if your report is not immediately addressed, even within the first few days, as this is usual for us. Your report will, however, be recorded and dealt with, of course, as time permits.
©1996-2015 The NASM development team
Расширенный ассемблер: NASM
Расширенный ассемблер NASM √ это 80×86 ассемблер, разработанный исходя из принципов переносимости и модульности. Он поддерживает широкий диапазон форматов объектных файлов, включая форматы Linux a.out и ELF , NetBSD/FreeBSD, COFF , Microsoft 16-bit OBJ и Win32 . Он способен также создавать простые бинарные файлы. Синтакс NASM максимально упрощен для понимания и похож на синакс Intel, но слегка посложнее. Он поддерживает инструкции Pentium, P6 и MMX, а также имеет макро-расширения.
1.1.1 Зачем еще один ассемблер?
- a86 хороший ассемблер, но не бесплатный, и если вы не заплатите, то 32-битный код писать не сможете только DOS.
- gas свободно доступен и портирован под DOS и Unix, но разработан для обратной совместимости с gcc . Поэтому проверка ошибок минимальна, к тому-же, с точки зрения любого, кто попробовал что-либо написать в нем синтаксис ужасен. Плюс ко всему вы не можете в нем написать 16-разрядный код (по крайней мере, правильно).
- as86 только под Linux и (по крайней мере моя версия) кажется не имеет практически никакой документации.
- MASM очень хорош, очень дорог и работает только под DOS.
- TASM лучше, но все еще борется с MASM за совместимость, что означает миллионы директив и куча волокиты. Его синтаксис по существу MASM-овский, но с противоречиями и причудами (в некоторой степени удаляемыми посредством режима Ideal ). Он также дорогой и тоже только ДОС.
Таким образом, представляем на ваше рассмотрение NASM. В сегодняшнем виде он все еще находится в стадии прототипа мы не обещаем, что он будет превосходить по быстродействию любой из упомянутых выше ассемблеров. Но пожалуйста, пожалуйста шлите нам замечания о замеченных ошибках, исправления, полезную информацию, да все, что угодно, что вы можете передать нам (и спасибо огромное многим людям, кто уже сделал это!), и мы будем улучшать его (в смысле, NASM) снова и снова.
1.1.2 Условия лицензирования
Чтобы ознакомиться с условиями лицензирования, при которых вы можете пользоваться NASM, пожалуйста, прочитайте файл Licence, являющийся неотъемлимой частью любого дистрибутивного архива NASM.
1.2 Контакты
Текущая версия NASM (0.98) поддерживается H. Peter Anvin, hpa@zytor.com. Если вы захотите сообщить об обнаруженных ошибках, прочитайте сначала параграф 10.2.
Связаться с авторами можно по следующим адресам: jules@earthcorp.com и anakin@pobox.com.
Если вы не имеете доступ к Usenet или предпочитаете получать информацию о выпусках новых версий по электронной почте, вы можете подписаться на лист рассылки nasm-announce , послав email по адресу majordomo@linux.kernel.org, содержащий строку subscribe nasm-announce .
Если вы хотите также получать информацию о выходе бета-релизов NASM, пошлите по тому-же адресу (см.выше) письмо, содержащее строку nasm-beta .
1.3 Инсталляция
1.3.1 Инсталляция NASM под MS-DOS или Windows
При получении DOS-архива NASM, nasmXXX.zip (где XXX означает номер версии NASM, содержащегося в архиве), распакуйте его в отдельный каталог (например, c:\nasm ).
Архив содержит четыре исполняемых файла: NASM-исполняемые файлы nasm.exe и nasmw.exe , и NDISASM-исполняемые файлы ndisasm.exe и ndisasmw.exe . Файлы, имеющие в окончании имени w , работают под Win9x/ME/NT, а те, которые без w работают под DOS-ом.
Для запуска NASM требуются только эти файлы, так что скопируйте их в каталог, указанный в вашей переменной PATH , либо отредактируйте autoexec.bat для добавления пути к каталогу с исполнимыми файлами NASM в переменную PATH . (если вы устанавливаете только версию под Win32, можете смело переименовать nasmw.exe в nasm.exe .)
И это все. NASM установлен! Для запуска NASM не обязательно иметь отдельный каталог (если, конечно вы не добавили его к переменной PATH ), поэтому можете удалить его (каталог), если у вас мало места на диске.
Если вы загрузили DOS-архив с исходниками nasmXXXs.zip , он будет также содержать полный исходный текст NASM и набор Make-файлов, которые вы можете (будем надеяться) использовать для перестроения вашей копии NASM «с нуля». В файле Readme перечислены все Make-файлы и указано, с какими компиляторами они работают.
Обратите внимание, что исходники insnsa.c, insnsd.c, insnsi.h и insnsn.c автоматически генерируются из главной таблицы инструкций insns.dat Perl-скриптом; файл macros.c генерируется из standard.mac другим Perl-скриптом. Хотя дистрибутив NASM 0.98 и включает эти автогенерируемые файлы, вам может потребоваться перестроить их (и следовательно, вам будет необходим интерпретатор Perl), если вы захотите изменить insns.dat, standard.mac или документацию. Возможно в будущем в исходниках не будет этих файлов вовсе. Версии Perl для ряда платформ, включая DOS и Windows, доступны на www.cpan.org.
1.3.2 Инсталляция NASM под Unix
При получении Unix-архива исходников NASM, nasm-X.XX.tar.gz (где X.XX означает номер версии NASM в архиве) распакуйте его в каталог типа /usr/local/src . Архив при распаковке создаст собственный подкаталог nasm-X.XX .
NASM автоконфигурируемый пакет: как только вы распакуете его, перейдите к каталогу, куда он был распакован и введитеe ./configure . Данный шелл-скрипт найдет самый подходящий компилятор C для сборки NASM и, соответственно, настройки Make-файлов.
Как только NASM сконфигурируется, вы можете ввести make для сборки бинарных файлов nasm и ndisasm , а затем ввести make install для установки их в /usr/local/bin и установки man-страниц nasm.1 и ndisasm.1 в /usr/local/man/man1 . В качестве альтернативы вы можете указать опции типа —prefix к команде configure скрипта (подробности см. в файле INSTALL ) или установить программы самостоятельно.
NASM также имеет набор утилит для обработки заказного формата объектных файлов RDOFF , находящихся в подкаталоге rdoff архива NASM. Вы можете собрать их при помощи make rdf и установить при помощи make rdf_install , если конечно они вам нужны.
Если NASM будет не в состоянии автоматически выбрать конфигурацию, вы все-же сможете скомпилировать его при помощи make-файла Makefile.unx . Cкопируйте или переименуйте этот файл в Makefile и попробуйте ввести make . Имеется также файл Makefile.unx в подкаталоге rdoff .
Как инсталлировать nasm?
Не, мне лично ассемблер был нужен. Я на нём TSR (Terminate and stay Resident) писал под DOS. Тот-же вирус, по сути, но правильный. И нужен он был мне неспроста.
cadaber ★★
( 27.09.18 02:46:32 MSK )
Последнее исправление: cadaber 27.09.18 02:54:14 MSK (всего исправлений: 1)
Ответ на: комментарий от cadaber 27.09.18 02:46:32 MSK
Для общего развития Ассемблер уже нынче изучать не стоит?
anonymous
( 27.09.18 04:55:49 MSK )
Ответ на: комментарий от anonymous 27.09.18 04:55:49 MSK
Как сказать. Я, было время, учил и Си++, и Делфи, и Пёрл. Вот только где они сейчас? Правильно, в глубокой жопе. Заняться питоном — в принципе реально, но ходят упорные слухи, что и он уже в жопе. Итого?
Ну, когда вечером делать нечего — бывает, подрочу, а бывает — загружу Lasarus, то-бишь IDE для Free Pascal. Тоже неплохо.
cadaber ★★
( 27.09.18 05:13:52 MSK )
Последнее исправление: cadaber 27.09.18 05:17:58 MSK (всего исправлений: 1)
MASM, TASM, FASM, NASM под Windows и Linux
В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.
MASM
Используется для создания драйверов под Windows.
По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:\masm32. Создадим программу prog11.asm, которая ничего не делает.
.586P .model flat, stdcall _data segment _data ends _text segment start: ret _text ends end start
Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.
Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)
Как сказано в Википедии
MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.
Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».
Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.
MASM с сайта Microsoft
Далее скачаем MASM (версия 8.0) с сайта Microsoft по ссылке. Загруженный файл носит название «MASMsetup.exe». При запуске этого файла получаем сообщение -«Microsoft Visual C++ Express Edition 2005 required».
Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.
MASM в Visual Studio
Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\ml.exe.
Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64 и вот здесь — C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64.
TASM
Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.
Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».
stacksg segment para stack 'stack' db 12 dup ('stackseg') stacksg ends codesg segment para 'code' begin proc far assume ss:stacksg,cs:codesg,ds:nothing push ds sub ax,ax push ax mov ax, 0123h add ax, 0025h mov bx,ax add bx,ax mov cx,bx sub cx,ax sub ax,ax nop ret begin endp codesg ends end begin
Выполним ассемблирование (трансляцию) файла abel32.asm.
Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.
Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:
Ключ /coff здесь не используется.
Линковка производится файлом link16.exe
Вот здесь приводится порядок действий, которые необходимо выполнить для запуска TASM в DOSbox. Для линковки понадобится файл DPMI16BI.OVL
FASM
В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»
Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:\fasm\fasmw.exe. В папке C:\fasm\EXAMPLES\HELLO есть файл HELLO.asm.
include 'win32ax.inc' .code start: invoke MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK invoke ExitProcess,0 .end start
Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:\fasm\INCLUDE\WIN32AX.INC’. Запускаем из меню Run → Run.
Вот ссылки на ресурсы, посвященные FASM:
FASM в Linux
Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.
Корректность работы программы можно проверить в отладчике.
Nasm
Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.
Nasm в Linux можно установить с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.
Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.
%include "stud_io.inc" global _start section .text _start: mov eax, 0 again: PRINT "Hello" PUTCHAR 10 inc eax cmp eax, 5 jl again FINISH
Выполним ассемблирование и линковку и запустим файл hello.asm.
$ nasm -f elf hello.asm $ ld hello.o -o hello $ ./hello
Для 64bit необходимо использовать команду nasm -f elf64 hello.asm
NASM для Windows
NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.
Ассемблирование:
nasm -f bin имя_файла.asm -o имя_файла.com
Ссылки на ресурсы, посвященные Nasm:
AS
Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.
Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».
Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s
.section .text .globl _start _start: movl $1, %eax movl $2, %ebx int $0x80
Выполним ассемблирование (трансляцию), линковку и запуск программы:
$ as -o gas.o gas.s $ ld -o gas gas.o $ ./gas
Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.
.section .text .globl main main: movl $1, %eax movl $2, %ebx int $0x80
Выполним ассемблирование (трансляцию), линковку и запуск программы:
$ gcc gas.s -o gas $ ./gas
Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.
P.S. Про обработку строк в ассемблере на примере создания транслятора простого «эзотерического» языка можно прочитать здесь.
P.P.S. Упрощенный ограниченный набор ассемблерных инструкций используется в учебной модели компьютера Little Man Computer, которому у меня также посвящено несколько статей ссылка.