|
|
CSci250 Assembly Language Programming
Syllabus: |
Fall 2008 |
|
Class times & rooms: |
Class |
Time |
Classroom |
Lecture |
11:00am – 11:50am, MWF |
Streibel Hall 106 |
Lab 01 |
05:00pm – 07:00pm, Tu |
Streibel Hall 107 |
Lab 02 |
04:00pm – 06:00pm, M |
Streibel Hall 107 |
|
|
Instructor: |
Wen-Chen Hu |
Lab instructor:
| Varun Krishna |
Email: |
varun.krishna@hotmail.com |
Office: |
Streibel Hall 229 |
Office hours: |
03:00pm – 04:00pm, MF |
|
University of North Dakota course description —
Computer structure, machine representation of numbers and characters, instruction codes and assembly systems.
Includes laboratory.
webopedia.com —
Assembly language is once removed from a computer's machine language.
Machine languages consist entirely of numbers and are almost impossible for humans to read and write.
Assembly languages have the same structure and set of commands as machine languages, but they enable a programmers to use names instead of number.
Each type of CPU has its own machine language and assembly language, so an assembly language program written for one type of CPU will not run on another.
In the early days of in a high-level language such as FORTRAN or C.
Programmers still use assembly language when speed is essential or when they need to perform an operation that is not possible in a high-level language.
Free On-Line Dictionary of Computing —
Assembly language is a symbolic representation of the machine language of a specific processor.
It is converted to machine code by an assembler.
Usually, each line of assembly code produces one machine instruction, though the use of macros is library.
Programming in assembly language is slow and error-prone but is the only way to squeeze every last bit of performance out of the hardware.
Software —
Hardware —
Grading:
Housekeeping Details:
- Wednesday, December 17: Final Exam to be held.
- Wednesday, December 10: Final Exam Question Distribution posted.
- Wednesday, December 10: Lab V due in class.
- Friday, November 21: Lab V posted.
- Wednesday, November 12: Homework IV Solutions posted.
- Monday, November 10: Homework III Solutions posted.
- Friday, November 14: Exam II to be held.
- Friday, November 07: Exam II Question Distribution posted.
- Monday, November 10 (firm): Homework IV due in class.
- Wednesday, November 04: Homework IV posted.
- Monday, November 24: Lab IV due in class.
- Monday, October 27: Lab IV posted.
- Friday, October 31: Homework III due in class.
- Wednesday, October 22: Homework III posted.
- Monday, October 27: Lab III due in class.
- Monday, October 06: Lab III posted.
- Wednesday, October 01: Homework II Solutions posted.
- Monday, September 29: Homework I Solutions posted.
- Friday, October 03: Exam I to be held.
- Friday, September 26: Exam I Question Distribution posted.
- Monday, September 29 (firm): Homework II due in class.
- Monday, September 22: Homework II posted.
- Monday, October 06: Lab II due in class.
- Monday, September 22: Lab II posted.
- Monday, September 22: Homework I due in class.
- Friday, September 12: Homework I posted.
- Monday, September 22: Lab I due in class.
- Friday, September 05: Lab I posted.
- Friday, August 29: An exercise posted.
- Wednesday, August 27: Fill up and send the email wenchen@cs.und.edu to register this course.
Tentative Schedule:
Week
|
Class |
Topic |
Reading |
Due |
Where |
1 |
08/27 08/29 |
1. Introduction |
Chapter 1 |
|
|
1.1 Course outline |
|
|
|
1.2 A language processing system |
1.1 |
|
|
No lab the first week of school
|
|
|
|
2 |
09/03 09/05 |
2. Basic Concepts |
Chapter 1 |
|
|
2.1 Software and hardware |
1.1 |
|
|
2.2 Virtual machines |
1.2 |
|
|
09/01 |
Labor Day holiday — no classes |
|
|
|
3 |
09/08 09/10 09/12 |
3. Data Representation & Laboratory Assignments |
Chapter 1 |
|
|
3.1 Binary and hexadecimal numbers |
1.3 |
|
|
3.1 Boolean operations |
1.4 |
|
|
3.2 Assembling, linking, and running programs |
|
|
|
09/09 |
Last day to add a full-term course
Last day to add audit or change to/from audit
Drops after the last day to add will appear on a transcript.
|
|
|
|
4 |
09/15 09/17 09/19 |
4. Assembly Language Fundamentals |
Chapter 3 |
|
|
4.1 Basics |
3.1 |
|
|
4.2 A sample program |
3.2 |
|
|
4.3 Line-by-line anatomy |
3.3 |
|
|
5 |
09/22 09/24 09/26 |
5. Assembly Language Fundamentals (Cont.) |
Chapter 3 |
|
|
5.1 Arithmetic instructions |
3.4 |
Lab I on 09/22 |
|
5.2 Defining data |
3.4 |
HW I on 09/22 |
|
5.3 Symbolic constants |
3.5 |
|
|
6 |
09/29 10/01 |
6. Data Transfers, Addressing, and Arithmetic |
Chapter 4 |
|
|
6.1 Data transfer instructions |
4.1 |
HW II on 09/29 |
|
6.2 Addition and subtraction |
4.2 |
|
|
10/03 |
Exam I |
|
|
|
7 |
10/06 10/08 10/10 |
7. Data Transfers, Addressing, and Arithmetic (Cont.) |
Chapter 4 |
|
|
7.1 Data-related operators and directives |
4.3 |
Lab II on 10/06 |
|
7.2 Indirect addressing |
4.4 |
|
|
7.3 JMP and LOOP instructions |
4.5 |
|
|
8 |
10/13 10/15 10/17 |
8. Procedures |
Chapter 5 |
|
|
8.1 Introduction |
5.1–2 |
|
|
8.2 A sample program |
|
|
|
8.3 This book's link library |
5.3 |
|
|
9 |
10/20 10/22 10/24 |
9. Procedures (Cont.) |
Chapter 5 |
|
|
9.1 The runtime stack |
5.4 |
|
|
9.2 Stack operations |
5.4 |
|
|
9.3 Defining and using procedures |
5.5 |
|
|
10 |
10/27 10/29 10/31 |
10. Conditional Processing |
Chapter 6 |
|
|
10.1 A sample program |
6.1 |
Lab III on 10/27 |
|
10.2 Boolean instructions |
6.2 |
HW III on 10/31 |
|
10.3 Comparison instructions |
6.2 |
|
|
11 |
11/03 11/05 11/07 |
11. Conditional Processing (Cont.) |
Chapter 6 |
|
|
11.1 Conditional jumps |
6.3 |
|
|
11.2 Loop instructions |
6.4 |
|
|
11.3 Conditional structures |
6.5 |
|
|
11/07 |
Last day to change to or from S/U grading
Last day to change to or from audit grading
Last day to drop a full-term course or withdraw from school
|
|
|
|
12 |
11/10 11/12 |
12. Advanced Procedures |
Chapter 8 |
|
|
12.1 Local variables |
8.1–2 |
HW IV on 11/10 |
|
12.2 .MODEL , .INVOKE , & PROTO directives |
8.4–5 |
|
|
11/14 |
Exam II |
|
|
|
13 |
11/17 11/19 11/21 |
13. High-Level Language Interface |
Chapter 12 |
|
|
13.1 Introduction |
12.1 |
|
|
13.2 Inline assembly code |
12.2 |
|
|
13.3 C/C++ introduction |
|
|
|
14 |
11/24 11/26 |
14. High-Level Language Interface (Cont.) |
Chapter 12 |
|
|
14.1 Linking to C/C++ |
12.3 |
Lab IV on 11/24 |
|
14.2 Calling C/C++ functions |
12.3 |
|
|
11/28 |
Thanksgiving recess — no classes
|
|
|
|
15 |
12/01 12/03 12/05 |
15. Integer Arithmetic |
Chapter 7 |
|
|
15.1 A sample program |
7.1 |
|
|
15.2 Shift instructions |
7.2 |
|
|
15.3 Rotate instructions |
7.2 |
|
|
16 |
12/08 12/10 |
16. Integer Arithmetic (Cont.) |
Chapter 7 |
|
|
16.1 Multiplication instructions |
7.4 |
|
|
16.2 Division instructions |
7.4 |
Lab V on 12/10 |
|
17 |
12/17 |
Final exam (10:15am – 12:15pm, Wednesday) |
|
|
We're here. |
18 |
12/23 |
Grades posted before noon, Tuesday |
|
|
|
|
|
|