CPSC 3121: Assembly Language Programming

advertisement
Course Syllabus p. 1
CPSC 3121: Assembly Language Programming
Course Description
CPSC 3121. Assembly Language Programming 1 (3-0-3) Prerequisite: CPSC 2105
with a grade of "C" or better. An introduction to assembly language for mainframes or
PC's. Topics include machine architecture (registers, memory, instruction formats),
character data processing, decimal arithmetic, binary arithmetic, subroutine and program
linkage.
Course Objectives
By the end of this course,
1. You will master a basic working subset of IBM High-level Assembly Language
(HLASM) instructions. Mastery is indicated in three ways:
a) You can to explain the semantics of each of the instructions in the working
subset in clear English sentences
b) You can “describe” the semantics of each of the instructions in the working
subset by writing the equivalent code in Java.
c) You will write working programs in HLASM that satisfy the requirements of a
series of assignments
2. You will be able to identify each of the major components of the IBM architecture
and describe their operations in English and by writing Java code.
3. You will acquire some basic mainframe skills in ISPF and in JCL. These skills
are indicated by your ability to use the operating system to design and execute
programs in HLASM.
Grading
Program
Group
Program
1
2
3
4
5
Totals
6
pts
6
pts
6
pts
6
pts
6
pts
30
pts
1
2
3
4
5
4
pts
4
pts
4
pts
4
pts
4
pts
20
pts
Midterm
Exam
25
pts
25
pts
Final
Exam
25
pts
25
pts
Totals
100
pts
Course Syllabus p. 2
Textbook and Reading Materi
No textbook is required for this course. Instead, I will use my own notes and a collection
of online lectures that are listed on the website:
http://csc.columbusstate.edu/woolbright/WOOLBRIG.htm . Additionally, there are two
IBM manuals you will need to use:
1) Language Reference:
http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/asmr1020.pdf
2) Programmer’s Guide:
http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/asmp1020.pdf
If you would like a textbook, I can recommend Programming Assembly Language, IBM
370 Series Architecture and Assembly Language by Peter Abel. The book is no longer in
print, but still remains an excellent text for beginning assembly programming, and can
sometimes be found for a few dollars in used bookstores online. If you decide to buy
one, be aware that the same author has textbooks by a similar name that cover PC
Assembly languge – those texts would not help you directly in this class.
Attendance Policy
You are expected to attend class regularly and to participate. I will have something to
present in every class that you need to hear. Any student who misses 4 or more classes
mayl be dropped from the class for excessive absences.
Making up Tests
Everyone is expected to take the midterm and final exams at their scheduled times.
Make-ups will be given only for legitimate, documented absences for which the
instructor has been notified ahead of time.
Submitting Programs
Each student will be assigned a PDS (mainframe library) where you will build the
assembler programs I assign. Each PDS will be named CSUxxxx.SOURCE.ASM where
xxxx is a four-digit number that I assign you. Each program you create should be named
PROGRAM1, PROGRAM2, …
Individually written programs will be automatically graded. Periodically, I will submit a
grading program that retrieves your work from your PDS and grades it. The grading
software will also notify you of the current grade by posting a member in your PDS. You
can change your program up to the due date. The grade you receive once the due date
has passed is final.
Group projects will consist of building a sequence of assembler instructions by writing
Java code that mimics execution of each instruction on a virtual System/z machine that I
have written in Java. Group projects will be graded by hand and everyone in the group
will receive a grade based on their individual work with the group. Each group will
Course Syllabus p. 3
submit one copy of the code and a description of the instructions that each person in the
group was assigned.
The Java code for the virtual System/z is available for download on the website. You can
also find instructions for using the virtual System/z.
Grading Rubric For Programs
I have a simple rubric for grading programs:
Program executes properly
Program is well-commented
Program is well-written
Program executes properly
Program is well-written
Program is poorly commented
Program has minor execution errors
Program does not execute correctly
Program assembles properly
Program could execute properly
with a few minor changes
Program does not assemble
6 pts
5 pts
4 pts
3 pts
0 pts
E-Mailing Me
You can e-mail me here: woolbright_david@columbusstate.edu . Caution: My son is a
student at CSU and has an e-mail address that is similar to mine. Be sure to choose my
address when writing me.
Why This Course Is Important
Every programmer worth their salt thoroughly understands the instruction set architecture
of the machine on which they operate. The IBM System/z family is a great machine with
an architecture that has proven its durability over 50 years of existence. No other
architecture comes close to this record. The System/z has the advantage of being a
simple but flexible architecture that is easier to learn than the x86 family. Once you learn
the System/z architecture, you will be able to make reasonable comparisons and
judgments about other architectures like the x86.
Writing in assembler will give you an appreciation for the work that a compiler or
interpreter does.
Course Syllabus p. 4
Mainframe skills are on the upsurge. The job market needs and will reward programmers
and managers who take time to pick up some mainframe skills.
Gaining mainframe experience is increasingly difficult to come by. We are one of a
handful of universities in the US that can give you this experience. Buying this
experience in the marketplace would cost thousands.
Course Outcomes and Assessment Methods
Course Outcomes
Assessment Method
You will be able to write assembly
language programs of moderate
difficulty using IBM’s HLASM
You will be able to describe in
English, the semantics of a working
subset of assembler instructions.
You will be able to describe the
architecture of an IBM System/z
machine.
You will demonstrate knowledge of
the semantics of a working subset
of assembler instructions by writing
equivalent code in Java
Five programming assignments
covering basic assembly language
concepts will be given and graded
You will have to demonstrate this
skill on the midterm and final
examinations
You will have to demonstrate this
skill on the midterm and final
examinations
You will be asked to write the code
that simulates execution of each
instruction on a virtual System/z
machine that is written in Java.
There will be a series of five group
assignments that assess this skill.
Download