SC202 Course Contents

Course Objectives

SC202 aims to introduce the students to microprocessor technology and assembly language programming. This includes the study of bus operations, memory decoding techniques, basic I/O structure and interrupt/exception handling. Motorola's MC68000 is used as a teaching vehicle.

On completion of this course, the student should be able to:

  1. Develop assembly language programs for a 16-bit microprocessor using structured and modular programming approaches.
  2. Become conversant with address decoding techniques and memory system design.
  3. Interface peripherals to a processor to facilitate device initiated transfers.

contentsCourse Contents homeReturn to Home


Detailed Course Contents back

1 Introduction to Computer Organisation

1.1  Classes of computers
    1.1.1   Mainframes
    1.1.2   Minicomputers
    1.1.3   Microcomputers 

1.2  The von Neumann Architecture
    1.2.1   Hardware and software approaches to computing
    1.2.2   The von Neumann architecture      
    1.2.3   An instruction    

1.3  Basic components of a microcomputer 
    1.3.1  The central processor unit (CPU)
    1.3.2   Memory
    1.3.3   Address bus
    1.3.4   Data bus
    1.3.5   Control bus
    1.3.6   Input/output ports 
                
1.4  CPU structure and function
    1.4.1   The arithmetic and logic section
          1.4.1.1   Arithmetic and logic unit (ALU)
          1.4.1.2   Condition code register (CCR)
          1.4.1.3   Accumulator and temporary register
    1.4.2  Control section
          1.4.2.1   Clock
          1.4.2.2   Instruction register
          1.4.2.3   Status flag
          1.4.2.4   Control signals from external bus
          1.4.2.5   Control signals to external bus
          1.4.2.6   Control signals within CPU
    1.4.3   Register section
          1.4.3.1   User-visible registers
          1.4.3.2   Control registers

1.5  Program execution
    1.5.1   The basic instruction cycle
    1.5.2   The instruction cycle with interrupt
    1.5.3   Program execution example

2 Structure of the 68000 Microprocessor

2.1  Introduction
   2.1.1  Design philosophy behind the 68000
   2.1.2  Genealogy of the 68000 family

2.2  Overview of the 68000
   2.2.1   Chip organisation
   2.2.2   Programmer's model
   2.2.3   Packaging
   2.2.4   Power consumption
   2.2.5   Features of the 68000 microprocessor

2.3  Data type
   2.3.1   Data and address organisation in memory
   2.3.2   The memory organisation for a typical 68000 system

2.4  The 68000 register set
   2.4.1   Data registers
   2.4.2   Address registers
   2.4.3   Program counter
   2.4.4   Status register
   2.4.5   Stack pointers

2.5  User and supervisor mode
   2.5.1   Transistion between modes

2.6  Basic 68000 signals
   2.6.1   The functions of the 68000 signals
   2.6.2   The 68000 pinouts

2.7  The minimal 68000 system

3 Programming the 68000

3.1  Introduction to assembly language programming
   3.1.1   Characteristics of Assembly Language
   3.1.2   Assembly language format
   3.1.3   Assembly Programming Tools
        
3.2  The 68000 instruction format
   3.2.1   Using the MC68000 Programming Reference Card
   3.2.1   Summary of the 68000 instruction set
   3.2.1   The MOVE instruction

3.3  Addressing modes
   3.3.1   Terminology (source, destination, EA)
   3.3.2   68000 addressing modes 
   3.3.3   Register direct addressing
   3.3.4   Address register indirect addressing
   3.3.5   Absolute addressing
   3.3.6   Program counter relative addressing
   3.3.7   Immediate data addressing
   3.3.8   Implied addressing

3.4  Data movement instructions

3.5  Single-operand instructions

3.6  Arithmetic instructions 
   3.6.1   Addition and subtraction
   3.6.2   Division and multiplication

3.7  Program control instructions

3.8  Rotate and shift instructions

3.9  Logical and bit manipulation instructions

3.10  Modular program design

3.11  Passing parameters to module
   3.11.1  Parameter passing using registers
   3.11.2  Parameter passing using memory
   3.11.3  Parameter passing using stacks

3.12  Stack and local variables
   3.12.1  LINK and UNLK instructions

3.13  Structured Programming

4 Basic Memory Structure

 4.1  Introduction
   4.1.1  The 3-bus architecture and bus buffering
   4.1.2  Semiconductor memory technology
   4.1.3  Types of memory

4.2  Timing diagrams
  4.2.1  Hold and setup time

4.3  Asynchronous bus operation
   4.3.1  The 68000 read cycle and timing diagram
   4.3.2  The DTACK* signal
   4.3.3  The 68000 write cycle and timing diagram

4.4  Memory address decoding     
   4.4.1  Full address decoding
   4.4.2  Partial address decoding
   4.4.3  Block address decoding

4.5  Address decoders    
   4.5.1  Random logic addresss decoders
   4.5.2  m-line to n-line address decoders

5 Basic I/O Structure

5.1  Introduction
   5.1.1  I/O interface organisation
   5.1.2  Peripheral chips

5.2  I/O control techniques
   5.2.1  Program-controlled I/O
   5.2.2  Interrupt-driven I/O
   5.2.3  Direct memory access (DMA)

5.3  I/O programming
   5.3.1  Memory-mapped I/O
   5.3.2  MOVEP and RESET instructions

5.4  Introduction to 68000 peripheral chips 
   5.4.1  Handshaking and buffering
   5.4.2  Parallel Interface/Timer (PI/T)
   5.4.3  Asynchronous Communications Interface Adapter (ACIA)

6 Interrupts and Exception Handling

 6.1  Introduction
   6.1.1  Interrupts and Exceptions
   6.1.2  The basic interrupt mechanism
   6.1.3  The pros and cons of an interrupt system

6.2  Hardware-initiated exceptions on the 68000
   6.2.1  Reset, bus error and interrupts
   6.2.2  Interrupt levels and priority
   6.2.3  Interrupt identification
           6.2.3.1  Interrupt polling
           6.2.3.2  Vectored interrupt
           6.2.3.3  Autovectored interrupt
   6.2.4  Interrupt handling on the 68000
   6.2.5  Interrupt acknowledgement sequence

6.3  Internally-generated exceptions on the 68000
   6.3.1  Privilege violation
   6.3.2  Address error
   6.3.3  Trace
   6.3.4  Others

6.4  Programming with interrupts 
   6.4.1  Interrupt service routine
   6.4.2  program example

homeReturn to Home