Department and Course Number

CEG 320

Course Coordinator Michael L. Raymer
Course Title

Computer Organization and Assembly Language Programming

Total Credits 4

Catalog Description

Terminology and understanding of functional organizations and sequential operation of a digital computer. Program structure, and machine and assembly language topics including addressing, stacks, argument passing, arithmetic operations, traps, and input/output. Macros, modularization, linkers, and debuggers are used. 4 credit hours. Prerequisites: CEG 260, and CS 242.

Text Books
V. Carl Hammacher, Zvonko G. Vranesic and Safwat G. Zaky, Computer Organization (4th Ed.), 1996: McGraw-Hill. ISBN 0-07-114309-2.
Motorola 68000 family Programmer's Reference Manual, 1992, Motorola, Inc.
Home Page
www.wright.edu/~michael.raymer/courses/ceg320/current/index.htm
News Group
None

Course Goals

The student should have learned the following:

  1. Binary and hexadecimal number systems, 2's complement arithmetic
  2. CPU organization and sequential control
  3. Memory organization and addressing modes
  4. Parameter passing and the stack
  5. I/O concepts, interrupts and polling, DMA
  6. Memory, cache, and virtual memory

The student should be able to apply the concepts above to the following:

  1. Develop, test and debug programs Motorola 68000 assembly language.
  2. Understand and use the stack to pass parameters to subroutines.
  3. Understand the relationship between high-level code and the resulting assembly code
  4. Interface with I/O devices. Write simple polled and interrupt-driven I/O device drivers in assembly language.

Prerequisites by Topic

  1. Fluency in C/C++
  2. Comfortable using program development tools including editors, compilers, linkers, and debuggers
  3. Basic data types and pointers
  4. Data structures: Arrays, Stacks, and Lists
  5. Programming of subroutines, and familiarity with various modes of parameter passing (by value, by reference, etc.)
  6. Arithmetic and logic operations on binary numbers

Major Topics Covered in the Course

Wk Lectures Read (Hamacher)
1 Number systems review, complement arithmetic 6.1 - 6.4
2 Intro to computer organization, assembly, and RTL 1.1 - 1.8
3 Assembly language programming and addressing modes 2.1 - 2.5
4 CPU details and control sequencing 3.1-3.6
5 The Motorola 68000 CPU, Midterm #1 2.9 - 2.14
6 Advanced addressing modes and flow control 2.15 - 2.16
7 Subroutines and the stack handouts (also on web)
8 I/O devices, polling, interrupts, DMA 4.1 - 4.7
9 Memory, virtual memory, cache 5.1 - 5.7
A Intel x86 processor organization, special topics --

Laboratory Projects

Five laboratory projects are assigned during the course. These assignments comprise 25% of the course grade, and require the student to put the concepts learned in class into practice by writing functional assembly language programs. The laboratories are graded according to the following criteria:

The emphasis of each laboratory is as follows:

Estimate CSAB Category Content

Core Advanced Core Advanced
Data Structures Concepts of PL 2.0
Algorithms Comp Organization + Architecture 2.0
Software Design Other

Oral and Written Communications

There are no oral presentations.  Students submit source code of their projects along with header comments that highlight the design and implementation details of their program. We do not claim that the header comments constitute written communications.

Social and Ethical Issues

None.

Theoretical Content

None.

Problem Analysis

Each laboratory project involves a problem analysis component. Objectives for each assignment are described in the lab specifications. Students must design a high-level language or pseudo-code algorithm that satisfies the problem requirements, and then implement this code in assembly language in as efficient a manner as possible.

Solution Design

Design and implementation of an appropriate and efficient algorithm is the most significant portion of each laboratory project. The list of assembly language instructions and addressing modes available grows with each project, and students are expected to utilize the instructions and concepts from the course lectures to implement functional, efficient programs.