- Introduction
- Set up
- The Computing Device
- Number Systems
- Assembly Tools
- Translating Bits to Commands
- Assembly Syntax
- The RISC Design Philosophy
- The ARM Design Philosophy
- Embedded Systems with ARM Processors
- ARM Bus Technology and AMBA Bus Protocol
- Memory
- Peripherals
- Von Nuemann and Harvard architecture
- Cache and Tightly Couple Memory
- Memory Management extensions
- Co-processor extensions
- Data Types
- Processor Modes
- ARM7TDMI Registers
- ARM7TDMI Vector Table
- ARM Cortex-M Registers
- ARM Cortex-M Vector Table
- ARM Data Flow Model
- The Pipeline
- ARM Processor Family
- ARM Cortex-A and Cortex-R
- ARM Cortex-M
- Section Summary
- Structure of an Assembly Module
- The ARM,Thumb and Thumb-2 Instruction Sets
- Predefined Register Names
- Frequently used Directives
- Coding : Simple Assembly Project with Startup File
- Coding : Importance of the Reset_Handler
- Coding : Simple Assembly Project without Startup File
- Coding : Allocating space in memory with the SPACE Directive
- Overview of Binary Operators
- Coding : Swapping Register Content
- Coding : Renaming Registers
- Memory Demarcations
- Frequently used Load/Store Instructions (Part I)
- Frequently used Load/Store Instructions (Part II)
- Frequently used Load/Store Instructions (Part III)
- Resource Download
- Pre-Indexed Addressing
- Post-Indexed Addressing
- Endianness
- Defining Memory Areas
- Coding : Copying Data from One Memory Location to Another
- The Encoding of the MOV Instruction
- The ARM Rotation Scheme
- Loading Constants with the LDR Instruction
- Loading Constants with the MOVW and MOVT Instructions
- Loading Labels with ADR, ADRL and LDR Instructions
- Coding : Solving a Simple Equation Method 1
- Coding : Solving a Simple Equation Method 2 - Storing Constants in Memory
- Coding : Solving a Simple Equation Method 3 - Using Register Relative Addressing
- Coding : Solving a Simple Equation Method 4 - Compact Code
- Flags
- The N and V Flags
- The Z and C Flags
- Compare/Test Instructions
- Overview of Boolean Operations
- Coding : Experimenting with the PSR Flags
- Coding : Experimenting with the Carry Flag
- Coding : Experimenting with the Overflow Bit
- Introduction to Shifts and Rotations
- Understanding Logical Shifts
- Understanding Rotations
- Some Shift and Rotate Examples
- Coding : Experimenting with the Logical Shift Left Instruction
- Overview Addition and Subtraction Instructions
- Coding : Finding the Maximum Value in a Dataset
- Coding : Adding Signed Data
- Coding : Finding the Minimum Signed Data
- Overview of Saturated Math Instructions
- Overview of Multiplication Instructions
- Multiplying by Constants
- Coding : Solving a More Complex Equation
- Overview of the Division Instruction
- Coding : Performing Division by Subtraction
- Overview of DSP Instructions
- Fractional Notation
- Bit Manipulation Instructions
- Understanding Q Notation
- Introduction to Branches and Loops
- Branching
- Compare and Branch
- Loops in Assembly
- Conditional Execution