Compiling an Assembly Program with NASM

Compiling an assembly program with NASM can be done on Linux or Windows, as NASM is available for both platforms. Netwide Assembler (NASM) is an assembler and dissembler for the Intel x86 architecture and is commonly used to create 16-bit, 32-bit (IA-32), and 64-bit (x86-64) programs.

An assemble will turn your low-level coding, using mnemonics, into machine language that can be understood by the processor. This article will not teach you to program with NASM, but to create an executable command for Linux and Windows from NASM source code.

Compiling an Assembly Program with NASM for Linux

Creating the Source File

You can use any text editor, such as Gedit, KWrite, or XEmacs, to do so. When you save your file, give it the extension .asm.

Assembling the Source File

For this step, you will need NASM software installed on your machine.

If you're running Debian or Ubuntu, simply type the command:

sudo apt-get install nasm

If you have another Linux distribution, you must use your distribution's package manager (e.g. Urpmi, Yum, Emerge) or download NASM from the official site.

Use the following command line to assemble your source file:

nasm -f elf test.asm

In the example, the saved .asm file is called test.asm. This will create a file named tes in the current directory.

N.B. This file is not executable. It is still an object file.

Creating the Executable

Now that we have our object file, named tes , we must create our executable.

, we must create our executable. Your program may begin with a procedure called _start. This means that your program has its own point of entry, without the use of the main function. However, you'll need to use the "l" to create your executable:

ld tes -o test

Alternatively, your program may begin with a procedure called main. You will need to use gcc to create your executable:

gcc tes -o test

Now, your executable is created, tested, and located in the current directory.

Program Execution

To run the program called test, just type this command:

. / test

Compiling an Assembly Program with NASM for Windows

The main function is not available under Windows and must be replaced by WinMain .

function is not available under Windows and must be replaced by . If your entry point is _start or main, it should be changed to _WinMain @ 16. Also, change the ret at the end of the procedure to ret 16:

section ext

global _WinMain@16

_WinMain@16:

mov eax, 0

ret 16

Installing the Software

You must first install NASM. Keep an archive somewhere, as it will be used later.

The most difficult step will be installing MinGW, which is a free development environment for Windows:

Start by choosing the latest version of MingGW from their website. Run the installer, but don't update at this point. Leave all options selected by default, and wait for it to install.

Now you need to insert NASM in the development environment MinGW. Unpack the NASM archive. You should get a folder containing, among other things, a file named nasme. Copy this file into the directory C: MinGW bin.

Creating a Source File

Like Linux, there is no need to use a specific publisher to create a source file for NASM. You can use Notepad . But take note that it tends to add the t extension to files it creates. To remove any ambiguity, it is recommend that you view the extensions of your files.

. But take note that it tends to add the extension to files it creates. To remove any ambiguity, it is recommend that you view the extensions of your files. In any event, avoid word processors, such as Word or WordPad .

or . If you wish, you can also use an editor that uses NASM syntax, such a NasmEdit IDE .

. Make sure your save your source file with the .asm extension.

Assembling the source file

Open the Command window by going to Start > Run and typing cmde

window by going to and typing Using the command cd, go to the folder containing your source file. Once you are in this directory, assemble your source file (test.asm) with this command:

nasm -f win32 test.asm -o tes

You have now created an object file. The next step will be to turn it into an executable file.

Creation and Execution of the Program

From your Command window, type the final command to create the executable:

ld tes -o tese

Photo by Markus Spiske on Unsplash

Hunter Jones

Hunter Jones

Next Post

Leave a Reply

Your email address will not be published. Required fields are marked *