UMBC CMSC 313, Computer Organization & Assembly Language,
Fall 2004, Section 0101
NASM on linux.gl.umbc.edu
On linux.gl.umbc.edu, you do not need to do any setting up. You should be
able to invoke NASM on the command line just by typing "nasm" as long as
"/usr/local/bin/" is in your PATH (it should be).
If you are going to install the NASM assembler on your own machine, you
should use the same version as the one installed on linux.gl.umbc.edu,
which is version 0.98.38. The CD-ROM included in the textbook might have
an older version. A copy of version 0.98.38 is available locally at:
The latest version is available from the
official NASM web site.
Suppose you have an assembly language program in a file called
"hello.asm". You can assemble it for Linux with the command:
nasm -f elf hello.asm
The "-f elf" option tells nasm to output the object code in the Executable
and Linking Format (ELF) that Linux uses. This creates an object file
called "hello.o". The object code is still not executable. To create
an executable file, we must use the linking loader "ld":
This then creates an "a.out" file that you can execute from the Linux
If the loader complains that it cannot find the entry symbol _start, it is
because you do not have a global label _start for the entry point of your
program. To fix this problem, the beginning of the code section of your
program should look like:
SECTION .text ; Code section.
_start: ; Entry point.
Another useful option in nasm is "-l" for specifying a listing file. The
nasm -f elf hello.asm -l hello.lst
which will produce a listing file named "hello.lst". The listing file
conatins both the source listing of the assembly language program and the
machine code for each assembly language operation.
The "-g" option for nasm unfortunately does next to nothing. It is supposed
to generate debugging information placed in the object file for the
debugger. However, this is still an unimplemented feature in NASM.
For more information on running NASM, consult
Chapter 2 of the online NASM
manual, or type
20 Aug 2004 15:41:46 EDT
to Fall 2004 CMSC 313 Section Homepage