VAX Indexed Addressing Modes



Assembler

Comment

#<expr>[Rx] The operand is at the address (Rx * operand size) + PC.
(Assembles to (PC)+[Rx]. This is NOT a useful mode)
<expr>[Rx] The operand is at the address (Rx * operand size)+<expr>.
(PC relative. Assembles to <expr> - current_location (PC) [Rx] ).
@#<expr>[Rx] The operand is at the address (Rx * operand size)+<expr>.
(This has the same effect as <expr>[Rx] but assembles to @(PC)+[Rx]).
@<expr>[Rx] The operand is at the address (Rx * operand size) + the value (long) at the address <expr> .
(Compiles to @<expr> - current_location(PC)[Rx] ).
(Rn)[Rx] The operand is at the address (Rx * operand size) + Rn
-(Rn)[Rx] The value of Rn is decremented by the size of the operand type before adding it to (Rx * operand size) to obtain the address of the operand.
(Rn)+[Rx] The value of Rn is incremented by the size of the operand type after adding it to (Rx * operand size) to obtain the address of the operand.
@(Rn)+[Rx] The operands address is obtained by taking the value at the memory address specified by the contents of Rn and adding it to (Rx * operand size) . The contents of Rn are then incremented by 4.
<expr>(Rn)[Rx] The address of the operand is obtained by
<expr> + Rn + (Rx * operand size) .
@<expr>(Rn)[Rx] The operands address is obtained by taking the value at the address (<expr> + Rn) and adding it to (Rx * operand size) .
Previous Page

Notes