Skip to page content Skip to section menu Skip to site-wide navigation About Us | Consultancy | Training | Software | Publications | Open Source | Support | Open Standards | FAQ | Jobs
Site Style Info

Introduction to Assembly Language Programming — A 5-day Course

Synopsis

This course discusses basic 8-bit and 16-bit microcontroller architectures and their instruction sets. You'll learn assembly language programming techniques using variables, arrays and data structures, together with the basic structured programming techniques of sequence, choice and iteration and how they can be realised in assembly language.

Key Skills

Prerequisites

Scheduled and On-site Courses

Courses in this subject are scheduled on an 'ad-hoc' basis. We can arrange a course at our Carshalton centre or on customer site for any client wishing to send two or more delegates on the same course.

For courses at the Carshalton Centre the fee will be:

On-site course fees are as above + expenses recharged at cost.

For a 1:1 course in Carshalton the fee is £2750 + VAT. For a 1:1 on-site course the fee is £2750 + VAT + expenses recharged at cost.

If there are any dates showing below this line, a course has been scheduled and places for individuals are available at £1750. Otherwise, no courses are currently scheduled and the above fees apply.

Publicly scheduled dates, locations, and prices

A schedule of dates for this subject is not currently available. Please call 0800 651 0338 or use our contact form to enquire about places and availability.


Contents

Microprocessor Architectures

  • Microprocessors compared to micro-controllers
  • Uses of small micro-controllers
  • Harvard and Von-Neuman architectures compared
  • Memory types found in micro-controllers
  • Limitations of micro-controllers
  • Overview of common small micro-processor architectures

Instruction Sets and Assembly Language Programming

  • Anatomy of an instruction
  • Types of instruction
  • How an assembler converts assembly code into machine code (object code)
  • Formats for saving object code in files
  • Loading code into a micro-controller
  • Features found in typical Integrated Development Environments (IDEs)
  • How simulators and debuggers work
  • In circuit debugging and in circuit emulation compared and contrasted

Registers and Peripherals

  • Special Function Registers, Working Registers, General Purpose Registers
  • Typical on chip peripherals - USARTS, A/D, Timers, I/O Ports
  • Basic Input / Output ( I/O )

Basic Assembly Language Program Patterns and Templates

  • Implementing if-then-else logic in assembler
  • Implementing iteration loops in assembler
  • Calling and returning from functions in assembler
  • Understanding the concept of a stack
    • Hardware stacks and software stacks
    • Passing arguments to functions
    • Returning results from functions
    • Saving and restoring context when working with functions
  • Dealing with segmented memory architectures

Interrupts and Interrupt Handling

  • What is an interrupt
  • Enabling and disabling interrupts
  • Interrupt vectors
  • Prioritising of interrupts
  • Nesting of interrupts
  • Masking of interrupts
  • Saving and restoring context in interrupt handlers
  • Polling vs. interrupt driven event handling

Basic Input Output Techniques

  • Displaying patterns using LEDs
    • Cycling through a sequence of patterns
    • Using software delays
    • Using polling for timer counter overflow to implement a delay
  • Using timer interrupts to implement a delay
  • Using lookup tables to specify a sequence of patterns
  • Driving 7/8 segment LED displays
  • Buttons and keypads
    • Detecting button presses using polling / interrupt approaches
    • Interfacing to a 3 x 4 or 4 x 4 keypads

More Advanced Input Output Techniques

  • Driving a simple two line LCD display controller
  • Implementing RS232 communications using an on chip USART
  • Implementing RS232 communications using "bit banging"

Tables, Arrays and Records

  • Defining and implementing simple constant data lookup tables
  • Defining and working with simple arrays
  • Designing and implementing basic record oriented data structures
  • Maths
  • Binary, octal, decimal and hexadecimal numbers
  • Using 1's complement and 2's complement to represent negative numbers
  • How maths libraries implement basic integer arithmetic functions
  • Fixed point and floating point arithmetic
  • Converting a binary number into a string of digit characters
  • Implementing parity checking