This document provides an overview of the ARM Cortex M3 instruction sets and assembly programming. It begins by explaining why assembly is commonly used, including the need for detailed control flow and efficiency. The outline presented covers assembly basics, instructions, useful instructions, and assembly and C language programming. It then discusses the various instruction sets of the Cortex M3 with examples. Specific instructions covered include data processing, branch, load/store, and 32-bit instructions. It also notes instructions not supported by the Cortex M3 such as coprocessor, state change, and hint instructions.