ECE 3724/CS 3124 Microprocessors Home page, Robert Reese



Lectures     Lab Page

Policy/Syllabus

This is the Policy/Syllabus for this course.

ECE 3724/CS 3124 Lab Home Page

Follow this link to the ECE 3724/CS 3124 lab home page all sections. You can find the lab policy, lab assignments, and schedule of lab assignments on this page.

Email List

The class EMAIL list will be the one provided by Information Technology Services (ITS). The email list is ece3724-02.fall2001@courses.msstate.edu . All students, including those registered under course number cs3124, will be on this list. See the Class EMAIL Faq for further information about how to be added to the list.

WARNING!!! It is your responsibility to make sure that you are on this email list. I will send many homework/test/lecture announcements to this list -- you are responsible for reading the emails sent to this list.

WebCT Course Ware

I will be using a University WWW resource called 'WebCT' for most homework assignments. To access the EE 3724 WebCT course page, go to the WebCT home page , and click on the "Log into myWebCT" option. You will need to use your MSU NetID and password to login into WebCT. If you do not know your MSU Netid, look it up in the online campus directory: http://www.msstate.edu/directory , the MSU NetID is right next to your name. If you have never logged into a WebCT course before, the login name is your MSU NetID, the default passwd is your 6-digit birthdate (mmddyy). Once you have logged into WebCT, use the Password Tool ("Change Password" in upper right corner) to change your password.

Once you are logged into WebCT, you should see under "Courses" on the left-hand side the course "ECE 3724-Microprocessors I" (if you do not see this then this means that you have not been added yet - please send me email at reese@ece.msstate.edu and I will add you to the course). Click on the course name to access the course. I will be using WebCT only for online homework quizzes. To take a WebCT quiz, click on the Online Quizzes once you have accessed the course . You will be presented with a list of multiple choice questions. After choosing an answer for a question, click on the 'submit answer' button. This MUST BE DONE FOR EACH QUESTION. Simply choosing an answer does not submit the answer, you must click on the "submit answer" button. There is a chart on the right side that will show how many questions have answers submitted for them; don't leave the quiz until you have answered all of the questions.

Homework Assignments

No late homeworks are accepted. Homeworks are due at class time on the due date.

  1. Due Tues, Aug 28: Homework #1 , SOLUTION (PDF)
  2. Due Thurs, Aug 30: WebCT Quiz: Number Systems Review
  3. Due Thurs, Sep 9: Problem 10 in Section 5.10, Irvine , SOLUTION
  4. Due Thurs, Oct 4: Problem 11 in Section 4.9, Irvine. Your program should work with any string. , SOLUTION
  5. Due Thurs, Oct 11: Write a program that inputs a string from the console (use the DOS AH=0AH, Int 21h function, section 5.5.2 in Irvine textbook), counts the number of words in the string and displays this number using the 'WriteInt' procedure from the Irvine link library. For example, the string "I yam what I yam!" has 5 words. Assume that any number of spaces are between words (but only spaces - tabs and other whitespace characters are not allowed). Anything that is not a space is considered part of a word. Leading and trailing spaces in the string is allowed. SOLUTION

Other WebCT quizzes will be posted on the WebCT course page. I will announce in class and via email when they are due. You can also look at the 'availability' dates on the quizzes in order to determine when they are due. You should regularly check the WebCT course page to see if a quiz has been posted. I will not post WebCT quiz dates to this page.

Syllabus (Fall '01)

  1. Aug 20: Intro to Computer Organization (Notes) ,Review of Binary codes (Irvine Chap 1),Intro to X86 architecture
  2. Aug 27: Segmented Memory (Irvine Chapt 2, Uffenbeck Chap 3), Addressing Modes, Data Xfer Instructions (Irvine Chap 3,4)
  3. Sep 3: Introduction to Masm, Arithmetic instructions
  4. Sep 10: Logic Instructions (Irvine Chap 7), Program Control (Irvine Chap 6)
  5. Sep 17: Test #1, Stack Usage, Parameter Passing (Irvine Chap 9)
  6. Sep 24: DOS 21H functions (Irvine 5.5) , ASCII Number IO (Irvine 9.6, 9.7), Irvine Link library (Irvine 9.5)
  7. Oct 1: Bus Transactions (Uffenbeck Chap 7), Address Decoding (Uffenbeck Chap 7)
  8. Oct 8: Memory Technologies (Notes, Uffenbeck Chap 7), Rambus Memory (Notes)
  9. Oct 15: Test #2, Parallel IO (Uffenbeck Chap 8)
  10. Oct 22: Computer Interrupts (Uffenbeck Chap 9), Software Interrupts, Asynchronous Serial IO (Uffenbeck Chap 10)
  11. Oct 29: Serial IO with 16550 UART (Uffenbeck Chap 10),USB, Firewire (Notes)
  12. Nov 5: Floating Point, Floating Point execution (Notes, Irivine Chap 15)
  13. Nov 12: System Busses (Notes,Uffenbeck Chap 11), Chipsets (Notes)
  14. Nov 19: Test #3, Fixed Disks (Notes)
  15. Nov 26: Video (Notes), MMX/SIMD Extensions, Catchup (Notes)
  16. Dec 3: Review for Final Exams

Lectures (this semester)

I will move notes from the 'previous semesters lectures' list to the 'current semesters lectures' list as we cover them in class.

  1. EE 3724 Introduction , PDF
  2. Number System Review , PDF
  3. X86 Programming Model , PDF
  4. X86 Memory Model, Segmented Memory , PDF
  5. X86 Addressing Modes , PDF
  6. X86 MASM, introduction to X86 instructions , PDF
  7. X86 Arithmetic instructions , PDF
  8. X86 Logic instructions , PDF
  9. X86 Program Control instructions , PDF , Largest,smallest number example from Irvine book

Some example programs

  1. Add 4 bytes (Lab #4 example)
  2. Add 4 words (Lab #4 example)
  3. Hello World example
  4. DOS INT21 example
  5. Print out a number in binary
  6. Input a string using temporary storage on stack
  7. Print random numbers using Irvine library
  8. Input decimal number. . Use INT21, function 0Ah, to input 2-digit string that represents number from 0-99. Convert to binary, use Irvine Library to print out number in decimal, binary, hex.

Lectures (previous semesters)

The majority of these notes were done by Professor Mitch Thornton.

  1. EE 3724 Introduction , PDF
  2. Number System Review , PDF
  3. X86 Programming Model , PDF
  4. X86 Memory Model, Segmented Memory , PDF
  5. X86 Addressing Modes , PDF
  6. X86 MASM, introduction to X86 instructions , PDF
  7. X86 Arithmetic instructions , PDF
  8. X86 Logic instructions , PDF
  9. X86 Program Control instructions , PDF , Largest,smallest number example from Irvine book
  10. Intro to X86 Stack Operations , PDF , Subroutine example from Irvine book
  11. DOS INT 21H functions, PDF , Example that uses DOS INT21H to get a character from user and echo to screen
  12. Subroutine Parameter Passing , PDF , Example showing data storage on stack
  13. Input/Ouput of Numbers in ASCII format, Irvine Link Library , PDF , Example showing use of Irvine Library to print random numbers
  14. Bus Transactions , PDF
  15. Address Decoding for Memory systems , PDF
  16. Memory Technologies , PDF
  17. Rambus Memory , PDF
  18. Parallel IO , PDF
  19. Computer Interrupts , PDF
  20. Software Interrupts , PDF
  21. Serial IO (Asychronous) , PDF
  22. Serial IO via the 16550 UART , PDF
  23. Interrupt-Driven IO , PDF , Assembly language example of Receive data interrupt routine for 16550D
  24. Universal Serial Bus, IEEE Firewire , PDF , Full USB specification (PDF) , Additional info on IEEE Firewire Additional info on IEEE Firewire
  25. General Notes on busses , PDF
  26. System Chipsets , PDF
  27. IEEE Floating Point , PDF
  28. Fixed Disks , PDF
  29. Video Basics , PDF

Sample Tests (Old)

Will be posted here.

  1. Test 1 Solutions, Summer '00
  2. Test 2 Solutions, Summer '00
  3. Memory Study guide, Summer '00
  4. Test #3 Study Guide, Summer '00
  5. Test #3 Solutions, Summer '00
  6. Test #4 Study Guide, Summer '00
  7. Test #4 Solutions, Summer '00
  8. Test 1 Solutions, Fall '00
  9. Test 2 Solutions, Fall '00
  10. Test 3 Solutions, Fall '00
  11. Test 4 Solutions, Fall '00
  12. Test 1 Solutions, Spring '01
  13. Test 2 Solutions, Spring '01
  14. Test 3 Solutions, Spring '01
  15. Test 4 Solutions, Spring '01
  16. Test 1 Solutions, Fall '01
  17. Test 2 Solutions, Fall '01
  18. Test 3 Solutions, Fall '01

Improving your Programming Skills

If you have done poorly on the programming problems on a test, and want to improve your programming skills, then work the following problems from the Irvine textbook, 3rd Edition. If you need help solving/debugging them, I would be happy to assist, but I will not give you the answer. You can only become better at programming via practice.

  1. Problem 1, Section 4.9, Simple Calculation Problem
  2. Problem 7, Section 4.9, Display Random String
  3. Problem 6, Section 6.6, Real Number Input (define a buffer area to place the number string into, make it big enough to hold 128 chars).
  4. Problem 11, Section 6.6, Reverse the words in a string
  5. Problem 10, Section 9.9, Bin16_toAsc Procedure

Extra Credit

Data Sheets

  1. Memory Data Sheets and notes on memory technologies may be found here

Other Links

There are HUNDREDS of various X86 assembly language sites on the WWW. You can find lots of source code examples, tutorials, project ideas, etc. Here are a few that you might find useful.

  1. HelpPC utility . A .com program run from the DOS command prompt that provides help on DOS, BIOS, Mouse interrupts. Very handy.
  2. PC assembly language Tutorials/Demos by Bob Richardson . This page uses the a86/d86 assembler/debugger for everything and has some good tutorials.
  3. Kip Irvine's list of assembly language resources .
  4. Intel Literature Center . From this site, you can download the complete X86 instruction set manual in PDF format.
  5. X86 instruction set manual from Intel (PDF, warning --- 6 Mbytes!!!)
  6. History of Microprocessors
  7. General Computer Architecture Page