Maricopa Community Colleges  CSC230   20066-99999 

Official Course Description: MCCCD Approval: 04/25/06

CSC230  20066-99999

L+L

4 Credit(s)

5 Period(s)

Computer Organization and Assembly Language

Assembly language programming including input/output (I/O) programming and exception/interrupt handling. Register-level computer organization, I/O interfaces, assemblers, and linkers. Processor organization and design, data path, control, pipelining, and input/output. Memory organization with cache and virtual memory. Prerequisites: [(CSC100 or CSC110) and CSC/EEE120], or permission of instructor.

Cross-References: EEE230

 

 

 

 

Go to Competencies    Go to Outline
 

MCCCD Official Course Competencies:

 

 

CSC230  20066-99999

Computer Organization and Assembly Language

 

1.

Identify the five major components of a computer system and describe how the components interact and the effect on the system as a whole. (I)

2.

Describe data representation, the instruction set, addressing modes, and register organization. (II, IV, XI, XIII)

3.

Describe execution of instructions and hardware components used in each step. (II)

4.

Manipulate data to perform arithmetic operations and floating point. (III)

5.

Measure, report, and summarize performance of a computer and describe the major factors that determine it. (IV)

6.

Describe three approaches to processor implementations: single-cycle, multi-cycle, and superscalar. (V)

7.

Describe how pipelining enhances processor performance. (VI)

8.

Describe data path, control, and branch hazards. VI)

9.

Describe virtual memory and cache organization structures. (VII)

10.

Describe data storage, networks, and peripherals. (VIII)

11.

Describe what busses are and their role in connecting the major system components. (VIII)

12.

Describe how the processor identifies different sources of interrupts and exceptions, and invokes the corresponding handler to deal with the interrupt or exception. (IX)

13.

Use all registers in assembly language programs. (X)

14.

Determine appropriate registers to use with specific assembly language commands. (X)

15.

Use addressing modes to move information and perform computations. (XI)

16.

Use conditional and unconditional branches to create loop, if-then, and case branching structures. (XII)

17.

Write call procedures with parameter passing. (XIII)

18.

Use input/output interrupts to control a hardware device. (XIV)

 

 

Go to Description    Go to top of Competencies
 

MCCCD Official Course Outline:

 

 

CSC230   20066-99999

Computer Organization and Assembly Language

 

 

I. Computer Components and Interaction

A. Component types

1. Data path

2. Control

3. Memory

4. Input

5. Output

B. Interaction

C. System effects

II. Instructions

A. Operations and operands of computer hardware

B. Instructions in the computer including logical operations and making decisions

C. Addressing for 32-bit immediates and addresses

D. Assembling, starting a program, assembler function, and optimization

E. Implementing an object-oriented language and arrays versus pointers

III. Arithmetic for Computers

A. Signed and unsigned numbers

B. Addition, subtraction, multiplication, division

C. Floating point

IV. Assessing and Understanding Performance

A. Central Processing Unit (CPU) performance and its factors

B. Evaluating performance

V. Processor: Data Path and Control

A. Logic design conventions and building a data path

B. Single, multicycle, and superscalar implementation and exceptions

C. Microprogramming: simplifying control design

D. Introduction to digital design using a hardware design language

E. Organization of a microprocessor implementation

VI. Enhancing Performance with Pipelining

A. Pipelined data path and pipelined control

B. Control, data hazards, forwarding, and stalls

C. Branch hazards and using a hardware description language to describe and model a pipeline

D. Exceptions

VII. Exploiting Memory Hierarchy

A. Measuring and improving cache performance

B. Virtual memory and common framework for memory hierarchies

VIII. Storage, Networks, and Peripherals

A. Disk storage, dependability, and networks

B. Busses and other communications between processors, memory, and input/output (I/O) devices

C. Interfacing I/O devices to the processor, memory, and operating system

D. I/O performance measures and designing an I/O system

IX. Processor, Assemblers, Linkers, and a Simulator

A. Assemblers, linkers, loading, and memory usage

B. Procedure call convention, exceptions, and interrupts

C. Use of a simulator to program an assembly language

X. Data and Register

A. Memory sizes and layout

B. Data elements and size

C. Register set organization

XI. Addressing Modes

A. Direct, absolute, and immediate modes

B. Index modes and applications to records

C. Register indirect and other available addressing modes

XII. Control-flow Instructions and Applications

A. Unconditional branches, self-relative

B. Flag-based conditional branches

1. Application to if-then-else structures

2. Application to loops

C. Indexed jumps, indirect branches, case branching

XIII. Procedure Calls and Parameter Passing

A. Call, return

B. Register, stack

C. Pointers, indirection

XIV. Introductory input/output

A. Introductory device control

B. Interrupt handling

 

Go to Description    Go to top of Competencies    Go to top of Outline