Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Course Schedule

CSC 2025 - Assembly Language & Computer Architecture

15-week lesson plan using Kip Irvine textbook with Raspberry Pi + Bob Plantz's Chapter 9 integration.

WeekTopics (Irvine Chapters & Sections)Key Activities / Labs / ProjectsOutcomes
1Ch 1: Basic Concepts (1.1-1.4) Welcome, virtual machines, data representation, Boolean algebraInstall Visual Studio + Irvine32/64 libraries
First x86-64 "Hello, world"
Number base conversion exercises
1, 2
2Ch 2: x86 Processor Architecture (all)Diagram instruction execution cycle
Compare 32-bit vs 64-bit modes
Discuss real/protected/long mode
1, 2
3Ch 3.1-3.4: Basic elements, data definition, assembling/linking, AddTwo programLab: Assemble-link-run cycle
Write & debug AddTwo + variants
1, 6, 7
4Ch 4.1-4.3: MOV, XCHG, ADD/SUB, NEG, data-related operators (OFFSET, PTR, etc.)Lab: Variables, arithmetic expressions, OFFSET/SIZEOF usage3, 6
5Ch 4.4-4.6: Indirect & indexed addressing, arrays, JMP/LOOP, 64-bit programmingLab: Sum integer array using indexed addressing (32-bit & 64-bit)3, 6
6Ch 5: Procedures (stack, PROC/CALL/RET, Irvine32 library, passing parameters)Convert array sum to procedure
Use WriteString, ReadInt, DumpRegs
6
7Ch 6: Conditional processing (flags, CMP, TEST, Jcc, finite-state machines)Lab: Signed-integer string validation (6.5.2)
Build if-then-else and while loops in assembly
3, 6, 8
8Midterm Exam (Chapters 1-6) + reviewPure x86-64 exam (no Pi yet)All so far
9Ch 7: Integer arithmetic (shifts, rotates, MUL/IMUL, DIV/IDIV, ADC/SBB)Raspberry Pi Week 1 - Plantz Ch 9 sections 1-3 (registers, MOV, ADD, LDR/STR)
Lab: Set up Pi OS 64-bit + "Hello World" via UART
Port Ch 7 multiply/divide lab to AArch64 (compare MUL vs x86 MUL)
2, 3, 4, 5
10Ch 8: Advanced procedures (stack frames, local vars, recursion, x64 calling convention)Raspberry Pi Week 2 - Plantz Ch 9 sections 4-6 (branches, procedures, stack frames)
Lab: Recursive factorial on Pi (Plantz example) + compare to x86 version
Measure recursion depth with cycle counter
2, 6
11Ch 9: Strings & arrays (MOVS/STOS/SCAS, string primitives, bubble sort, binary search)Raspberry Pi Week 3 - Plantz Ch 9 sections 7-8 (arrays, loops, syscalls)
Lab: Port bubble sort to Pi; time with CNTVCT_EL0 vs RDTSC on PC
Write short report comparing cycles & code size
4, 5, 6
12Ch 12: Floating-point (IEEE 754, FPU stack, basic instructions)Raspberry Pi Bonus - Use ARM V registers (scalar FP)
Lab: Mixed integer/FP math on Pi vs x86 SSE
Optional: Simple NEON vector add
3, 4
13Ch 10: Structures, simple macros + performance reviewLab: Define STRUCT on x86 and equivalent layout on Pi
Begin final project work
6, 8
14Review + project work timeFinal project choices (must pick one):
1. Pure x86-64 Windows program (Irvine-style)
2. Bare-metal Pi program using Plantz templates (e.g., LED Game of Life)
3. Hybrid benchmark comparing same algorithm on x86-64 vs AArch64
1-8
15Final demos & course wrap-upLive demos (Pi projects on real hardware highly encouraged)
Submit code + short reflection on x86 vs ARM differences
All outcomes

Grading Breakdown (Subject to Change)

  • Weeks 1-8 labs & midterm: 45%
  • Weeks 9-12 Pi labs: 20%
  • Weeks 13-15 Final project (x86 or Pi or hybrid): 20%
  • Attendance/Participation/reflections: 15%

Key Highlights

  • Weeks 1-8: Focus on x86-64 assembly fundamentals using Kip Irvine textbook
  • Weeks 9-12: Introduction to ARM assembly on Raspberry Pi using Bob Plantz's materials
  • Weeks 13-15: Integration and comparison projects between x86 and ARM architectures
  • Midterm: After Week 8, covering pure x86-64 content
  • Final Project: Choice of x86-only, Pi-only, or comparative analysis projects