Introduction
  • Introduction
  • Set up
Introduction to ARM Assembly Language
  • The Computing Device
  • Number Systems
  • Assembly Tools
  • Translating Bits to Commands
  • Assembly Syntax
ARM Design Philosophy and RISC Architecture
  • 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
The Programmer's Model
  • 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
Assembler Rules and Directives
  • 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
Load-Store Instructions
  • 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
Dealing with Constants and Literals
  • 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
Arithmetic and Logic Instructions
  • 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
Branch and Loop Instructions
  • Introduction to Branches and Loops
  • Branching
  • Compare and Branch
  • Loops in Assembly
  • Conditional Execution