Active Outline

General Information


Course ID (CB01A and CB01B)
CIS D21JB
Course Title (CB02)
Advanced x86 Processor Assembly Programming
Course Credit Status
Credit - Degree Applicable
Effective Term
Fall 2021
Course Description
This course covers the theory and application of advanced assembly programming techniques, with emphasis on multi-module programs, interrupt level programming, recursive and re-entrant techniques, floating-point processing, interface with the OS and high-level language.
Faculty Requirements
Course Family
Not Applicable

Course Justification


This is a second course in the Assembly Language Programming series of courses. It is a required transfer course for some of the CSUs and UCs, and is transferable to all CSUs and UCs. The course is also an elective in the Systems Programming AA Degree and Certificate of Achievement-Advanced.

Foothill Equivalency


Does the course have a Foothill equivalent?
No
Foothill Course ID

Course Philosophy


Formerly Statement


Course Development Options


Basic Skill Status (CB08)
Course is not a basic skills course.
Grade Options
  • Letter Grade
  • Pass/No Pass
Repeat Limit
0

Transferability & Gen. Ed. Options


Transferability
Transferable to both UC and CSU

Units and Hours


Summary

Minimum Credit Units
4.5
Maximum Credit Units
4.5

Weekly Student Hours

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.0

Course Student Hours

Course Duration (Weeks)
12.0
Hours per unit divisor
36.0
Course In-Class (Contact) Hours
Lecture
48.0
Laboratory
18.0
Total
66.0
Course Out-of-Class Hours
Lecture
96.0
Laboratory
0.0
NA
0.0
Total
96.0

Prerequisite(s)


CIS D21JA

Corequisite(s)


Advisory(ies)


Limitation(s) on Enrollment


Entrance Skill(s)


General Course Statement(s)


Methods of Instruction


Lecture and visual aids

Discussion of assigned reading

Discussion and problem solving performed in class

Quiz and examination review performed in class

Homework and extended projects

Collaborative learning and small group exercises

Laboratory discussion sessions and quizzes that evaluate the proceedings weekly laboratory exercises

Assignments


  1. Reading from text and lecture notes
  2. Homework assignments to practice assembly code for macros, procedures, OS interface, high level language interface, floating point processing, and interrrupt routine
  3. 4 - 7 programming homework assignments of assembly code. Each assignment is to include one or more of the following topics:
    1. Multiple control structures
    2. Use of OS routines and user-defined macros and procedures
    3. Interrupt level I/O
    4. Reentrant and recursive modules
    5. Interface assembly code with C/C++ code

Methods of Evaluation


  1. Evaluation of programming assignments for completeness, correctness, and efficiency of x86 assembly code and design
  2. Evaluation of homework assignment for completeness and correctness of x86 assembly code analysis, debugging, and development
  3. One or more written midterm exams that include programming problems to determine proficiency in analyzing and debugging code that links to high level languages and to the operating system.
  4. A comprehensive exam that include programming problems to determine proficiency in analyzing and debugging code that links to high level languages and to the operating system.

Essential Student Materials/Essential College Facilities


Essential Student Materials: 
  • None.
Essential College Facilities:
  • Computer lab with x86 based computers running the Windows Operating System and MASM Assembler

Examples of Primary Texts and References


AuthorTitlePublisherDate/EditionISBN
Irvine, Kip. "Assembly Language for x86 Processors", 8th Edition. ISBN: 978-0135381656, Prentice-Hall, 2019

Examples of Supporting Texts and References


AuthorTitlePublisher
Intel 64 and IA-32 Architectures Software Developers's Manuals. http://developer.intel.com/products/processor/manuals/index.htm

Learning Outcomes and Objectives


Course Objectives

  • Design multiple control sections and DLL compatibility in a program
  • Apply system modules and subroutines
  • Code and implement advanced macro concepts
  • Analyze and implement floating point data
  • Design and implement I/O programming
  • Design and implement re-entrant modules
  • Design and implement recursive modules
  • Code real time modules.
  • Link assembly to high level languages
  • Investigate extended capabilities of x86 architecture

CSLOs

  • Design, code, document, analyze, debug, and test advanced level assembly programs for the x86 family of processor, including linkage to high level languages and floating point processing.

Outline


  1. Design multiple control sections and DLL compatibility in a program
    1. Parameter passing
    2. Addressability
  2. Apply system modules and subroutines
    1. Date and time
    2. Exception intercepts
    3. Disk input/output
    4. Memory management
  3. Code and implement advanced macro concepts
    1. Conditional assembly
    2. Looped generation
  4. Analyze and implement floating point data
    1. Floating point representation
    2. Floating point instructions
  5. Design and implement I/O programming
    1. Interrupt processing
    2. I/O instructions
    3. Files
  6. Design and implement re-entrant modules
    1. Motivation
    2. Avoidance of local variables
    3. Avoidance of instruction modification
  7. Design and implement recursive modules
    1. Motivation
    2. Information to be saved and restored
    3. Level management
  8. Code real time modules.
    1. Motivation and analysis
    2. Hard and soft real time applications
  9. Link assembly to high level languages
    1. Parameters conventions
    2. Return values
  10. Investigate extended capabilities of x86 architecture
    1. Numeric processing
    2. Extended graphics
    3. Single Instruction Multiple Data instructions (SIMD)
    4. 32/64 bit processors
    5. 16 and 32 bit linkers
    6. Flat memory model and SYSCALL, STDCALL

Lab Topics


  1. Evaluate and modify programs with multiple procedures and nested procedure calls; apply different styles of parameter passing convention
  2. Use system macros for disk IO, exception intercept, and memory management.
  3. Write macros for conditional assembly and nested macros
  4. Code floating point data representation; use floating point instructions and registers
  5. Write IO procedure that process interrupts and call BIOS routines; work with file IO; explore basic graphics capabilities
  6. Write and evaluate re-entrant procedures.
  7. Write and evaluate recursive procedures
  8. Evaluate real-time processing code
  9. Implement assembly modules that interface with high level language, following the high level language parameter passing and return value convention
  10. Explore capabilities of 64-bit processors: extended graphics and numeric processing
Back to Top