Learn Assembly Language basics: x86/x64 examples, low-level programming, performance optimization, and hardware interaction. Perfect for beginners and enthusiasts.
- About and History of Assembly Language
- ARM vs x86-64 Instruction set
- Von Neumann Architecture
- Major Elements of Multi-core Computers
- Computer Components Top-level View
- Instruction Fetch and Execute Cycle
- Program flow of control without and with interrupts
- Bus Interconnection scheme
- The Decimal System
- Positional Number System
- The Binary System
- Convert between binary and decimal
- The Arithmetic and Logic Unit
- Boolean Algebra
- Logic Gates
- Data Organization: Bits, Nibbles, Words, Double Words, Quad Words and Long Words
- Logical Operation on Bits
- Sign Extension, Zero Extension, Contraction and Saturation
- Shift and Rotates
- The ASCII character encoding
- The Unicode Character Set
- hexadecimal compare table to decimal and binary
- 80x86 Addressing Modes
- Transistors and Memory in Computing
- How Transistors works
- IA-32 Architecture
- stack
- Heap
- 80x86 Register Addressing Mode
- Machine Instruction Characteristics
- Types of Operands
- The code section
- The static section
- The Read only data section
- The Storage Section
- The Var section
- The Basic Push Instruction
- The Basic pop Instruction
- Dynamic Memory Allocation and the Heap Segment
- Registors
- instruction code handling
- Constant Types
- String and Character Literal Constants
- Modifying val Objects at Arbitrary Points in Your Programs
- Using Pointers in Assembly Language
- Declaring Arrays in Your HLA Programs
- Accessing Elements of a Single-Dimensional Array
- Sorting an Array of Values
- Record Constants
- Unions
- Saving the State of the Machine
- Local and Global Symbol Types
- Pass by Value
- Pass by Reference
- Passing Parameters in Registers
- Passing Parameters on the Stack
- The mul and imul Instructions
- The div and idiv Instructions
- The cmp Instruction
- ASM program - moving immediate data
- Multiplying by a power of two
- Multiplication of Two Variables
- Multiplication of a Variable by a Constant
- Division by a Power of Two
- Arbitrary Base to Decimal
- Decimal to Arbitrary Base
- Interpreting Fixed-Point Numbers
- Fixed-Point Addition and Subtraction
- Fixed Point Multiplication
- Formats for the Powers of x
- Load-Store Single Register
- Load-Store Multiple Registers
- Moving Between Two VFP Registers
- Moving Between VFP Register and One Integer Register
- Sine Function Using Scalar Mode
- Sine Function Using Vector Mode
- Load or Store Single Structure Using One Lane
- Change Size of Elements in a Vector
- Bitwise Logical Operations
- Bitwise Logical Operations with Immediate Data
- Shift Left by Immediate
- Shift Left or Right by Variable
- Pulse Density Modulation
- Building the Interrupt-Driven Program
- A fundamental introduction to x86 assembly prorgamming - Project Nayuki (HTML)
- ARM Assembly Language Programming - Peter Knaggs (PDF) (:construction: in process)
- Assemblers And Loaders (1993) - David Salomon (PDF)
- Assembly Language Succinctly - Christopher Rose, Syncfusion Inc. (HTML, PDF, EPUB, Kindle)
- PC Assembly Language - P. A. Carter
- Programming from the Ground Up - Jonathan Bartlett (PDF)
- Ralf Brown's Interrupt List
- Software optimization resources - A. Fog
- The Art of Assembly Language (2003) - Randall Hyde (PDF) (:card_file_box: archived)
- The Grain Docs
- WebAssembly friendly programming with C/C++ - Ending, Chai Shushan, Yushih (HTML, 📦 examples)
- Wizard Code, A View on Low-Level Programming - Tuomo Tuomo Venäläinen (PDF) (:card_file_box: archived)
- x86-64 Assembly Language Programming with Ubuntu - Ed Jorgensen (PDF)
- x86 Assembly - Wikibooks
- x86 Disassembly - Wikibooks
- Zen of Assembly Language: Volume I, Knowledge (1990) - Michael Abrash
- Beginners Introduction to the Assembly Language of ATMEL-AVR-Microprocessors - Gerhard Schmidt (PDF)
- Easy 6502 - Nick Morgan
- Machine Language for Beginners - Richard Mansfield
- MIPS Assembly Language Programming Using QtSpim - Ed Jorgensen (PDF)
- Programmed Introduction to MIPS Assembly Language (CC BY-NC)
- The Second Book of Machine Language