Low-Level Programming (Cambridge (CIE) A Level Computer Science): Revision Note

Exam code: 9618

Robert Hampton

Written by: Robert Hampton

Reviewed by: James Woodhouse

Updated on

Low-level programming

How do I write low-level code using addressing modes?

Immediate addressing

  • Syntax: LOAD #value

  • Meaning: Load a constant value directly into the accumulator

LOAD #5       ; Load the constant value 5 into the accumulator
ADD #3        ; Add 3 to the accumulator
STORE 200     ; Store result at memory address 200
  • Use when you want to work with literal values, not data in memory

Direct addressing

  • Syntax: LOAD address

  • Meaning: Load the value stored at the specified memory address

LOAD 100      ; Load the value stored at memory address 100
ADD 101       ; Add the value at address 101
STORE 102     ; Store result in address 102
  • Use when the data is stored at known memory addresses

Indirect addressing

  • Syntax: LOAD @address

  • Meaning: The address given points to another address, where the data is stored

LOAD @150     ; Load value from the address stored in location 150
STORE 200     ; Store it in address 200
  • Example:

    • Memory[150] = 300

    • Memory[300] = 42

    • LOAD @150 loads 42 into the accumulator.

  • Use when data is stored in dynamically referenced locations

Indexed addressing

  • Syntax: LOAD base[X]

  • Meaning: Load from base address + index register (e.g. X)

LOAD 500[X]   ; Load value from address (500 + contents of index register X)
ADD 501[X]    ; Add value from another offset
  • Assume:

    • X = 2

    • This will access address 502 and 503

  • Use for working with arrays or tables, where the index changes

Relative addressing

  • Syntax: BRANCH offset

  • Meaning: Jump to a new instruction relative to the current instruction

BRZ +3        ; If accumulator is zero, skip 3 lines ahead
BRP -2        ; If positive, jump 2 lines back
  • Used in control flow:

LOOP:  LOAD #1
       SUB 200
       BRZ END
       BR -3      ; Loop back to LOOP
END:   HALT
  • Use for loops and conditional branches without needing absolute addresses

You've read 0 of your 5 free revision notes this week

Unlock more, it's free!

Join the 100,000+ Students that ❤️ Save My Exams

the (exam) results speak for themselves:

Did this page help you?

Robert Hampton

Author: Robert Hampton

Expertise: Computer Science Content Creator

Rob has over 16 years' experience teaching Computer Science and ICT at KS3 & GCSE levels. Rob has demonstrated strong leadership as Head of Department since 2012 and previously supported teacher development as a Specialist Leader of Education, empowering departments to excel in Computer Science. Beyond his tech expertise, Robert embraces the virtual world as an avid gamer, conquering digital battlefields when he's not coding.

James Woodhouse

Reviewer: James Woodhouse

Expertise: Computer Science & English Subject Lead

James graduated from the University of Sunderland with a degree in ICT and Computing education. He has over 14 years of experience both teaching and leading in Computer Science, specialising in teaching GCSE and A-level. James has held various leadership roles, including Head of Computer Science and coordinator positions for Key Stage 3 and Key Stage 4. James has a keen interest in networking security and technologies aimed at preventing security breaches.