CO-2103 Introduction to Assembly Language

Students are expected to read both CO-2103 Introduction to Assembly Language and CO-2206 Introduction to Computer Organisation in parallel. The two courses complement each other.

Acknowledgement: The course materials have been curated from various sources including books, online resources and teaching materials from other lecturers. Please see the acknowledgement in Introduction slides.

Course Content (Lectures):

  1. Introduction
  2. Background Knowledge
    • Digital Logic
    • Number Systems
      • Binary, Octal, Decimal, Hexadecimal
      • Conversion between number systems
      • Basic arithmetic operations
    • Data Representations
      • Integer – signed/unsigned, sign & magnitude, 1’s, 2’s complement, BCD, biased
      • Real – floating point
      • Text – ASCII
  3. Intel 8086 Microprocessor
    • Introduction to Processors
      • Brief History
      • Processor Differences
    • Basic Intel 8086 Architecture
      • Specifications
      • Registers
    • Memory System
      • Segmentation
      • Memory Access
    • Input/Output
      • Accessing/addressing
      • IO Schemes
    • Interrupt
      • Hardware
      • Software
    • Fetch-Execute Sequence
  4. Intel 8086 Assembly vs Machine Language
    • Assembly vs Machine Language
    • Intel 8086 Instruction Set
      • Groups
      • Instruction format
      • Addressing modes
    • Translation between AL and ML
    • Manual Coding
  5. Basics of 8086 Assembly Language Programming
  6. Tools in AL Programming
    • AL Programming Process
    • “Hello World!” in AL
    • Skeleton in brief
    • Elements of AL Programs
      • Statement
      • Label
      • Directive / Pseudo-Opcode
    • Software Interrupt (Function Call)‏
  7. Important AL Techniques
    • Indirect Addressing
    • Logic Control Structures
    • STACK
    • Subroutine / Procedure
  8. AL Directives / Operators
    • Source Code Formatting Directives
    • Symbolic Constants
    • Program Data and Storage
    • Naming Storage Locations
    • Defining Data (Storage)
    • Data-Related Operators and Directives
  9. Intel 8086 Instructions (Reference)
  10. Interrupts INT (Reference)

Tutorials:

  1. Tutorial 01: Introduction and Background (Solution)
  2. Tutorial 02: Floating Point (Ex01, Ex02)
  3. Tutorial 03: Manual Tracing (Solution)
  4. Tutorial 04: Simple AL Programming (Ref, Solution)
  5. Tutorial 05: Instruction Encoding (Solution)

Labs:

  1. Lab 01: MS Debug
  2. Lab 02: More MS Debug (Ans)
  3. Lab 03: MASM (Lab3.zip, Ans)
  4. Lab 04: INT for IO (Ans)
  5. Lab 05: Stack (Lab5.zip, Ans)
  6. Lab 06: INT for Time and Date (Ans)
  7. Lab 07: Programming the Screen (Lab7.zip)