UMBC CMPE 310
Systems Design and Programming
Section 0101, 0102 and 0103

Instructor: Chintan Patel
Office: ITE 322
Office Hours: Mon.-Wed.,  11.00 AM - 12.30 PM
Telephone: 410-455-3963
E-mail: cpatel2@cs.umbc.edu (preferred)

Teaching Assistants: Jitin Tharian, Pushkar Pulastya and Pei Huang
Office Hours:
 Pei Huang : Mon. and Wed. 10:00-11:30 AM ITE 371
Pushkar Pulastya: Tues. 1:00-4:00 PM ITE 371
Jitin Tharian: Thrs. 1:00-4:00 PM ITE 371
E-mail: hp3@umbc.edu, pushkar1@cs.umbc.edu , jitin1@cs.umbc.edu

Meeting Time and location
Mon.-Wed. 3:30 - 4:45 PM ACIV 151
Lab Discussion (All Sections): Fri. 11:00 AM - 1:00 PM BIOL 120
Lab Section 0101: Fri. 2:00 - 3:00 PM Section 0102: Fri. 3:00-4:00 PM, Section 0103: Fri. 4:00-5:00 PM ITE 375

Announcements
Check this section regularly for important class announments.

Midterm Exam will be in ACIV 151 (regular classroom) on Monday May 17th from 1:00 - 3:00 PM.

As discussed in class here is the link to the ABET student survey. Make sure you fill this survey out before end of next week.
     CMPE 310 ABET Student Survey

04/23: Class is canceled on Monday (4/26) and Wednesday (4/28). We will have a discusssion section meeting to cover up these classes on Friday (4/30).

03/22: Check project 3 clarification below.

03/08: Midterm Exam will be on Wed. March 17th in class. You can expect questions from Lectures 1 through 9, all the assembly lecture notes and the first 2 projects.

02/17: Office hours for the TA's have been updated. Please check the new times above.

02/04: There will be no discussion or lab on this Friday 02/06. Labs will begin from next week.

Course Material

Syllabus

Lecture 1: Introduction

Lecture 2: 80x86 Architecture Basics

Lecture 3: OS Essentials

Lecture 4: 80x86 Microprocessor Register Architecture

Lecture 5: Protected Mode Memory Addressing

Lecture 6: Paging

Lecture 7: Advanced Topics

Lecture 8: 8086 Chip Set

Lecture 9: Memory I

End of Midterm Exam material

Lecture 10: Memory II

Lecture 11: Memory III

Lecture 12: Basic IO I

Lecture 13: Basic IO II

Lecture 14: Basic IO III

Lecture 15: Basic IO IV

Lecture 16: Interrupts

Lecture 17: Disk Storage, Video and DMA

Lecture 18: Bus Standards

End of course material
 

Lab Lecture Notes

Assembly Basics

Addressing Modes I

Addressing Modes II

Addressing Modes Slides from Dr. Chang

8086 Instructions

NASM

Data Movement Instructions

Arithmetic and Flow-of-Control Instructions

Stack Basics

Coprocessor Instructions
 

Projects

Project Help:

Macros for your use (Courtesy Dr. Jim Plusquellic)
Floating point printf example
Code to get the command line if you are using GCC
 

Assignments:

Instructions on using submit
Completely fill out and include the cover page (doc or pdf) with each lab submission. Labs will not be accepted without it. Late submission penalty is 20% lab grade per day late. The definition for a late lab is if you don't hand in your  hardcopy when you walk into your class (or don't submit the softcopy before coming to class) you have a late submission. Weekends will be considered as late days.

Project 1: Hamming Distance  (Due March 1 Monday)
                      Update (02/23) : Your program should print out the original two strings and the hamming distance between them. You can use printf to print out the hamming distance. Here is the code for printing an integer value using printf. Use main instead of _start in you .asm file and use gcc instead of ld to link.
 

Project 2: Adding Integers  (Due March 8 Monday)

Project 3: Processing and Adding Single Precision Floats  (Extended to March 29 Mon. before class)
    You can use fopen to open a file handle for "only" the output file.

Project 4 : Calculating DFT of a time domain waveform (Due April 19 Monday)
Mini Lecture on Discrete Fourier Transform
C Starter Code for Project 4
Sample Input
Corresponding Sample Output
Help on using atan2

Project 5 : Calculating area under a waveform (Due May 3 Monday)
Sample Input
Corresponding Sample Output

Homeworks

Homework 1   (Due April 14 Wed.)

Interface sixteen (16) 16K x 4 SRAM chips in two data banks each of 8-bit. The system has a 20-bit address and 16-bit data bus.
The starting memory location for the SRAM is address 0x00000 and the address increases contiguously from this location.
- use a separate /CS signal for each chip
- A0 = /BLE
- use the /BLE, /BHE, /WR, and /RD signals in your answer
The design should be such that should be able to write a 16-bit value in both banks, a 8-bit value in the low bank or a 8-bit value in the high bank.

Show all your work and draw a diagram using any word-processing tool of your choice. Handwritten homeworks will not be accepted. The total is 50 points.
 

NASM Documentation

Linux NASM Source (v0.98)

NASM Documentation : HTML and PDF
NASM Example I (hello.asm)
NASM Example II and gdb demo file (Converts user input to upper case) (Courtesy of Dr. Richard Chang)
Instructions on how to compile
Documentation on the 0x80 system call interface
IA-32 Intel Architecture Software Developer's Manual : Best source for information on any instructions.


The following documentation is provide courtesy of Dr. Richard Chang

Using gdb for Assembly Language Debugging
System calls in Linux Assembly