CMSC 131: Introduction to Computer Organization and Machine Level Programming
Course Description
This course is an introduction to computer organization and interfaces between hardware and software. This course is intended to teach students how to program a computer or microprocessor based system in processor-specific assembly language.
The course also teaches the importance and practice of integrating assembly with
higher-level languages for computer programming.
Course Learning Outcomes
After completion of the course, the student should be able to:
- Describe major components of computer processor architecture and representation of data in memory.
- Convert numbers between decimal, binary, octal, and hexadecimal representations, and represent
negative numbers using common formats.
- Implement arithmetic, comparison, branching, repetition, I/O, and bit operations and procedures in
assembly language programs.
- Demonstrate knowledge of the use of registers, method of addressing, common instruction formats,
stack processing, array and indirect processing.
- Develop correct, efficient and easily maintainable programs written in low-level language.
Course Outline
UNIT 1. Introduction
- Number Systems
- Computer Organization
- Assembly Language
- Creating a Program
UNIT 2. Basic Assembly Language
- Working with Integers
- Control Structures
- Translating Standard Control Structures
UNIT 3. Bit Operations
- Shift Operations
- Boolean Bitwise Operations
- Avoiding Conditional Branch
- Manipulating bits in C
- Big and Little Endian Representations
UNIT 4. Subprograms
- Indirect Addressing
- The Stack
- The CALL and RET Instructions
- Calling Conventions
- Multi-Module Programs
- Interfacing Assembly with C
- Reentrant and Recursive Subprograms
UNIT 5. Arrays
- Defining arrays
- String Instructions