Learn assembly language

A course for beginners that works with the debugger: every program runs step by step, and you see what the CPU does. It starts with registers and leads through jumps, memory and functions to the Windows API.

All examples exist for four architectures: i386 and x64 (Intel and AMD) as well as ARM 32 (ARM32, Thumb-2) and ARM 64 (AArch64). On every lesson you choose the architecture you are interested in at the top; the choice is kept for all lessons. The concepts are the same in all of them – only the names of the instructions and registers change. Reading two architectures side by side helps you understand both better.

What you need

The lessons

  1. Registers and the first instruction
  2. Hello, World! with printf and formats
  3. Jumps, flags and conditional jumps
  4. Loops and counting
  5. Arithmetic: add, sub, mul, div (coming)
  6. Number systems and bits (coming)
  7. Data in memory: .data and addresses (coming)
  8. Arrays and strings (coming)
  9. The stack: push and pop (coming)
  10. Functions: call and ret (coming)
  11. Arguments and calling conventions (coming)
  12. Recursion: the factorial (coming)
  13. The Windows API (coming)
  14. Reading and writing files (coming)
  15. Calculating with 64-bit numbers (coming)
  16. Interrupts: timer and DOS (coming)
  17. Reading foreign code with Dismonite (coming)
  18. Faster and shorter (coming)
  19. x64 in detail (coming)
  20. ARM in detail: conditions, Thumb-2, ARM64 (coming)

More lessons will follow. Each comes with example programs for all four architectures, exercises with solutions and a short video.