Courses
Learn assembly programming with interactive courses for M68K, MIPS, RISC-V, x86-64 and Z80. If you are new to assembly, start with Assembly basics to learn about registers, memory, branching, the stack and system calls. Then choose a language course to write your first programs and work through examples.
The lessons include code you can run in your browser. Step through a program one instruction at a time, undo steps and inspect registers and memory. Many lessons also include exercises with tests to check your solution.
Assembly basics
Learn how CPUs execute assembly programs, with examples covering registers, memory, loops, subroutines and the stack.
M68K assembly
Start with simple M68K programs, then work through arrays, subroutines, graphics and small games.
MIPS assembly
Learn MIPS through runnable examples, from calculations and strings to reading input, drawing graphics and playing sound.
RISC-V assembly
Write your first RISC-V programs, then explore arrays, subroutines and the move from 32-bit to 64-bit code.
Z80 assembly
Write Z80 programs with loops, arrays and subroutines, then use I/O ports for graphics, keyboard input and sound.
x86-64 assembly
Write Linux programs in NASM syntax, from basic instructions to function calls, system calls and vector operations.