CSCI 224: Assembly Language Programming
Course Agenda (Fall 2025)
| Class | Date | Topics covered in class |
|---|---|---|
| 1 | Wed 9/3 | Getting started: syllabus, grading policy, course outline, online services, submission of assignments, place of assembly language, binary representation of integer numbers, converting integers from decimal to binary and back. |
| 2 | Fri 9/5 | Binary representation of signed integer numbers, sign extention of numbers, the hexadecimal system, converting numbers between binary and hex, addition in binary system, intro to ARM Cortex microcontrollers. |
| 3 | Mon 9/8 | Representation of characters with ASCII codes, null-termitated strings, general structure of assembly code. |
| 4 | Tue 9/9 | Lab 1: Getting started with Keil μVision IDE |
| 5 | Wed 9/10 | Creating projects from template, CPU registers, input and output of strings and numbers. |
| 6 | Fri 9/12 | Indirect addressing, printing arrays of numbers. |
| 7 | Mon 9/15 | Performing simple arithmetic, computing array sums, computing string length. |
| 8 | Tue 9/16 | Lab 2: Input/output and arithmetic |
| 9 | Wed 9/17 | Allocating and initializing variables of various lengths in ROM, working with Keil debugger. |
| 10 | Fri 9/19 | Eucledian algorithm for computing the Greatest Common Divisor (GCD). |
| 11 | Mon 9/22 | Output of numbers in different bases. |
| 12 | Tue 9/23 | Lab 3: Indirect addressing, indexing, and loops |
| 13 | Wed 9/24 | Implementation of the ReadInt function. |
| 14 | Fri 9/26 | Functions design in assembly, passing parameters to functions in registers by value and by reference, returning values from functions. |
| 15 | Mon 9/29 | passing parameters to functions in stack, the stack frame concept, the GCD function design, intro to Bubble-Sort algorithm. |
| 16 | Tue 9/30 | Lab 4: Working with stack |
| 17 | Wed 10/1 | Printing arrays, programming and tracing the Bubble Sort algorithm. |
| 18 | Fri 10/3 | Computing minimum and maximum array elements, programming Selection Sprt algorithm. |
| 19 | Mon 10/6 | Intro to recursion, computing factorials recursively, tracing code with debugger. |
| 20 | Tue 10/7 | Lab 5: Working with recursion |
| 21 | Wed 10/8 | Recursive implementation of GCD. |
| 22 | Fri 10/10 | Printing strings recursively forwards and backwards. |
| 23 | Mon 10/13 | Recursive print of arrays, recursive implementation of the Bubble sort algorithm. |
| 24 | Tue 10/14 | No class |
| 25 | Wed 10/15 | Configuring microcontroller pins for input/output, Blink-A-LED project. |
| 26 | Fri 10/17 | Intro to LEIMER peripheral, blink LED with LETIMER. |
| 27 | Mon 10/20 | Fall break |
| 28 | Tue 10/21 | Fall break |
| 29 | Wed 10/22 | Using LETIMER channels, direct LED control by LETIMER, intro to PWM. |
| 30 | Fri 10/24 | Using PWM and LETIMER for LED brightness control, setting PWM duty cycle from the user input. |
| 31 | Mon 10/27 | Working with BURTC and RTCC timer, polling RTCC interrupt flags. |
| 32 | Tue 10/28 | Lab 7: Processing button presses |
| 33 | Wed 10/29 | Switch debouncing, implementing the debouncing algorithm. |
| 34 | Fri 10/31 | Basics of interrupt processing, working with LETIMER UF interrupt and with RTCC CNTTICK interrupt. |
| 35 | Mon 11/3 | Working with RTCC channel interrupts, configuring GPIO interrupts. |
| 36 | Tue 11/4 | Lab 8: Processing GPIO interrupts |
| 37 | Wed 11/5 | Combining button interrupts with debouncing, intro to PRS. |
| 38 | Fri 11/7 | Programming the Reaction game. |
| 39 | Mon 11/10 | Intro to the USART module, using UART for sending and receiving characters, polling USART interrupt flags. |
| 40 | Tue 11/11 | Lab 9: Developing Terminal Library |
| 41 | Wed 11/12 | Processing USART interrupts for sending and receiving strings. |
| 42 | Fri 11/14 | Basics of I2C communication protocol. |
| 43 | Mon 11/17 | Developing I2C driver and sensor driver. |
| 44 | Tue 11/18 | Lab 10: Working with Si7021 sensor |
| 45 | Wed 11/19 | Intro to SPI communication protocol, working with accelerometer, filtering accelerometer data. |
| 46 | Fri 11/21 | More details on accelerometer setup, applications of accelerometers. |
| 47 | Mon 11/24 | Working with accelerometer interrupt, working with non-volatile SPI flash. |
| 48 | Tue 11/25 | The f.p. format details, overview of ARM FPU instructions, using ARM FP co-processor, input/output of f.p. numbers, retargeting standard I/O. |
| 49 | Wed 11/26 | Computing array sum and average of f.p. numbers, computing roots of quadratic equations. |
| 50 | Fri 11/28 | No class (Thanksgiving) |