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
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
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.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
- Reading from text and lecture notes
- Homework assignments to practice assembly code for macros, procedures, OS interface, high level language interface, floating point processing, and interrrupt routine
- 4 - 7 programming homework assignments of assembly code. Each assignment is to include one or more of the following topics:
- Multiple control structures
- Use of OS routines and user-defined macros and procedures
- Interrupt level I/O
- Reentrant and recursive modules
- Interface assembly code with C/C++ code
Methods of Evaluation
- Evaluation of programming assignments for completeness, correctness, and efficiency of x86 assembly code and design
- Evaluation of homework assignment for completeness and correctness of x86 assembly code analysis, debugging, and development
- 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.
- 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.
- Computer lab with x86 based computers running the Windows Operating System and MASM Assembler
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Irvine, Kip. "Assembly Language for x86 Processors", 8th Edition. ISBN: 978-0135381656, Prentice-Hall, 2019 |
Examples of Supporting Texts and References
Author | Title | Publisher |
---|---|---|
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
- Design multiple control sections and DLL compatibility in a program
- Parameter passing
- Addressability
- Apply system modules and subroutines
- Date and time
- Exception intercepts
- Disk input/output
- Memory management
- Code and implement advanced macro concepts
- Conditional assembly
- Looped generation
- Analyze and implement floating point data
- Floating point representation
- Floating point instructions
- Design and implement I/O programming
- Interrupt processing
- I/O instructions
- Files
- Design and implement re-entrant modules
- Motivation
- Avoidance of local variables
- Avoidance of instruction modification
- Design and implement recursive modules
- Motivation
- Information to be saved and restored
- Level management
- Code real time modules.
- Motivation and analysis
- Hard and soft real time applications
- Link assembly to high level languages
- Parameters conventions
- Return values
- Investigate extended capabilities of x86 architecture
- Numeric processing
- Extended graphics
- Single Instruction Multiple Data instructions (SIMD)
- 32/64 bit processors
- 16 and 32 bit linkers
- Flat memory model and SYSCALL, STDCALL
Lab Topics
- Evaluate and modify programs with multiple procedures and nested procedure calls; apply different styles of parameter passing convention
- Use system macros for disk IO, exception intercept, and memory management.
- Write macros for conditional assembly and nested macros
- Code floating point data representation; use floating point instructions and registers
- Write IO procedure that process interrupts and call BIOS routines; work with file IO; explore basic graphics capabilities
- Write and evaluate re-entrant procedures.
- Write and evaluate recursive procedures
- Evaluate real-time processing code
- Implement assembly modules that interface with high level language, following the high level language parameter passing and return value convention
- Explore capabilities of 64-bit processors: extended graphics and numeric processing