NVCC College-Wide Course Content Summary

CSC 206 - Assembly Language (3 CR.)

COURSE DESCRIPTION:

Examines assembly language programming. Includes the use of macros, linkers, loaders, assemblers and interfacing assembly language with hardware components. Lecture 3 hours per week. 

Entry-Level Competencies
Prerequisite is CSC 202, Computer Science II. 

General Course Purpose
The extent to which each topic is discussed and the ordering of topics depends on facilities available. Enough assembly language details should be covered and programming projects assigned so that the student gains experience in programming in assembly language for a specific computer. However, concepts and techniques that apply for a broad range of computers should be emphasized. 

Course Objectives
Upon completion of this course, the student will be able to:

  1. Convert text into ASCII and vice versa.
  2. Represent signed decimal integers in binary, two’s complement notation, and vice versa.
  3. Write binary numbers in hexadecimal notation, and vice versa.
  4. State why and how a symbol table is used in the assembly process.
  5. Write a simple macro.
  6. Explain the purpose of a macro and how a macro is expanded in the assembly process.
  7. State the purpose of a linker and a loader, the use of libraries, as well as the reasons for and the implementation by the linker of relocatable object code.
  8. Write, assemble, link, debug, and run an assembly language program that uses the following: different addressing modes, arithmetic operations, logical operations, iteration, selection, subroutines and parameter passing, character string operations, arrays, and system calls
  9. State the mechanism of interrupt-driven I/O and the use of I/O ports.
  10. Write an assembly language subroutine that requires parameters and call it from a high-level language.

Major Topics to be Included

  1. Introduction and Review
    1. Data representation
      1. Numbers
      2. Text
    2. Computer Organization
      1. Virtual Machine concept
      2. Specifics of Machine Used in the Course
  2. Assembly Language Fundamentals
    1. Addressing
      1. Register
      2. Immediate
      3. Memory/Direct
      4. Indirect
      5. Indexed
      6. Absolute vs. Relative
    2. Operations
      1. Arithmetic
      2. Logical
      3. Data Transfer
  3. Programming
    1. Control Structures
      1. Flags
      2. Selection/Branching
      3. Iteration
    2. Subroutines
      1. Calling Methods
      2. Parameters and Passing Methods
      3. Recursive Subroutines
    3. Character String Operations
    4. Data Structure Implementation
      1. Array
      2. Record/Structure
      3. Pointer
      4. Set
    5. Input/Output
      1. Memory Mapped
      2. Direct Memory Access
    6. System Calls
  4. The Assembly Process
    1. Directives
    2. Symbol Tables
    3. Linkers and Loaders
      1. Object Module
      2. Libraries
      3. Relocation
    4. Macros
      1. Definition, Call and Expansion
      2. With Parameters
      3. Conditional
      4. Implementation
  5. Interface of Assembly Language with Hardware
    1. Interrupts
    2. Ports
  6. High-Level Language Interface
    1. Stack Frame
    2. Parameters
    3. Linking
  7. Other Topics (optional)
    1. Other Assembly Languages
      1. Single Register (Accumulator) Systems
      2. General Register Systems
      3. Stack Machines
      4. RISC versus CISC
    2. Operating System Interface
      1. Console Programming
      2. Graphical Programming
      3. Device Drivers
      4. Interrupt and Exception Handling
    3. Advance Memory Management
      1. Virtual Memory
      2. Multitasking
    4. Instruction Encoding

Suggested Time Allocation per Topic

In order to standardize the core topics of CSC 206 so that a course taught at one campus is equivalent to the same course taught at another campus, the following student-contact-hours per topic are recommended. There are normally 48 student-contact-hours per semester for a three-unit course. The last category, Other/Enhance, leaves ample time for an instructor to tailor the course to special needs or resources.

Ref  Topic  Hours  Percent 
Introduction / Review 
II  Assembly Language Fundamentals  --  -- 
    A  Addressing 
    B  Operations 
III  Programming  --  -- 
    A  Control Structures 
    B  Subroutines 
    C  Character String Operations 
    D  Data Structure Implementation 
    E  Input/Output 
    F  System Calls 
IV  Assembly Process  --  -- 
    A  Directives 
    B  Symbol Tables 
    C  Linkers and Loaders 
    D  Macros 
Interface of Assembly Language with Hardware 
VI  High-Level Language Interface 
VII  Other optional content or enhance the above  19 
  Exams and Quizzes 
  Total  48  100 


Revised: October 2003; Inquiries to mailto:tseaman@nvcc.edu