Table of Contents

1.1 ASCII and Unicode
1.2 Unsigned binary numbers
1.3 Signed binary numbers: Two’s complement
1.4 Binary, hexadecimal, and octal
1.5 General number bases
1.6 Floating-point numbers
1.7 Floating-point arithmetic
1.8 Arrays
1.9 Records
1.10 Graphics
1.11 Image and video data
1.12 Audio
1.13 Naming numerous bits

2.1 Programmable processor concept
2.2 lw, sw: Load and store instructions
2.3 Memory alignment and endianness
2.4 addi, add: Add instructions
2.5 Comments
2.6 A small assembly program
2.7 sub, mul: Subtraction and multiplication instructions
2.8 beq, bne, j: Branch and jump instructions
2.9 slt: Set on less than instruction
2.10 Input / output

3.1 jal, jr: Subroutine instructions
3.2 Assembly program example: Subroutines
3.3 Load and store with offsets
3.4 Subroutines and the program stack
3.5 Machine instructions
3.6 Jump/branch immediates
3.7 Assemblers
3.8 Flowcharts and assembly programming
3.9 MIPSzy instruction summary

4.1 Assignments
4.2 Expressions
4.3 Conserving registers
4.4 If-else
4.5 If-else expressions
4.6 Loops
4.7 Functions
4.8 Arrays and strings
4.9 Compilers

5.1 Review: Combinational circuits
5.2 Review: Decoders, muxes, and adders
5.3 Review: Timing diagrams
5.4 Review: Registers
5.5 Review: Register files
5.6 Base MIPSzy (lw, sw, addi, add): Behavior
5.7 Base MIPSzy: Processor design
5.8 Base MIPSzy + sub
5.9 Base MIPSzy + j / jal
5.10 Base MIPSzy + beq/bne
5.11 Base MIPSzy + slt
5.12 Base MIPSzy : Verilog
5.13 Base MIPSzy : VHDL

6.1 SRAM and DRAM
6.2 Chip economics
6.3 Composing memory
6.4 Cache basics: Part 1
6.5 Cache basics: Part 2
6.6 Set-associative cache
6.7 Memory hierarchy
6.8 Review: nMOS transistors
6.9 RAM design
6.10 ROM design
6.11 Virtual memory
6.12 Error detection
6.13 Data compression

7.1 Memory-mapped I/O
7.2 Interrupts
7.3 Polled and vectored interrupts
7.4 Handshaking
7.5 Buses
7.6 Arbitration
7.7 Direct memory access (DMA)
7.8 Serial communication

8.1 MIPSzy C simulator

An approachable introduction to computer organization

Introduction to Computer Systems and Assembly Programming introduces fundamental concepts on a simple yet practical MIPS subset (MIPSzy), demonstrating and teaching how to translate C constructs to MIPSzy assembly, digital design, memory concepts, input/output concepts, and more. 

  • Shows how to design the MIPSzy processor using single-cycle execution
  • Includes a built-in MIPSzy (and MIPS) simulator
  • Integrated with over 100 auto-generated, auto-graded homework exercises
  • Adopters have access to a test bank with over 200 questions

How this zyBook works:

What is a zyBook?

Introduction to Computer Systems and Assembly Programming is a web-native, interactive zyBook that helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)

Since 2012, over 1,700 academic institutions have adopted digital zyBooks to transform their STEM education.

zyBooks benefit both students and instructors:

  • Instructor benefits
  • Customize your course by reorganizing existing content, or adding your own content
  • Continuous publication model updates your course with the latest content and technologies
  • Robust reporting gives you insight into students’ progress, reading and participation
  • Save time with auto-graded labs and challenge activities that seamlessly integrate with your LMS gradebook
  • Build quizzes and exams with hundreds of included test questions
  • Student benefits
  • Learning questions and other content serve as an interactive form of reading
  • Instant feedback on labs and homework
  • Concepts come to life through extensive animations embedded into the interactive content
  • Review learning content before exams with different questions and challenge activities
  • Save chapters as PDFs to reference the material at any time

Authors

Frank Vahid
Computer Science PhD, Univ. of California, Irvine / zyBooks Co-Founder

Roman Lysecky
Professor Emeritus of Electrical and Computer Engineering, Univ. of Arizona

Instructors: Interested in evaluating this zyBook for your class?