ARM: Overview

by David Thomas on

Training Courses

These pages contain two training courses originally written to introduce my former colleagues at Picsel to the joys of programming in ARM assembly language.

The two courses are:

The courses were presented to over 70 engineers in the UK (Glasgow, Edinburgh, Reading), Malaysia (Kuala Lumpur) and Korea (Seoul).

Each course would usually take three hours to deliver. The course would be presented sandwich style: two lecture parts and a delicious centre filling where the student gets to experiment with some small routines.

Some caveats

The courses have been (steadily, manually) converted across from the original PowerPoint slides and separate trainer’s notes sheet I used when presenting the courses. This may show in the terseness of some of the pages. Detail is usually sacrificed for the sake of making a point.

Some closely related sections have been merged together; some have been left separate. Some of the pages are of substantially different lengths.

Over time I’ll rework the content to better suit its new format.


The courses were written for an environment where the ARM Developer Suite (ADS) was available, so all of the assembly examples use ARM’s assembly language format. If you intend to try the examples on a more affordable compiler, such as GCC you will need to use GNU ARM assembly language syntax.

The assembly language examples were compiled with (the now very old pair of) ADS 1.2’s armcc and GCC 2.95.2. You will find that other compilers produce different code, of varying quality. (In my experience WinCE’s compiler in particular generates some particularly poor code).


Many thanks go to the following kind souls for reviewing the content and making suggestions:


ARM© is a trademark of ARM.