Next Chapter | Previous Chapter | Contents | Index
To assemble a file, you issue a command of the form
nasm -f <format> <filename> [-o <output>]
For example,
nasm -f elf myfile.asm
will assemble into an
object file
. And
nasm -f bin myfile.asm -o myfile.com
will assemble into a raw binary
file .
To produce a listing file, with the hex codes output from NASM displayed
on the left of the original sources, use the
option to give a listing file name, for example:
nasm -f coff myfile.asm -l myfile.lst
To get further usage instructions from NASM, try typing
nasm -h
This will also list the available output file formats, and what they are.
If you use Linux but aren't sure whether your system is
or , type
file nasm
(in the directory in which you put the NASM binary when you installed it). If it says something like
nasm: ELF 32-bit LSB executable i386 (386 and up) Version 1
then your system is , and you should use
the option when you want NASM to produce
Linux object files. If it says
nasm: Linux/i386 demand-paged executable (QMAGIC)
or something similar, your system is ,
and you should use instead (Linux
systems are considered obsolete, and are
rare these days.)
Like Unix compilers and assemblers, NASM is silent unless it goes wrong: you won't see any output at all, unless it gives error messages.
-o Option: Specifying the Output File NameNASM will normally choose the name of your output file for you;
precisely how it does this is dependent on the object file format. For
Microsoft object file formats ( and
), it will remove the
extension (or whatever extension you like to
use - NASM doesn't care) from your source file name and substitute
. For Unix object file formatsdesigned to be a back end to
, which always feeds it correct code. So its
error checking is minimal. Also, its syntax is horrible, from the point of
view of anyone trying to actually write anything in it. Plus you
can't write 16-bit code in it (properly).
as86 is
Linux-specific , and (my version at least) doesn't
seem to have much (or any) documentation.
DOS .
DOS-only .
So here, for your coding pleasure, is NASM. At present it's still in prototype stage - we don't promise that it can outperform any of these assemblers. But please, please send us bug reports, fixes, helpful information, and anything else you can get your hands on (and thanks to the many people who've done this already! You all know who you are), and we'll improve it out of all recognition. Again.
Please see the file , supplied as part
of any NASM distribution archive, for the licence conditions under which
you may use NASM.
The current version of NASM (since about 0.98.08) are maintained by a
team of developers, accessible through the
mailing list (see below for the link).
If you want to report a bug, please read
section 10.2 first.
NASM has a WWW page at
.
The original authors are e-mailable as
and
.
The latter is no longer involved in the development team.
New releases of NASM are uploaded to the official site
,
and to
and
.
Announcements are posted to
,
and
If you want information about NASM beta releases, and the current
development status, please subscribe to the
email lists by registering at
and
Once you've obtained the DOS archive for NASM,
(where
denotes the version number of NASM contained in the archive), unpack it
into its own directory (for example ).
The archive will contain four executable files: the NASM executable
files and
, and the NDISASM executable files
and
. In each case, the file whose name
ends in is a
executable, designed to run under or
Intel, and the other one is a 16-bit
executable.
The only file NASM needs to run is its own executable, so copy (at
least) one of and
to a directory on your PATH, or
alternatively edit to add the
directory to your
. (If you're only installing the
version, you may wish to rename it to
.)
That's it - NASM is installed. You don't need the
directory to be present to run NASM (unless
you've added it to your ), so you can delete
it if you need to save space; however, you may want to keep the
documentation or test programs.
If you've downloaded the DOS source archive,
, the
directory will also contain the full NASM source code, and a selection of
Makefiles you can (hopefully) use to rebuild your copy of NASM from
scratch.
Note that the source files ,
, and
are automatically generated from the
master instruction table by a Perl
script; the file is generated from
by another Perl script. Although the
NASM 0.98 distribution includes these generated files, you will need to
rebuild them (and hence, will need a Perl interpreter) if you change
,
or the documentation. It is possible future source distributions may not
include these files at all. Ports of Perl for a variety of platforms,
including and
, are available from
www.cpan.org.
Once you've obtained the Unix source archive for NASM,
(where
denotes the version number of NASM contained
in the archive), unpack it into a directory such as
. The archive, when unpacked, will
create its own subdirectory .
NASM is an auto-configuring package: once you've unpacked it,
to the directory it's been unpacked into and
type . This shell script will find the
best C compiler to use for building NASM and set up Makefiles accordingly.
Once NASM has auto-configured, you can type
to build the
and binaries, and then
to install them in
and install the man pages
and in
. Alternatively, you can give
options such as to the
script (see the file
for more details), or install the
programs yourself.
NASM also comes with a set of utilities for handling the
custom object-file format, which are in the
subdirectory of the NASM archive. You can
build these with and install them with
, if you want them.
If NASM fails to auto-configure, you may still be able to make it
compile by using the fall-back Unix makefile
. Copy or rename that file to
and try typing
. There is also a
file in the
subdirectory.