Building Your First “Hello, World!” Program in Assembly Language

Assembly language is a low-level programming language that provides a human-readable representation of machine code. It allows for precise control over a computer’s hardware and is often used for tasks that require the utmost performance or to interact directly with a computer’s architecture. In this article, we’ll guide you through the process of creating a “Hello, World!” program in Assembly language for the x86 architecture, which is one of the most widely used architectures.

Prerequisites:

  1. A text editor: You can use any text editor, but it’s recommended to use one that supports assembly language syntax highlighting, like Notepad++, Visual Studio Code, or Sublime Text.
  2. An x86 assembly language assembler: We’ll use NASM (the Netwide Assembler) in this example. Make sure to install it on your system.
  3. A compatible computer or virtual machine: Your computer or a virtual machine should be running an x86-compatible processor.

Step 1: Write the Assembly Code

Open your text editor and create a new file, then add the following assembly code:

section .data
    hello db 'Hello, World!',0  ; Null-terminated string

section .text
    global _start

_start:
    ; Write the "Hello, World!" string to stdout (file descriptor 1)
    mov eax, 4        ; syscall number for sys_write
    mov ebx, 1        ; file descriptor 1 (stdout)
    mov ecx, hello    ; pointer to the string
    mov edx, 13       ; string length
    int 0x80          ; invoke syscall

    ; Exit the program
    mov eax, 1        ; syscall number for sys_exit
    int 0x80          ; invoke syscall

This code defines a simple “Hello, World!” string in the data section and then uses system calls to write the string to the standard output (stdout) and exit the program.

Step 2: Save the File

Save the file with a .asm extension, such as hello.asm.

Step 3: Assemble the Code

Open a terminal and navigate to the directory where you saved your hello.asm file. Assemble the code using NASM with the following command:

nasm -f elf hello.asm

This command will produce an object file named hello.o.

Step 4: Link the Object File

Link the object file to create an executable binary:

ld -m elf_i386 -s -o hello hello.o

This command will produce an executable binary file named hello.

Step 5: Run Your “Hello, World!” Program

You can now run your “Hello, World!” program using the following command:

./hello

You should see the “Hello, World!” message printed on the console.

Building a “Hello, World!” program in assembly language is a fundamental step in understanding low-level programming. While it might seem complex at first, this example provides a basic introduction to assembly language and system calls on the x86 architecture. As you continue to learn assembly, you can explore more advanced topics and optimize your code for specific tasks.