80x86 Assembly

 C/C++

 CGI

 CodeView

 DOS

 Getting Started

 HTML

 MSAM

 Textbook


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