Assembly Language Programming : Arm Cortex-M3

  • ISBN13:


  • ISBN10:


  • Format: Hardcover
  • Copyright: 2012-02-13
  • Publisher: Iste/Hermes Science Pub

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

Purchase Benefits

  • Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $106.95 Save up to $16.04
  • Rent Book $90.91
    Add to Cart Free Shipping


Supplemental Materials

What is included with this book?

  • The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
  • The Rental copy of this book is not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.


ARM designs the cores of microcontrollers which equip most "embedded systems" based on 32-bit processors. Cortex M3 is one of these designs, recently developed by ARM with microcontroller applications in mind. To conceive a particularly optimized piece of software (as is often the case in the world of embedded systems) it is often necessary to know how to program in an assembly language. This book explains the basics of programming in an assembly language, while being based on the architecture of Cortex M3 in detail and developing many examples. It is written for people who have never programmed in an assembly language and is thus didactic and progresses step by step by defining the concepts necessary to acquiring a good understanding of these techniques.

Author Biography

Vincent Mahout obtained a PhD at Toulouse University (INSA), France in 1992. He has taught automatic control and hardware computing in this establishment since 1990. His field of research is the robust control law for nonlinear systems.

Table of Contents

Prefacep. ix
Overview of Cortex-M3 Architecturep. 1
Assembly language versus the assemblerp. 1
The world of ARMp. 2
Cortex-M3p. 3
The Cortex-M3 core in STM32p. 7
The Core of Cortex-M3p. 15
Modes, privileges and statesp. 15
Registersp. 17
Registers R0 to R12p. 19
The R13 register, also known as SPp. 19
The R14 register, also known as LRp. 20
The R15 or PC registerp. 21
The xPSR registerp. 22
The Proper Use of Assembly Directivesp. 25
The concept of the directivep. 25
Typographic conventions and use of symbolsp. 26
Structure of a programp. 27
The AREA sectionsp. 28
A section of codep. 29
Labelsp. 29
Mnemonicp. 31
Operandsp. 32
Commentsp. 34
Procedurep. 35
The data sectionp. 36
Simple reservationp. 36
Reservation with initializationp. 37
Data initialization: the devil is in the detailsp. 39
Is that all?p. 39
Memory management directivesp. 40
Project management directivesp. 41
Various and varied directivesp. 44
Operands of Instructionsp. 47
The constant and renamingp. 48
Operands for common instructionsp. 49
Use of registersp. 49
The immediate operandp. 53
Memory access operands: addressing modesp. 57
The pointer conceptp. 58
Addressing modesp. 59
Instruction Setp. 63
Reading guidep. 63
List of possible "condition" suffixesp. 65
Arithmetic instructionsp. 66
Logical and bit manipulation instructionsp. 70
Internal transfer instructionsp. 75
Test instructionsp. 76
Branch instructionsp. 77
Load/store instructionsp. 80
Simple transfersp. 80
Multiple transfersp. 82
Access to the system stackp. 84
"System" instructions and othersp. 85
Algorithmic and Data Structuresp. 87
Flowchart versus algorithmp. 87
Alternative structuresp. 89
Simple (or shortened) alternativep. 89
Complete alternativep. 90
Special case of the alternativep. 93
Multiple choicep. 94
Iterative structuresp. 98
The Repeat...Until loopp. 98
The While...Do loopp. 102
The For ... loopp. 105
Compound conditionsp. 106
Alternative with ANDp. 107
Iteration with ANDp. 108
Alternative with ORp. 109
Iteration with ORp. 110
Data structurep. 111
Table in one dimensionp. 111
Tables in multiple dimensionsp. 112
Registrationp. 113
Non-dimensional table, character stringp. 113
Queuep. 114
Stackp. 115
Internal Modularityp. 119
Detailing the concept of procedurep. 119
Simple callp. 119
Nested callsp. 119
"Red wire" examplep. 121
Procedure argumentsp. 123
Usefulness of argumentsp. 123
Arguments by value and by referencep. 123
Passing arguments by general registersp. 123
Passing arguments by a stackp. 126
Passing arguments by the system stackp. 133
On the art of mixingp. 136
Local datap. 136
Simple reservation of local datap. 137
Using a chained listp. 143
Managing Exceptionsp. 147
What happends during Reset?p. 148
Possible exceptionsp. 151
Trapsp. 153
Interruptsp. 159
Priority managementp. 161
Priority levels and sublevelsp. 162
The nested mechanismp. 166
Entry and return in exception processingp. 167
Re-routingp. 167
Returnp. 169
"Tail-chaining" and "Late-arriving"p. 169
Other useful registers for the NVICp. 170
From Listing to Executable: External Modularityp. 173
External modularityp. 175
Generic examplep. 175
Assembly by piecesp. 178
Advantages of assembly by piecesp. 178
External symbolsp. 179
IMPORT and EXPORT directivesp. 181
The role of the assemblerp. 182
Files produced by the assemblerp. 183
Placement countersp. 185
First pass: symbol tablep. 185
Second pass: translationp. 186
Relocation tablep. 187
The role of the linkerp. 188
Functioning principlep. 188
The products of the linkerp. 190
The loader and the debugging unitp. 196
Appendicesp. 199
Instruction Set - Alphabetical Listp. 201
The SysTick Timerp. 209
Example of a "Bootstrap" Filep. 217
The GNU Assemblerp. 227
Bibliographyp. 239
Indexp. 241
Table of Contents provided by Ingram. All Rights Reserved.

Rewards Program

Write a Review