Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License Version 1.1 ; with no Invariant Sections, with no Front-Cover Texts, and no Back-Cover texts.

The latest version of this document is available from http://asm.sourceforge.net/intro.html If you are reading a few-months-old copy, please check the url above for a new version.

Tools you need

You will need several tools to play with programs included in this tutorial.

First of all you need the assembler (compiler). As a rule modern UNIX distributions include as (or gas), but all of the examples here use another assembler -- nasm (Netwide Assembler). It comes with full source code, and you can download it from the nasm page, or install it from the ports (or package) system. Compile it, or try to find precompiled binary for your OS; note that several distributions (at least Linux ones) already have nasm, check first.

Second, you need a linker -- ld, since assembler produces only object code. All distributions with the compilation tools installed will have ld.

If you're going to dig in, you should also install include files for your OS, and if possible, kernel source.

Now you should be ready to start, welcome..