Intermediate to Advanced Assembly Language Programming

Course

In Carshalton

£ 1,750 + VAT

Description

  • Type

    Course

  • Location

    Carshalton

  • Duration

    5 Days

Students successfully completing this course will have a sound understanding of advanced assembly language programming techniques such as Macros and use of Linkers. You'll gain a thorough understanding of working with standard on-chip peripherals as well as interfacing off-chip peripherals (including SPI and I2C devices). You'll learn standard assembly language programming techniques. Suitable for: Attendees should have a good basic understanding of typical small microcontroller architectures and basic assembly language programming skills. Course SMC101 provides suitable background.

Facilities

Location

Start date

Carshalton (Surrey)
See map
1-3 Fairlands House, North Street, SM5 2HW

Start date

On request

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

Course programme

Overview
The course covers techniques needed to develop substantial assembly language programs as found for example in operating system kernel code, metering and measuring equipment, smart sensor systems, motor and engine controllers, byte code interpreters, device drivers and interrupt handlers. Aspects covered include:
  • Macro programming techniques
  • Use of linkers
  • Realising state machine and statechart designs in assembler
  • Implementing circular buffers, realising data structures in assembler
  • Assembly language programming of on-chip peripherals such as USARTs, I2C and SPI, A/D, Timers, and external interrupts
  • Programming and uses of PWM (Pulse Width Modulation) and Capture Compare
  • Real Time clocks, Watch Dog Timers and power conservation programming techniques.

Course Benefits
Students successfully completing this course will have a sound understanding of advanced assembly language programming techniques such as Macros and use of Linkers. You'll gain a thorough understanding of working with standard on-chip peripherals as well as interfacing off-chip peripherals (including SPI and I2C devices). You'll learn standard assembly language programming techniques for realising state machines and statecharts and for implementing basic multi-tasking strategies.

Course Contents
Overview of structured programming
  • Flow diagrams (including data flow and control flow)
  • State machine and state chart diagrams
  • Code specification using pseudo code (structured Natural Language)
  • Simple sequence diagrams
Macros and macro pre-processing
  • Assembler directives
  • Inline code vs. function calls
  • Simple macros
  • Parameterised macros
  • Using macros to realise basic data structures
  • Using macros to capture complex logic
  • Using macros to realise parameter passing in function calls
Libraries, modules and linkers
  • How linkers work
  • Benefits of modular programming
  • Benefits of using libraries
  • Understanding and using maths libraries
Data structures and arrays
  • Importance of data structures for structured programming
  • Implementing data structures in assembler
  • Implementing and manipulating arrays in assembler
Serial communications protocols and peripherals
  • RS232
  • I2C and SPI
  • RS485
  • Bit banging techniques for realising serial communications protocols
  • Using on chip peripherals for realising serial communications protocols
State machines and statecharts
  • Understanding Finite State Machines (FSMs)
  • Graphical representation of FSMs using UML notation
  • Realisation of FSMs in assembler
  • Limitations of FSMs
  • Hierarchical FSMs
  • Statecharts
  • (Advanced topic) Overview of communicating FSMs, sequence diagrams and SDL
Interrupts
  • Basic concepts
  • Prioritisation of interrupts
  • Integrating interrupt handling and application code
  • Layered interrupt handling
  • Circular buffers and interrupt handlers
Timers and their uses
  • Fundamental concepts
  • Timer interrupts and their uses
  • Timers and pulse-width modulation
  • Timers and data sampling and acquisition
  • Timers and task scheduling
Approaches to multi-tasking, and their implementation in assembler
  • Software only approaches
  • Interrupt driven approaches
  • Hybrid approaches
Useful peripherals
  • Keypads and button arrays
  • LCD displays and their controllers
  • Segmented LED displays
  • 2D LED arrays
Controlling high power devices
  • Interfacing
  • Relays
  • Programmable switches
Assembly language realisation of Programmable Logic Controller (PLC) functionality
  • Fundamentals of PLCs
  • Understanding Ladder Diagrams
  • Realising Ladder Diagram logic in assembler

Intermediate to Advanced Assembly Language Programming

£ 1,750 + VAT