SIC/XE Reference Help

Addressing Modes

In SIC/XE there are several addressing modes available for format 3/4 instructions. They're controlled by several bit flags on the instructions. The below table is found in Appendix A of System Software: An Introduction to Systems Programming.

Notes

  • 4: Format 4 instruction

  • D: Direct-addressing instruction

  • A: Assembler selects either program-counter relative or base-relative mode

  • S: Compatible with instruction format for standard SIC machine

Addressing type

Flag bits
n i x b p e

Assembly notation

Calculation of target address (TA)

Operand

Notes

Simple

1 1 0 0 0 0

op c

disp

(TA)

D

1 1 0 0 0 1

+op m

addr

(TA)

4 D

1 1 0 0 1 0

op m

(PC) + disp

(TA)

A

1 1 0 1 0 0

op m

(B) + disp

(TA)

A

1 1 1 0 0 0

op c,X

disp + (X)

(TA)

D

1 1 1 0 0 1

+op m,X

addr + (X)

(TA)

4 D

1 1 1 0 1 0

op m,X

(PC) + disp + (X)

(TA)

A

1 1 1 1 0 0

op m,X

(B) + disp + (X)

(TA)

A

0 0 0 - - -

op m

b/p/e/disp

(TA)

D S

0 0 1 - - -

op m,X

b/p/e/disp + (X)

(TA)

D S

Indirect

1 0 0 0 0 0

op @c

disp

((TA))

D

1 0 0 0 0 1

+op @m

addr

((TA))

4 D

1 0 0 0 1 0

op @m

(PC) + disp

((TA))

A

1 0 0 1 0 0

op @m

(B) + disp

((TA))

A

Immediate

0 1 0 0 0 0

op #c

disp

TA

D

0 1 0 0 0 1

+op #m

addr

TA

4 D

0 1 0 0 1 0

op #m

(PC) + disp

TA

A

0 1 0 1 0 0

op #m

(B) + disp

TA

A

Combinations not in this table are considered invalid.

Simple

In simple modes, the operand is the value located at the target address.

Direct mode

In direct addressing mode, the operand is calculated by retrieving the value stored at what the target address points to. Direct addressing is used when n and i are both 1.

SIC mode

All opcodes in SIC (and SIC/XE) end in 00 for the last two bits, which happen to be the n and i bits. Because of this, any programs assembled for SIC will have instructions matching the last two lines for simple addressing when ran on SIC/XE. So when n and i are both 0, SIC mode is used. In this mode, the b, p, and e bits are treated as the first 3 bits of the 15-bit address that SIC programs use.

opcode

n

i

x

address

Bits

0-5

6

7

8

9-23

Length

6

1

1

1

15

always 0

always 0

The b, p, and e bits are now the first 3 bits.

Indirect

Indirect addressing is used when n is 1 and i is 0. In assembly this is specified by prefixing the operand with @. In indirect addressing, the operand is calculated by looking up the value located at the target address and using the value retrieved to do another lookup. The value found after the second lookup is the operand.

Instruction(address field = TA)Memory @ TA(contains pointer EA)Memory @ EA(contains the operand)1. Target address points tothe pointer's location.2. The pointer is used to findthe operand's location.

Immediate

Immediate addressing uses the target address as the operand. Immediate mode is used by prefixing the operand with #.

Base and program-counter relative

Base and program-counter relative are specified by the b and p bits respectively.

Base relative

Base relative is specified by the b bit. The disp field is limited to values of 0 ≤ disp ≤ 4095.

Program-counter relative

Program counter relative is specified by the p bit. The disp field is limited to values of -2048 ≤ disp ≤ 2047.

17 October 2025