22c:16 Assembly Language and Computer Architecture


To develop an understanding of the relationship between programming and the machines we use to execute programs. This includes an understanding of the essential features of those machines, with detailed focus on one example, plus an understanding of the translation process from source language to machine languag and an understanding of the classical fetch execute model for execution of programs.

Students coming out of 18 should be able to hand translate all of the classic control structures and data structures of high level languages such as C or Pascal to an example assembly language, and they should be able to translate individual instructions from that assembly language to machine language.



Major topics:

10% A) Data Representation

  • Binary, octal and hexadecimal.

  • One's and two's complement, signed magnitude and biased representations.

  • Character codes, particularly ASCII.

  • Floating point numbers.

  • Arrays, records and pointers.

  • 10% B) Computation

  • Binary arithmetic.

  • Logical operations.

  • Floating point operations.

  • 30% C) Architecture

  • CPU, registers and memory

  • The fetch execute cycle

  • Data movement instructions

  • Arithmetic instructions

  • Conditional branches

  • Procedure calls

  • Addressing modes

  • 30% D) High level constructs

  • Iteration

  • Selection

  • The case statement

  • Arrays and Records

  • Calling sequences

  • Activation records

  • Elementary storage allocation

  • 10% E) Advanced Material

  • Support libraries

  • Macro assemblers

  • Compilation techniques

  • Input-output hardware

  • Interrupts

  • Memory management hardware

  • Programming assignments

    Five or six programming assignments plus programming snippets in homework assignments. Programming assignments will usually emphasize assembly language, but higher level languages may also be used to illustrate translation.

    course specs list
    22C:18, current or most recent offering