| Department and Course Number |
CEG 320 |
Course Coordinator | Michael L. Raymer |
| Course Title |
Computer Organization and Assembly Language Programming |
Total Credits | 4 |
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.
The student should have learned the following:
The student should be able to apply the concepts above to the following:
| 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 | -- |
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:
| Core | Advanced | Core | Advanced | |||
| Data Structures | Concepts of PL | 2.0 | ||||
| Algorithms | Comp Organization + Architecture | 2.0 | ||||
| Software Design | Other |
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.
None.
None.
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.
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.