Nasm Tutorial

NASM (The Netwide Assembler) is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16-bit, 32-bit (IA-32) and 64-bit (x86-64) programs.

Why Learn Nasm?

Learning assembly language like Nasm gives you a deep understanding of how computers work at a low level. It's essential for performance-critical applications, reverse engineering, and understanding system internals.

Hello World in Nasm (Linux x86-64)

Here is how you can print "Hello, World!" using Nasm on a 64-bit Linux system:


section .data
    hello db 'Hello, World!', 0xa

section .text
    global _start

_start:
    ; write the string to stdout
    mov rax, 1                  ; syscall for write
    mov rdi, 1                  ; file descriptor 1 is stdout
    mov rsi, hello              ; message to write
    mov rdx, 14                 ; message length
    syscall

    ; exit the program
    mov rax, 60                 ; syscall for exit
    xor rdi, rdi                ; exit code 0
    syscall
            

This example demonstrates basic concepts like sections, system calls for writing to the console, and properly exiting the program.