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

Chapter 1

  1. Describe terms associated with computer technology.
  2. Explain Instruction Set Architecture.
  3. Explain computer arithmetic.
  4. Measure system performance.
  5. Define performance metrics.
  6. Write code with Assembly Language using control structures and loop constructs.
  7. Analyze the workings of Assemblers and Linkers.
  8. Design simple logic circuits.

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