Search   
Home  Print View  

 

Programmer's Manual

Branch Content

Addressing Modes

Instructions handle data using one of the following addressing modes.

Register

Data is transferred between CPU registers.

Example:

     mov a, b       ; a=b    coding: 1021

Immediate

A register is loaded with data submitted by the operand.

Example:

     mvi a, 0x03ff  ; a=03ff  coding: 2081  03ff

Direct

Data is transferred between memory and a register. The address is given in the operand.

Example:

    ld  a, 0x4000  ; a=[4000]  coding: 4891  4000

Indirect

Data is transferred between memory and a register. The address is given by another register used as a pointer.

Example:

    ldx  a, e  ; a=[e]  coding: 3591

Relative

It is possible to add a given value to the Program Counter (PC) to compute a jump relative to the current instruction; this is termed a "relative branch".

The relative addressing mode can in turn be direct (if the offset value is given by the operand) or indirect (if it is given by a register).

Examples:

    jpr  0x0004    ; PC=PC+4   (Relative Direct)   coding: 208b  0004
    jprx e         ; PC=PC+e   (Relative Indirect) coding: 259b  

Notice that the terms "direct" and "indirect" are not entirely appropriate since data has been given immediately and by a register respectively. However, since the data in question represents an address, we think that "direct" and "indirect" are more intuitive in this case.

Stack

Data is transferred between a register and a memory stack pointed by the Stack Pointer register (SP). Stack instructions are: PUSH and POP.

The Stack grows "backwards", that is, when a word is placed into the stack using the PUCH instruction, SP decrements pointing to the memory located just "above".

The Stack is normally "ready for insertion", that is a PUSH instruction will write first, then decrement the Stack Pointer. A POP instruction will increment SP first, then read.

Homebuilt CPUs WebRing

JavaScript by Qirien Dhaela

Join the ring?

David Brooks, the designer of the Simplex-III homebrew computer, has founded the Homebuilt CPUs Web Ring. To join, drop David a line, mentioning your page's URL. He will then add it to the list.
You will need to copy this code fragment into your page.

Project start date: May 13 of 2009