CSCI 224: Assembly Language Programming
Course Agenda (Fall 2024)
Class | Date | Topics covered in class |
---|---|---|
1 | Wed 9/4 | 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/6 | Binary representation of signed integer numbers, sign extention of numbers, the hexadecimal system, converting numbers between binary and hex, addition in binary system. |
3 | Mon 9/9 | Representation of characters with ASCII codes, null-termitated strings, Intro to ARM Cortex microcontrollers. |
4 | Tue 9/10 | Lab 1: Getting started with Keil μVision IDE |
5 | Wed 9/11 | General structure of assembly code. |
6 | Fri 9/13 | Creating projects from template, CPU registers, input and output of strings. |
7 | Mon 9/16 | Input and output of strings and numbers, simple arithmetic, computing array sum. |
8 | Tue 9/17 | Lab 2: Input/output and arithmetic |
9 | Wed 9/18 | Allocating and initializing variables of various lengths in ROM, working with Keil debugger. |
10 | Fri 9/20 | Capitalizing every string letter, Eucledian algorithm for computing the Greatest Common Divisor (GCD). |
11 | Mon 9/23 | Implementing the GCD algorithm, output of numbers in different bases. |
12 | Tue 9/24 | Lab 3: Indirect addressing, indexing, and loops |
13 | Wed 9/25 | More on output hexadecimal numbers, implementation of the ReadInt function. |
14 | Fri 9/27 | Functions design in assembly, passing parameters to functions in registers and in stack, returning values from functions, computing factorials. |
15 | Mon 9/30 | Further examples of passing parameters to functions in registers, passing parameters by value and by reference, into to the stack frame concept. |
16 | Tue 10/1 | Passing parameters to stack by using the stack frame, printing arrays. |
17 | Wed 10/2 | Turning GCD into a function, intro to Bubble-Sort algorithm. |
18 | Fri 10/4 | Programming and tracing the Bubble Sort algorithm. |
19 | Mon 10/7 | Computing minimum and maximum array elements. |
20 | Tue 10/8 | Intro to recursion, computing factorials recursively, tracing code with debugger. |
21 | Wed 10/9 | Lab 4: Working with stack |
22 | Fri 10/11 | Lab 5: Working with recursion |
23 | Mon 10/14 | Printing strings recursively forwards and backwards, recursive implementation of GCD. |
24 | Tue 10/15 | Recursive print of arrays, recursive implementation of the Bubble sort algorithm. |
25 | Wed 10/16 | Recursive computation of a minimum element in array, recursive implementation of Selection Sort. |
26 | Fri 10/18 | Configuring microcontroller pins for input/output, Blink-A-LED project. |
27 | Mon 10/21 | Intro to LEIMER peripheral, using LETIMER channels, direct LED control by LETIMER. |
28 | Tue 10/22 | Lab 6: Working with LETIMER |
29 | Wed 10/23 | Basics of PWM, using PWM and LETIMER for LED brightness control, setting PWM duty cycle from the user input. |
30 | Fri 10/25 | Working with RTCC timer, polling RTCC interrupt flags. |
31 | Mon 10/28 | Fall break |
32 | Tue 10/29 | Fall Break |
33 | Wed 10/30 | Using RTCC alarms channels to schedule various events. |
34 | Fri 11/1 | Working with TIMER0 peripheral, Configuring port pins for input, detecting button presses, using BTN0 to toggle the on-board LED. |
35 | Mon 11/4 | Lab 7: Processing button presses |
36 | Tue 11/5 | Switch debouncing, implementing the debouncing algorithm. |
37 | Wed 11/6 | Basics of interrupt processing, working with LETIMER UF interrupt. |
38 | Fri 11/8 | Working with RTCC interrupts. |
39 | Mon 11/11 | Configuring GPIO interrupts. |
40 | Tue 11/12 | Lab 8: Processing GPIO interrupts |
41 | Wed 11/13 | Combining button interrupts with debouncing, intro to PRS. |
42 | Fri 11/15 | Programming the Reaction game, intro to the USART module. |
43 | Mon 11/18 | Using UART for sending and receiving characters, polling USART interrupt flags. |
44 | Tue 11/19 | Lab 9: Developing Terminal Library |
45 | Wed 11/20 | Processing USART interrupts for sending and receiving strings, basics of I2C communication protocol. |
46 | Fri 11/22 | Working with SI7021 temperature/humidity sensor. |
47 | Mon 11/25 | Lab 10: Working with Si7021 sensor |
48 | Tue 11/26 | Developing I2C driver and sensor driver, intro to SPI communication protocol. |
49 | Wed 11/27 | Working with accelerometer, filtering accelerometer data. |
50 | Fri 11/29 | No class (Thanksgiving) |
51 | Mon 12/2 | 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. |
52 | Tue 12/3 | Computing array sum and average of f.p. numbers, computing roots of quadratic equations. |
53 | Wed 12/4 | Comparing f.p. values, copy FPU flags to the CPU flags register, computing square roots with the bisection method. |
54 | Fri 12/6 | Computing sin(x), review of Module 7. |