Credit Hours: 3 Lecture Hours: 2 Laboratory Hours: 2 Prerequisites: CSC 227
Credit Hours: 3 Lecture Hours: 2 Laboratory Hours: 2 Prerequisites: CSC 227
Credit Hours: 3
Lecture Hours: 2
Laboratory Hours: 2
Prerequisites: CSC 227
Course Objectives
Upon completing the course, students will able to
o Develop simple assembly language programs and understand the underlying operations
of more complex programs,
o Understand the role of interrupts in performing I/O, and
o Write and use functions, and understand how function calls are carried out, including
passing parameters.
Course Description
Assembly language fundamentals; editing, assembling, and linking an assembly program; basics
of assembly language programming (program segments, instruction components, instruction sets,
addressing modes, data movement instructions, arithmetic and logic instructions, program
control instructions); basic directives and instructions; assembly program structure; variable
declaration and memory allocation; data types and addressing modes; input/output: character I/O,
basic arithmetic, number I/O; control transfer: subroutines, jumps, loops; macros and structures;
conditional assembly directives; string I/O and manipulation; modular programming; file
processing; interrupts.
Course Content
Chapter 1 - Assembly Language Fundamentals
1.1 Basic elements of Assembly language
1.2 Assembling, linking, and running programs
1.3 Defining data
1.4 Symbolic constants
1.5 A 32-bit Assembler program template
1.6 Input/output of numbers and strings
Chapter 2 - Data Transfers and Arithmetic
2.1 Data transfer instructions
2.2 Addition and subtraction
2.3 Data-related operations and directives
2.4 Indirect addressing
2.5 JMP and LOOP instructions
Chapter 3 - Procedures
3.1 Linking to an external library
3.2 Stack operations
3.3 Defining and using procedures
Chapter 4 - Conditional Processing
4.1 CPU flags
4.2 Boolean and comparison instructions
4.3 Conditional jumps
4.4 Conditional loop instructions
Chapter 5 - Integer Arithmetic
5.1 Shift and rotate instructions
1
5.2 Shift and rotate applications
5.3 Multiplication and division instructions
Chapter 6 - Procedures and Functions
6.1 Passing parameters (by value and by reference, in global variables, in registers, on the
stack, in the code stream)
6.2 Function results
6.3 Recursion
Chapter 7 - Interrupt Handling
7.1 Hardware interrupts
7.2 Runtime program structure
7.3 Working with COM programs
7.4 Interrupt handling
7.5 Working with system speaker
7.6 DOS memory map
7.7 Ports map
Teaching Methods
- Lecture, Lab
Method of Assessment
- Lab: 20%
- Continuous assessment 30%
- Mid exam: 20%
- Final exam: 30%
Textbook
- Richard Trooper: Assembly Language Programming the IBM PC, McGraw Hill, 1994.
References
- Kip Irvine: Assembly Language for Intel-Based Computers, 5th edition, Prentice Hall, 2006.
- P. Abel: IBM PC Assembly Language and Programming, 5th edition, Prentice Hall,
2005.