Course Synopsis
This course focuses on machine-independent Assembly language programming and basic architecture of computer systems including fundamental concepts such as register structure, memory organization and addressing modes, organization of peripherals, and machine-level operations. These concepts are integrated through the use of assemblers, linkers and loaders. Students will learn how to write and debug programs using Assembly language programming language and how to interface Assembly language code to C/C++ programs. Students will also learn some basic Boolean logic and how it applies to programming and computer hardware.
· Course Learning Outcomes
At the end of the course, you should be able to:
· Describe the basic functionalities and limitations of computer system
· Explain concepts related to computer
· Know how high-level languages implement arithmetic expressions, loops, and logical structures at the machine level
· Write and debug programs using Assembly language programming language
· Write new assembly language programs without having to ask anyone for help
· Course Calendar
Topics | Lectures | Book / Handout | Section / Page |
Introduction to Assembly Language | 1 | Handouts | 1 |
Basic Computer Architecture | 1 | Handouts | 1-3 |
Registers | 2 | Handouts | 3-5 |
Instruction Groups | 2 | Handouts | 5-6 |
Intel iapx88 Architecture | 3 | Handouts | 6 |
History | 3 | Handouts | 6-7 |
Register Architecture | 3 | Handouts | 7-9 |
Our First Program | 3 | Handouts | 9-12 |
Segmented Memory Model | 4 | Handouts | 12-15 |
Addressing Modes | 4 | Handouts | 17 |
Data Declaration | 5 | Handouts | 17 |
Direct Addressing | 5 | Handouts | 17-21 |
Size Mismatch Errors | 5 | Handouts | 21-22 |
Assignment 1 | |||
Register Indirect Addressing | 6 | Handouts | 22-24 |
Register + Offset Addressing | 6 | Handouts | 25 |
Segment Association | 6 | Handouts | 25-26 |
Address Wraparound | 6, 7 | Handouts | 26-27 |
Addressing Modes Summary | 7 | Handouts | 27-28 |
Branching | 8 | Handouts | 31 |
Comparison and Conditions | 8 | Handouts | 31-33 |
Conditional Jumps | 8 | Handouts | 33-36 |
Unconditional Jump | 9 | Handouts | 36-37 |
Relative Addressing | 9 | Handouts | 37 |
Types of Jump | 9 | Handouts | 37-38 |
Sorting Example | 9 | Handouts | 38-41 |
Bit Manipulations | 10 | Handouts | 43 |
Multiplication Algorithm | 10 | Handouts | 43 |
Shifting and Rotations | 10 | Handouts | 43-45 |
Assignment 2 | |||
Multiplication in Assembly Language | 11 | Handouts | 46-47 |
Extended Operations | 11 | Handouts | 47-50 |
Bitwise Logical Operations | 12 | Handouts | 50-51 |
Masking Operations | 12 | Handouts | 51-53 |
Subroutines | 13 | Handouts | 55 |
Program Flow | 13 | Handouts | 55-57 |
Our First Subroutine | 13 | Handouts | 57-59 |
Stack | 14 | Handouts | 59-62 |
Saving and Restoring Registers | 14 | Handouts | 62-64 |
Parameter Passing Through Stack | 15 | Handouts | 64-67 |
Local Variables | 15 | Handouts | 67-68 |
Assignment 3 | |||
Display Memory | 16 | Handouts | 71 |
ASCII Codes | 16 | Handouts | 71-72 |
Display Memory Formation | 16 | Handouts | 72-74 |
Hello World in Assembly Language | 16 | Handouts | 74-76 |
Number Printing in Assembly | 17 | Handouts | 76-79 |
Screen Location Calculation | 18 | Handouts | 79-80 |
String Instructions | 18 | Handouts | 83 |
String Processing | 18 | Handouts | 83-85 |
STOS Example – Clearing the Screen | 19 | Handouts | 85-86 |
LODS Example – String Printing | 19 | Handouts | 86-87 |
SCAS Example – String Length | 19 | Handouts | 87-89 |
LES and LDS Example | 20 | Handouts | 89-90 |
Quiz 1 | |||
MOVS Example – Screen Scrolling | 21 | Handouts | 90-92 |
CMPS Example – String Comparison | 21 | Handouts | 92-93 |
Software Interrupts | 22 | Handouts | 95 |
Interrupts | 22 | Handouts | 95-98 |
Hooking an Interrupt | 22 | Handouts | 98-99 |
Mid Term Exam | |||
BIOS and DOS Interrupts | 23 | Handouts | 99-102 |
Real Time Interrupts and Hardware Interfacing | 23 | Handouts | 105 |
Hardware Interrupts | 24 | Handouts | 105-106 |
I/O Ports | 24, 25 | Handouts | 106-111 |
Terminate and Stay Resident | 26 | Handouts | 111-114 |
Assignment 4 | |||
Programmable Interval Timer | 27 | Handouts | 114-116 |
27 | Handouts | 116-122 | |
Debug Interrupts | 27 | Handouts | 125 |
Debugger using single step interrupt | 28, 29 | Handouts | 125-128 |
Debugger using breakpoint interrupt | 29 | Handouts | 128-130 |
Multitasking | 30 | Handouts | 131 |
Concepts of Multitasking | 30 | Handouts | 131-133 |
Elaborate Multitasking | 30 | Handouts | 133-135 |
Multitasking Kernel as TSR | 31, 32 | Handouts | 135-139 |
Assignment 5 | |||
Video Services | 33 | Handouts | 141 |
BIOS Video Services | 33 | Handouts | 141-144 |
DOS Video Services | 34 | Handouts | 144-145 |
Secondary Storage | 34 | Handouts | 147 |
Physical Formation | 34 | Handouts | 147-148 |
Storage Access Using BIOS | 35 | Handouts | 148-153 |
Storage Access using DOS | 36 | Handouts | 153-158 |
Device Drivers | 37 | Handouts | 158-161 |
Assignment 6 | |||
38 | Handouts | 163-165 | |
Serial Communication | 38 | Handouts | 165-166 |
Protected Mode Programming | 39, 40 | Handouts | 167-169 |
32bit Programming | 41 | Handouts | 170-172 |
VESA Linear Frame Buffer | 42 | Handouts | 172-174 |
Interrupt Handling | 43 | Handouts | 174-176 |
Interfacing with High Level Languages | 44 | Handouts | 179 |
Calling Conventions | 44 | Handouts | 179 |
Calling C from Assembly | 44 | Handouts | 179-181 |
Calling Assembly from C | 44 | Handouts | 181 |
Quiz 2 | |||
Comparison with Other Processors | 45 | Handouts | 183 |
Motorola 68K Processors | 45 | Handouts | 183-184 |
Sun SPARC Processor | 45 | Handouts | 184-185 |
Final Term Exam |
Post a Comment