CMPS 2240 Computer Architecture I - Assembly Language Programming
Eddie Rangel
Office: Sci III 338
Office Hours: by appointment
Email O365: erangel1@csub.edu
Course meets in Sci III room 240
MW 4:00pm - 5:15pm
F 4:00pm - 6:30pm
Catalog Description
CMPS 2240 Assembly Language Programming
Introduction to machine architecture and program structure; code, data, and stack segments; programming with an assembly language. Each week lecture meets for 150 minutes and lab meets for 150 minutes.
Prerequisite: CMPS-221
Prerequisites by Topic
Programming skill in a high level language such as C, C++, Java.
Required Textbook
Available online.
Appendix A from Computer Organization & Design by Patterson & Hennessey; 3rd Ed. Appendix A is available online.
Latest edition of Computer Organization & Design places similar material
in Appendix B.
Recommended Textbook and Supplemental Material
MIPS Assembly Language Programming by Robert L. Britton (available online).
Additional material will be available online from our main website.
Attendance:
It is recommended that you attend every class session.
Roll is taken on lab Tuesdays. Some or all lab assignments will require
attendance for full credit.
Lecture Topics and Rough Schedule
Week 1 Operations on binary, octal and hexadecimal numbers Week 2 Arithmetic, shift & rotate operations Week 3 Subroutine linkage & call frames Week 4 Instruction encoding, jumps & branches Week 5 Program optimization Week 6 Logical and bit-field operations & condition testing Week 7 Multiplication, division, branch delay slot Week 8 Introduction to x86-32 Week 9 x86-64 code optimization Week 10 x86 inlining with C/C++ Week 11 More x86 inlining with C/C++ Week 12 Mips file processing Week 13 Floating-point formats 8-bit, IEEE 32-bit Week 14 Recursion and stack frame Week 15 Review of solutions, project completion Week 16 Final exam
Grading Policy:
Homework........... 10 points x 10 100 10% Labs............... 10 points x 10 100 20% Quizzes............ 10 points x 10 100 10% Final Exam......... 100 points x 1 100 30% Final Project...... 100 points x 1 100 30% ---------- Total points possible............... 500 100% The overall distribution of scoring is reflected above. The number of assignments may change slightly. Letter grade will be based on percentage of total possible.
A 93% |
A- 90% |
B+ 87% |
B 83% |
B- 80% |
C+ 77% |
C 73% |
C- 70% |
D+ 67% |
D 63% |
D- 60% |
F 0% |
Labs
Lab assignments ask you to write some assembly language programs in class.
There will usually be a brief lecture at the beginning of each lab session.
Roll will be taken during lab. 20% of the lab grade is based on attendance.
Lab Submission
All lab files due should be located in your designated folder on Sleipnir.
This area on the Sleipnir server will be set up for you during the 1st week
of class.
Instructions will be gived during the course to help you submit your
assignments correctly.
Homework
Homework assignments are posted on our web page. Please work out the problems
on paper with a pencil and eraser. Homeworks are due on Fridays just prior to
the weekly quiz.
Late Policy
Late assignments will not be accepted.
Final Exam
The final exam will be given during finals week, and be similar to the
quizzes given during the quarter.
Final Project
The final project will ask you to write a somewhat complex program using all
the assembly language knowledge you have learned throughout this course.
A complete description of the project requirements will be available around week-8 of the course. The project could take 20 to 40 hours of programming work to complete, depending upon the grade level you wish to achieve.
Individual Work Policy
All work done in this course is individual work.
Sharing of code is not acceptable.
Possession of code written by other students in not acceptable.
Copying another student's work is plagiarism.
Copying answers or source code from the Internet is also plagiarism.
Asking a tutor or another person to do your work for you is cheating.
Do your own work please.
If you are struggling to learn the material, then do the following:
1. Complete all the reading assignments.
2. Ask the tutors some specific questions about what you're stuck on.
3. Come to every class session.
4. Practice your programming every day.
5. Contact the instructor for help.
note: This syllabus could be amended during the semester.