ARM Assembly for Embedded Applications, 5th ed.
|
Course Materials
- Table of Contents and Preface (5th ed.)
- PowerPoint Lecture Slide Decks (by chapter)
- Chapter 1: Introduction
- Chapter 2: Binary Number Systems
- Chapter 3: Writing Functions in Assembly
- Chapter 4: Copying Data
- Chapter 5: Integer Arithmetic
- Chapter 6: Making Decisions and Writing Loops
- Chapter 7: Manipulating Bits
- Chapter 8: Multiplication and Division Revisited
- Chapter 9: Getting Started with Floating Point
- Chapter 10: Floating-Point Emulation
- Chapter 11: Fixed-Point Reals
- Chapter 12: Multimedia Processing
- Chapter 13: Composite Data Types
- Chapter 14: Inline Code
- Chapter 15: Programming Peripheral Devices
- Programming Labs (by chapter)
- ARM Instruction Worksheets
- Textbook Errata Documents
Documentation
Software
|
Pre-Recorded Lectures
|
32F429IDISCOVERY (Front)
(Part number STM32F429I-DISC1)
|
Note: This text and supporting materials were developed for a sophomore-level introductory course on assembly language programming, presented within the context of embedded applications.
Although most embedded applications are now written in a high-level language, they typically run on inexpensive processors that offer limited performance and functionality. For example,
many do not offer floating-point instructions or (in some cases) divide or multiply instructions. For that reason, embedded applications often require that time-critical portions be
implemented as functions written in assembly and called from a main program written in a language like C. This text follows that approach, presenting a number of techniques for writing
time-efficient code in assembly. The accompanying programming labs provide experience applying these techniques to the implementation of entertaining and informative applications, with
many that measure and report the number of processor clock cycles required to execute the assembly language functions or that demonstrate specific optimization techniques.
|
Page Revised: 12/17/24 09:31:42 PST
Chapter 1: Introduction to the program development environment
Code Revised: 02/14/21 19:35:44 PST
Chapter 1: Introduction to the program development environment
Code Revised: 12/07/21 10:40:03 PST
Chapters 1-2: Decimal to binary conversion, binary to decimal conversion, adding 1 in binary
Code Revised: 02/14/21 19:38:15 PST
Chapters 1-2: Converting binary to octal, hex, decimal, 2's complement and signed magnitude
Code Revised: 01/03/22 09:21:53 PST
Chapters 1-3: Parameters, return value, & functions calling functions
Code Revised: 01/15/22 17:06:14 PST
Chapters 1-3: Parameters, return value, & functions calling functions
Code Revised: 01/15/22 17:01:11 PST
Chapters 1-4: Finding the fastest way to copy a large block of data
Code Revised: 08/20/22 16:58:30 PST
Chapters 1-4: Address alignment, execution time, and the .REPT and .ENDR directives
Code Revised: 02/14/21 18:37:26 PST
Chapters 1-4: Address alignment, dependencies, overlapped execution
Code Revised: 08/20/22 08:44:41 PST
Chapters 1-5: Basic integer arithmetic, calling C function from assembly
Code Revised: 01/14/22 10:43:52 PST
Chapters 1-5: Calculating the address of a pixel & indexing into a font table
Code Revised: 08/20/22 09:32:27 PST
Chapters 1-5: Linear functions and interpolation using integer operands
Code Revised: 02/14/21 18:37:26 PST
Chapters 1-5: Linear functions using integer operands
Code Revised: 02/14/21 19:47:07 PST
Chapters 1-5: Integer arithmetic
Code Revised: 04/27/21 13:28:38 PST
Chapters 1-6: 2D subscripting, nested loops,calling C functions from assembly
Code Revised: 02/14/21 18:37:26 PST
Chapters 1-6: Recursion, decisions, function calls, parameter passing
Code Revised: 06/18/21 20:13:17 PST
Chapters 1-6: Function calls, parameter passing, loops and pointers
Code Revised: 06/18/21 20:14:31 PST
Chapters 1-6: Recursion, parameters, return value & nested functions
Code Revised: 08/20/22 09:33:30 PST
Chapters 1-6: Parameters, return value, compares, IT blocks & autoincrement
Code Revised: 08/20/22 09:33:51 PST
Chapters 1-6: One-dimensional subscripting, post-indexed addressing and loops
Code Revised: 06/18/21 20:04:46 PST
Chapters 1-7: Reversing the order of bits and bytes without using REV or RBIT instructions
Code Revised: 02/14/21 19:55:23 PST
Chapters 1-7: Bit manipulation, shift and bitwise instructions, bit-banding
Code Revised: 08/20/22 09:34:23 PST
Chapters 1-7: Shift, bitwise and bitfield instructions; address calculation with pointers
Code Revised: 02/14/21 20:00:10 PST
Chapters 1-7: Shift, bitwise and bitfield instructions; address calculation with pointers
Code Revised: 02/14/21 20:02:40 PST
Chapters 1-7: Bit manipulation, shift and bitwise instructions, bit-banding
Code Revised: 08/20/22 09:34:50 PST
Chapters 1-7: Bitwise and shift instructions, bit-banding, loops
Code Revised: 02/14/21 20:05:54 PST
Chapters 1-7: Bit manipulation, shift and bitwise instructions, nested loops
Code Revised: 06/18/21 20:17:28 PST
Chapters 1-7: Bit manipulation, shift instructions, bitfields, bit-banding
Code Revised: 02/14/21 20:07:50 PST
Chapters 1-7: Integer arithmetic, bitwise and shift instructions
Code Revised: 08/20/22 09:35:28 PST
Chapters 1-7: Bitwise and bitfield operations, arithmetic with signed magnitude integers
Code Revised: 06/21/21 09:44:51 PST
Chapters 1-8: Using instruction sequences to replace division and multiplication by a constant
Code Revised: 05/23/21 10:57:31 PST
Chapters 1-8: Using instruction sequences to replace division and multiplication by a constant; accessing structures members from assembly
Code Revised: 02/14/21 18:37:27 PST
Chapters 1-8: Using instruction sequences to replace division and multiplication by a constant
Code Revised: 02/25/21 11:53:20 PST
Chapters 1-8: Using instruction sequences to replace division and multiplication by a constant
Code Revised: 05/16/21 09:13:51 PST
Chapters 1-9: Solving quadratic equations with hardware floating-point
Code Revised: 08/20/22 09:36:12 PST
Chapters 1-9: Floating-point computation, numerical integration
Code Revised: 08/20/22 09:36:28 PST
Chapters 1-9: Floating-point arithmetic, pointer to structure
Code Revised: 08/20/22 09:36:50 PST
Chapters 1-9: Floating-point arithmetic, series approximations, Kahan summation, double floats
Code Revised: 02/14/21 20:15:58 PST
Chapters 1-9: Floating-point arithmetic and conversions, bit manipulation, loops
Code Revised: 06/18/21 20:09:11 PST
Chapters 1-9: Floating-point arithmetic
Code Revised: 06/21/21 08:20:57 PST
Chapters 1-9: Floating-point arithmetic
Code Revised: 06/21/21 08:20:34 PST
Chapters 1-10: Solving quadratic equations with software floating-point
Code Revised: 08/20/22 09:37:27 PST
Chapters 1-10: Solving quadratic equations with software posit reals
Code Revised: 08/20/22 09:37:45 PST
Chapters 1-11: Comparing performance of H/W and S/W real arithmetic to evaluate Taylor series approximations
Code Revised: 06/09/21 15:56:01 PST
Chapters 1-11: Solving quadratic equations with fixed-point reals
Code Revised: 08/20/22 09:38:09 PST
Chapters 1-11: Implementing division for Q16 fixed-point reals
Code Revised: 06/09/21 15:39:01 PST
Chapters 1-11: Q16 arithmetic, reciprocal division, Newton's method
Code Revised: 03/09/21 15:46:55 PST
Chapters 1-11: Q16 and integer square roots
Code Revised: 06/04/21 15:12:44 PST
Chapters 1-11: Q16 and floating-point representations, bit manipulation
Code Revised: 02/14/21 18:37:26 PST
Chapters 1-12: SIMD processing, finding min and max values of an array.
Code Revised: 02/14/21 18:37:26 PST
Chapters 1-12: SIMD processing, Saturating Arithmetic, Composite Data Types and Inline Assembly
Code Revised: 02/14/21 20:21:13 PST
Workspace for GNU Toolchain, including run-time library and include files required for all lab assignments
Code Revised: 12/08/22 19:26:24 PST