CMPE 221 Assembly Language Programming &
Instruction Set Architecture

Syllabus

Fall Semester 2024

Dr. Roger Doering
Office: SF 534 by appointment only
Office Hour Zoom: Link
Office Hours: MTWTh 2:00-2:50pm; 
or by appointment on Zoom
Phone: 885-4192.
e-mail: Roger.Doering@csuEastBay.edu
http://cox.csueastbay.edu/~rdoering/


Classes: Two class meetings per week, TTh  11:00am-12:15pm co-sync. Sc N104 or only if you are symptomatic on Zoom link.

Units: 3

Prerequisite: An introductory programming course, i.e. or equivalent.

Grade basis: attendance-- 5%; homework -- 15%; 1 midterm -- 25% ; 1 Project 25%; final -- 30%; curved.

Late homework - discounted at 1% per hour late. Work will not be accepted after 100 hours without a documented excusable absense.

Catalog Description: Functional organization of digital computers and programming in machine and assembly language. Internal representation of data, binary arithmetic, machine instructions, addressing modes, subroutine linkage, macros. Introduction to assemblers, linkers, and loaders.


Text: Computer Organization and  Assembly Language Programming for MIPS, 2nd Ed, Roger W. Doering and Robert L. Britton, available only from CopyPacific
additional reference: The Art of Assembly Language by Randall Hyde : http://webster.cs.ucr.edu


Material to be covered:

Machine Architecture
System Organization
Memory Access and Organization
CPU Architecture
Instruction Set Architecture
Memory Architecture
The I/O Subsystem
Basic Assembly Language:
Constants, Variables, and Data Types
Characters and Character Sets
Arrays
Introduction to Character Strings
Records, Unions, Files
Introduction to Procedures
Managing Large Programs
Integer Arithmetic
Floating Point (real) Arithmetic
Calculation Via Table Lookups
Control Structures
Stack
Recursion
memory mapped I/O
Floating Point

Learning Outcomes:

Knowledge

Comprehension

Application

Evaluation

Synthesis

Analysis

The "University Policies (Common Syllabus Items)" presented on Canvas with this syllabus are hearby included by reference.

Academic Dishonesty (Cheating): Copying of code from another student, or from on-line resources, or a book other than the printed examples in the textbook is not allowed on homework or exams. Submission of such code will result in a zero score for the assignment, and a filing of an Academic Dishonesty report.

Note that CS and ENGR department rules will prevent you from getting a work-study, Co-op job, or serving as a teaching assist/reader if you have a single report filed against you. Proper attribution of public domain code or instructor's code will be required in comments preceding that code for your project.

If you have a documented disability and wish to discuss academic accommodations, or if you would need assistance in the event of an emergency evacuation, please contact your instructor as soon as possible. Students with disabilities needing accommodations should also speak with Accessibility Services. For more information, click here: Accessibility Services.
You can find the relevant forms and policies related to accessibility issues at: Accessibility Forms and Policies

ABET info:

CMPE 221: Assembly Language & ISA
Credit hours: 3

Contact hours: 2 hr 30 minutes lecture

Required texts:
Doering & Britton, Computer Organization and Assembly Language Programming for MIPS,
Copy Pacific (Hayward, CA), 2009.


Specific course information:
• Catalog description: Functional organization of digital computers and programming
in machine and assembly language. Internal representation of data, binary arithmetic,
machine instructions, addressing modes, subroutine linkage, macros. Introduction to
assemblers, linkers, and loaders.

• Pre-requisite: An introductory programming course

• required for Computer Engineering program

Specific outcomes of instruction:
*Upon completion of the course, students will be able to demonstrate the ability to:
1) Understand basic functional units of computer processors
2) Understand the functions of compilers, assemblers, and linkers
3) Understand and apply binary and hexadecimal number systems to assembly language
programming
4) Develop pseudo-code and efficient algorithms to address problems that can be solved using a
computer programs.
5) Connect between low-level assembly language to high-level programming languages
6) Understand and develop programs using stacks and dynamic memory
7) Understand and develop programs using devices outside of the CPU
8) Understand and develop programs that handle Exceptions and Interrupts
9) Program using a MIPS assembly language simulation software

Relation to ABET Student Learning Outcomes
This course allows students to apply their knowledge of basic mathematical principles to create
assembly language programs. The programs function as systems designed to satisfy input/output
constraints, specified in problem statements. Throughout the course, students use an assembly
language program development software, which consists of a compiler and a set of tools to
facilitate program development.

The course addresses the following ABET student learning outcomes:
Outcome (a): An ability to apply knowledge of mathematics, science and engineering
Outcome (c): An ability to design a system, component, or process to meet desired
needs within realistic constraints such as economic, environmental, social, political,
ethical, health and safety, manufacturability, and sustainability
Outcome (e): An ability to identify, formulate, and solve engineering problems
Outcome (k): An ability to use the techniques, skills, and modern engineering tools necessary for
engineering practice.
List of Topics:
1) Binary and Hexadecimal number systems
2) Basic MIPS CPU computer organization concepts
3) Efficient algorithm development
4) Assembly and Machine-code representations of MIPS instructions
5) Programming with MIPS instructions
6) Functions calls using stacks
7) Reentrant and recursive functions
8) Memory mapped I/O
9) Exceptions and interrupts
10) Floating-point instructions