What is assembly language

What assembly is

Assembly language is the human-readable form of machine code. Each instruction moves data, does arithmetic, or changes the flow of control, and each one maps almost one-to-one to a CPU instruction.

A program is a list of these instructions plus data, assembled by an assembler into an object file, then linked into an executable. There is no runtime, no garbage collector, and no hidden work.

Where it runs

Assembly runs everywhere a program runs: Linux, Windows, macOS, and the embedded devices around you. This course targets x86-64 on Linux, the architecture of most servers and desktops.

The classic first program writes one line to the screen and exits, using two Linux system calls:

section .data msg db "Hello from assembly", 10 len equ $ - msg section .text global _start _start: mov rax, 1 ; sys_write mov rdi, 1 ; stdout mov rsi, msg mov rdx, len syscall mov rax, 60 ; sys_exit xor rdi, rdi ; status 0 syscall

Why learn it

Assembly teaches what every other language hides: how the stack works, how a function call really happens, and why a cache miss costs hundreds of cycles. After assembly, profilers and debuggers make sense.

You will not write a web server in assembly, but you will read it when a compiler emits a surprising instruction, when you patch a binary, or when you write a boot sector.

Why NASM

NASM (Netwide Assembler) is the assembler this course uses. Its syntax is clean, its documentation is free, and it targets every x86 system in existence. GAS uses a different syntax (AT&T), and MASM belongs to Windows.

Next: Install NASM and check the version

Article author: Arthur Isaev