Catalog Description
- Transfer Status
- CSU/UC
- Prerequisite
- CSCI 20
- Unit(s)
- 3.00
- Lecture: 34.00 Contact hours/68.00 Out of class hours/102.00 Total hours/2.00 Unit(s)
- Lab: 51.00 Contact hours/0.00 Out of class hours/51.00 Total hours/1.00 Unit(s)
- Total: 85.00 Contact hours/68.00 Out of class hours/153.00 Total hours/3.00 Unit(s)
Course Description: This course is an introduction to the organization and behavior of modern computer systems at the assembly language level. Topics include numerical computation, the internal representation of simple data types and structures, data representation errors, and procedural errors. Students will learn how to map statements and constructs of high-level languages onto sequences of machine instructions. (C-ID COMP 142).
Objectives
Upon successful completion of this course, the student should be able to:
- Identify and describe the organization of modern computer systems, including processor architecture and behavior and the representation of data types and data structures.
- Write assembly language instructions that map fundamental high-level language constructs onto machine language.
- Write simple assembly language program segments, including subroutines, to perform Input/Output (I/O), arithmetic, logic, and other basic operations.
Course Content
Topic Titles / Suggested Time Topic
Lecture
| Topics | Lec Hrs |
|---|---|
I/O and interrupts | 2.00 |
Subroutine call and return mechanisms | 2.00 |
Addressing modes | 4.00 |
Instruction formats | 1.00 |
Assembly language programming | 6.00 |
Instruction sets and instruction types | 2.00 |
Control Unit and the fetch-decode-execute cycle | 1.00 |
Basic organization of the von Neumann architecture | 2.00 |
Representation of records and arrays | 3.00 |
Representation of non-numeric data | 2.00 |
Signed and two's complement representations | 2.00 |
Fixed and floating point systems | 2.00 |
Numeric data representation and number bases | 3.00 |
Bits, bytes, and words | 2.00 |
| Total Hours: | 34.00 |
Lab
| Topics | Lab Hrs |
|---|---|
Bits, bytes, and words | 3.00 |
Numeric data representation and number bases | 3.00 |
Fixed and floating point systems | 3.00 |
Representation of non-numeric data | 3.00 |
Representation of records and arrays | 6.00 |
Assembly language programming | 18.00 |
Addressing modes | 6.00 |
Subroutine call and return mechanisms | 3.00 |
I/O and interrupts | 6.00 |
| Total Hours: | 51.00 |
Methods of Instruction
- Collaborative Group Work
- Demonstrations
- Homework: Students are required to complete two hours of outside-of-class homework for each hour of lecture
- Lecture
- Multimedia Presentations
Methods of Evaluation
- Quizzes
- Homework
- Lab Projects
- Mid-term and final examinations
Examples of Assignments
Reading Assignments
- Read the chapter in your text on arithmetic with unsigned integers. Write a brief description of the condition(s) that would cause an error when adding two unsigned integer values. Provide two examples of unsigned integer values that, when added together, would cause an error.
- Read the chapter about instruction format in the "Intel 64 and IA-32 Architectures Software Developer's Manual," which can be found online. Draw a simple diagram showing the instruction code format for Intel 64 and IA-32 Architectures.
Writing Assignments
- Write a short assembly language program that reads in an unsigned 32-bit integer from user input, then displays the input value in binary, decimal, and hexadecimal formats. Then, test the input value to see if it is a prime number, and output a string ("PRIME" or "NOT PRIME") based on the result. Be sure to include proper header documentation and thorough inline commenting to describe your algorithm.
- Write truth tables for the bitwise logic instructions AND, OR, XOR, and NOT. Include an example with each table and a description of one possible use of each instruction in a program.
Out-of-Class Assignments
- Use the Internet to find information about the von Neumann and Harvard processor architectures. Write a brief summary of the fundamental components of both architectures. What is the key difference between the two architectures?
- Prepare a short programming exercise to be completed by one of your classmates. Your exercise must require that your classmate use at least two different addressing modes, and should take no more than 150 lines of code to complete.
Recommended Materials of Instruction
Hyde, Randall. (2021). The Art of 64-Bit Assembly. No Starch Press, 1st. 9781718501089.
Kussworm, Daniel. (2018). Modern X86 Assembly Language Programming. Apress, 2018. 978-1484240625.
Plantz, Bob. (2022). Introduction to Computer Organization. No Starch Press, 2nd. 9781718500099.
Minimum Qualifications
Computer Science (Masters Required)