EmbeddedRelated.com
Books

ARM Assembly Language Programming & Architecture (Mazidi & Naimi ARM)

Mazidi, Muhammad Ali, Naimi, Sarmad, Naimi, Sepe 2016

Who uses ARM? Currently ARM CPU is licensed and produced by more than 200 companies and is the dominant CPU chip in both cell phones and tablets. Given its RISC architecture and powerful 32-bit instructions set, it can be used for both 8-bit and 32-bit embedded products. The ARM corp. has already defined the 64-bit instruction extension and for that reason many Laptop and Server manufactures are introducing ARM-based Laptop and Servers. Who will use our textbook? This book is intended for both academic and industry readers. If you are using this book for a university course, the support materials and tutorials can be found on www.MicroDigitalEd.com. This book covers the Assembly language programming of the ARM chip. The ARM Assembly language is standard regardless of who makes the chip. The ARM licensees are free to implement the on-chip peripheral (ADC, Timers, I/O, etc.) as they choose. Since the ARM peripherals are not standard among the various vendors, we have dedicated a separate book to each vendor.


Why Read This Book

You will learn ARM's core assembly language and how the architecture shapes real embedded software, giving you the skills to read, write, and optimize low-level firmware. The book combines clear pedagogy, worked examples, and exercises so you can move from conceptual architecture to hands-on assembly programming and debugging on real ARM-based targets.

Who Will Benefit

Embedded engineers, firmware developers, and computer-architecture students with some programming background who want a practical, example-driven introduction to ARM assembly and architecture for real-world embedded work.

Level: Intermediate — Prerequisites: Basic programming experience (C or another high-level language), familiarity with binary/hex notation and basic computer organization; recommended but not strictly required: introductory digital logic and microcontroller concepts.

Get This Book

Key Takeaways

  • Write and debug ARM assembly programs using the standard ARM instruction set and condition codes.
  • Explain ARM architectural concepts and variants (ARM, Thumb, Thumb-2, ARMv7/v8) and when to use each.
  • Use assembler and toolchain workflows (assemble, link, load) and run code on emulators or target boards.
  • Implement subroutines, stack-based calling conventions, and exception/interrupt handlers for bare-metal firmware.
  • Optimize assembly for performance and code size with practical techniques applicable to embedded products.

Topics Covered

  1. Introduction to ARM and RISC Principles
  2. ARM Processor Organization and Register Model
  3. Data Processing Instructions and Condition Codes
  4. Addressing Modes, Loads, and Stores
  5. Branching, Loops, and Flow Control
  6. Procedures, Stacks, and Calling Conventions
  7. Memory Alignment, Data Types, and Endianness
  8. Exceptions, Interrupts, and Supervisor Modes
  9. Thumb and Thumb-2 Instruction Sets
  10. Assembler Syntax, Directives, and Toolchain Basics
  11. Linking, Loading, and Startup Code for Bare-Metal Systems
  12. Debugging, Emulation (QEMU), and Profiling Techniques
  13. Interfacing with Peripherals: I/O, MMIO, and System Integration
  14. Appendices: Instruction Reference, Registers, and Example Programs

Languages, Platforms & Tools

ARM AssemblyCGeneric ARM (ARMv7 / ARMv8)ARM7/ARM9 familiesCortex-M (ARMv7-M)Cortex-A (ARMv7-A / ARMv8-A)Keil MDK/µVisionGNU toolchain (arm-none-eabi-gcc/as/ld)GDB (arm-none-eabi-gdb)QEMUOpenOCDARM Compiler / DS-5 (historical references)

How It Compares

Compared with Hohl's concise ARM Assembly texts and Sloss et al.'s ARM System Developer's Guide, Mazidi's volume is more classroom-friendly and example-driven, focusing on teaching assembly and core architecture rather than full system-level case studies.

Related Books