What is assembly language
| What assembly is | |
| Where it runs | |
| Why learn it | |
| Why NASM |
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