CE12/L: Computing Systems and Assembly Language

Catalog Copy

12. Computer Systems and Assembly Language.  Introduction to computer
systems and assembly language programming and.how computers compute in
hardware and software. Topics include digital logic, number systems,
data structures, compiling/assembly process, basics of system software,
and computer architecture. May include C language. Prerequisite(s):
course 3 or 8, or Computer Science 10 or 12A or 5C or 5J or 5P, or
Biomolecular Engineering 60, or suitable programming experience;
previous or concurrent enrollment in course 12L is required.  (General
Education Code (s): IN, Q. T. Larrabee, G. Elkaim, F. Ferguson,. R.
Hughey. 5 credits.

12L. Computer Systems and Assembly Language Laboratory.  Laboratory
sequence in assembly language programming. The  basics of logic design,
both RISC and microcontroller programming. May include C language
programming.  Two two-hour laboratories per week. Prerequisite(s):
course 3 or 8, or Computer Science 10 or 12A or 5C or 5J or 5P, or
Biomolecular Engineering 60, or suitable programming experience;
previous or concurrent enrollment in course 12 is required. T. Larrabee,
G. Elkaim, F. Ferguson, R. Hughey. 2 credits.

Explanation of programming prereq:

Students need HLL programming experience to be familiar with computer systems, control statements, procedure calls, data types, and arrays to get the most out of this course.

Required skills to pass the course.

  1. Number representations, including
    1. arbitrary base conversion
    2. binary, hex, decimal, 2s C
    3. bitwise operators
    4. Binary fixed point numbers
    5. single-precision floating-point format
  2. Binary Arithmetic, including
    1. Signed magnitude add/sub
    2. Unsigned add/sub/mul
    3. Two's compliment add/sub/mul
    4. IEEE floating point add/sub/mul
  3. Computing Systems
    1. Basic logic gates (and, or, not, xor)
    2. Determining the function of simple combinational circuits
    3. Adder and mux logic blocks
    4. Assembly language programming
    5. Arithmetic and bitwise operations b. Procedure calls
    6. Stack & memory operations
    7. Assembly implementation of "C" control structures
  4. An understanding of acceptable and unacceptable collaboration, the need to ensure permission to collaborate in a class, and an automatic urge to acknowledge collaborators and others who have assisted in a project.

Core topics (must be taught)

  1. Assembly language programming including
    1. Arithmetic and bitwise operations
    2. Arrays, stacks, and queues
    3. Procedure calls
    4. Addressing modes
    5. Both CISC and RISC architectures
  2. An understanding of basic computing systems including
    1. Basic logic gates and/or/xor/not
    2. Basic logic blocks (adder, mux)
    3. Registers, memory, CPU, I/0
    4. Steps to execute an instruction
    5. data structures
  3. Binary arithmetic
    1. Signed magnitude add/sub
    2. Unsigned add/sub/mul/div
    3. Two's compliment add/sub/mul
    4. Floating point add/sub/mul
  4. Number representations, including
    1. Arbitrary base conversion
    2. Binary, hex, decimal, 2s C
    3. Bitwise operators d. Binary fixed point numbers
    4. Arbitrary bases (e.g., 3, 60)
    5. Biased representation
    6. IEEE Floating point format
  5. HLL language - basic coverage of C
    1. Syntax
    2. Data types
    3. Procedure calls
    4. Arithmetic/bitwise operations
  6. An understanding of basic system software including
    1. Assembly and compilation
    2. Loading and linking
    3. The basic functions of the operating system
  7. Interrupts and I/O
    1. Causes of interrupts
    2. Interrupt service routines
    3. Memory mapped I/O

Optional topics

  1. Contemporary architecture examples
  2. Cache and virtual memory
  3. Floating point arithmetic in more detail

Core lab exercises

  1. Programming the HC 11 microkits
  2. Writing a program that uses interrupts
  3. Writing programs that perform bit and base conversion
  4. Writing programs with formal procedure calls
  5. Interfacing assembly language with high-level language
  6. Looking at compiler-generated assembly language
  7. For all labs, a coding and documentation standard (e.g., README files) that emphasizes the problem that is being solved, the inputs and outputs to the code, interesting aspects of the assignment, and credit to those who helped enable the completion of the assignment.

Optional lab exercises

  1. Advanced use of the HC11 microkits
  2. Advanced data structure manipulation
  3. Programming floating-point arithmetic
  4. Bit-mapped graphics for HC11 microkits

Comments on following courses

CE110 Computer Architecture covers IEEE floating point thoroughly 12C must spend sufficient time on the basics (number systems etc) to ensure minimal overlap. Uses RISC (MIPS) architecture. 110 covers more advanced arithmetic like Booth's algorithm.

CE121 Microprocessor System Design requires interrupts and HC11 ASM.

CS111 Operating Systems depends on knowledge of organization, virtual memory, and interrupt programming.

CS104A/B Compilers currently teaches and uses RISC-type assembly language


Patt & Patel, "Introduction to Computing Systems: from bits to gates to C & beyond", 2/e, McGraw Hill, 2004. ISBN: 0-07-246750-9

Motorola, "HC11 Programming Reference Guide". Essential. We get copies free from Motorola; advise students to hold on to until 121.

Motorola, "HC11 Reference Manual". A classic. We get copies free from Motorola; advise students to hold on to until 121.

Carey, McIntire, Ferguson, and Hughey, "Computer Engineering 12C laboratory Manual".

Prepared by Richard Hughey, 2/02
Revised 5/02
Revised 5/03
Revised 12/03
Revised 6/09