  | 
		
VAX MACRO and Instruction Set Reference Manual
 
 
 
ACB
 
Add Compare and Branch
 
 
Format
 opcode limit.rx, add.rx, index.mx, displ.bw
  
Condition Codes
  
    | 
      N|| <--- index LSS 0;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- index EQL 0;
     | 
    
       
     | 
   
  
    | 
      V|| <--- {integer overflow};
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  integer overflow
   floating overflow
   floating underflow
   reserved operand
 
Opcodes
  
    | 
      9D
     | 
    
      ACBB
     | 
    
      Add Compare and Branch Byte
     | 
   
  
    | 
      3D
     | 
    
      ACBW
     | 
    
      Add Compare and Branch Word
     | 
   
  
    | 
      F1
     | 
    
      ACBL
     | 
    
      Add Compare and Branch Long
     | 
   
  
    | 
      4F
     | 
    
      ACBF
     | 
    
      Add Compare and Branch F_floating
     | 
   
  
    | 
      4FFD
     | 
    
      ACBG
     | 
    
      Add Compare and Branch G_floating
     | 
   
  
    | 
      6F
     | 
    
      ACBD
     | 
    
      Add Compare and Branch D_floating
     | 
   
  
    | 
      6FFD
     | 
    
      ACBH
     | 
    
      Add Compare and Branch H_floating
     | 
   
 
 
Description
The addend operand is added to the index operand and the index operand
is replaced by the result. The index operand is compared with the limit
operand. If the addend operand is positive (or zero) and the comparison
is less than or equal to zero, or if the addend is negative and the
comparison is greater than or equal to zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
 
Notes
 
 
  - ACB efficiently implements the general FOR or DO loops in
  high-level languages, since the sense of the comparison between
  index and limit is dependent on the
  sign of the addend.
  
 - On integer overflow, the index operand is replaced by the low-order
  bits of the true result. Comparison and branch determination proceed
  normally on the updated index operand.
  
 - On floating underflow, if FU is clear, the index operand is
  replaced by zero, and comparison and branch determination proceed
  normally. A fault occurs if FU is set, and the index operand is
  unaffected.
  
 - On floating overflow, the instruction takes a floating overflow
  fault, and the index operand is unaffected.
  
 - On a reserved operand fault, the index operand is unaffected, and
  condition codes are UNPREDICTABLE.
  
 - Except for the circumstance described in note 5, the C-bit is
  unaffected.
  
 
AOBLEQ
 
Add One and Branch Less Than or Equal
 
 
Format
 opcode limit.rl, index.ml, displ.bb
  
Condition Codes
  
    | 
      N|| <--- index LSS 0;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- index EQL 0;
     | 
    
       
     | 
   
  
    | 
      V|| <--- {integer overflow};
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  integer overflow
 
Opcodes
  
    | 
      F3
     | 
    
      AOBLEQ
     | 
    
      Add One and Branch Less Than or Equal
     | 
   
 
 
Description
One is added to the index operand, and the index operand is replaced by
the result. The index operand is compared with the limit operand. If
the comparison is less than or equal to zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
 
Notes
 
 
  - Integer overflow occurs if the index operand before addition is the
  largest positive integer. On overflow, the index operand is replaced by
  the largest negative integer, and the branch is taken.
  
 - The C-bit is unaffected.
  
 
AOBLSS
 
Add One and Branch Less Than
 
 
Format
 opcode limit.rl, index.ml, displ.bb
  
Condition Codes
  
    | 
      N|| <--- index LSS 0;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- index EQL 0;
     | 
    
       
     | 
   
  
    | 
      V|| <--- {integer overflow};
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  integer overflow
 
Opcodes
  
    | 
      F2
     | 
    
      AOBLSS
     | 
    
      Add One and Branch Less Than
     | 
   
 
 
Description
One is added to the index operand and the index operand is replaced by
the result. The index operand is compared with the limit operand. If
the comparison result is less than zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
 
Notes
 
 
  - Integer overflow occurs if the index operand before addition is the
  largest positive integer. On overflow, the index operand is replaced by
  the largest negative integer, and thus (unless the limit operand is the
  largest negative integer), the branch is taken.
  
 - The C-bit is unaffected.
  
 
B
 
Branch on (condition)
 
 
Format
 opcode displ.bb
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  None.
 
Opcodes
  
    | 
      14
     | 
    
      {N OR Z} EQL 0
     | 
    
      BGTR
     | 
    
      Branch on Greater Than (signed)
     | 
   
  
    | 
      15
     | 
    
      {N OR Z} EQL 1
     | 
    
      BLEQ
     | 
    
      Branch on Less Than or Equal (signed)
     | 
   
  
    | 
      12
     | 
    
      Z EQL 0
     | 
    
      BNEQ,
     | 
    
      Branch on Not Equal (signed)
     | 
   
  
    | 
       
     | 
    
       
     | 
    
      BNEQU
     | 
    
      Branch on Not Equal Unsigned
     | 
   
  
    | 
      13
     | 
    
      Z EQL 1
     | 
    
      BEQL,
     | 
    
      Branch on Equal (signed)
     | 
   
  
    | 
       
     | 
    
       
     | 
    
      BEQLU
     | 
    
      Branch on Equal Unsigned
     | 
   
  
    | 
      18
     | 
    
      N EQL 0
     | 
    
      BGEQ
     | 
    
      Branch on Greater Than or Equal (signed)
     | 
   
  
    | 
      19
     | 
    
      N EQL 1
     | 
    
      BLSS
     | 
    
      Branch on Less Than (signed)
     | 
   
  
    | 
      1A
     | 
    
      {C OR Z} EQL 0
     | 
    
      BGTRU
     | 
    
      Branch on Greater Than Unsigned
     | 
   
  
    | 
      1B
     | 
    
      {C OR Z} EQL 1
     | 
    
      BLEQU
     | 
    
      Branch Less Than or Equal Unsigned
     | 
   
  
    | 
      1C
     | 
    
      V EQL 0
     | 
    
      BVC
     | 
    
      Branch on Overflow Clear
     | 
   
  
    | 
      1D
     | 
    
      V EQL 1
     | 
    
      BVS
     | 
    
      Branch on Overflow Set
     | 
   
  
    | 
      1E
     | 
    
      C EQL 0
     | 
    
      BGEQU,
     | 
    
      Branch on Greater Than or Equal Unsigned
     | 
   
  
    | 
       
     | 
    
       
     | 
    
      BCC
     | 
    
      Branch on Carry Clear
     | 
   
  
    | 
      1F
     | 
    
      C EQL 1
     | 
    
      BLSSU,
     | 
    
      Branch on Less Than Unsigned
     | 
   
  
    | 
       
     | 
    
       
     | 
    
      BCS
     | 
    
      Branch on Carry Set
     | 
   
 
 
Description
The condition codes are tested. If the condition indicated by the
instruction is met, the sign-extended branch displacement is added to
the program counter (PC), and the PC is replaced by the result.
 
Notes
 
 
The VAX conditional branch instructions permit considerable flexibility
in branching but require care in choosing the correct branch
instruction. The conditional branch instructions are best seen as three
overlapping groups:
 
  - Overflow and Carry Group
  
    | 
      BVS
     | 
    
      V EQL 1
     | 
   
  
    | 
      BVC
     | 
    
      V EQL 0
     | 
   
  
    | 
      BCS
     | 
    
      C EQL 1
     | 
   
  
    | 
      BCC
     | 
    
      C EQL 0
     | 
   
 
     Typically, you would use these instructions to check for overflow
    (when overflow traps are not enabled), for multiprecision arithmetic,
    and for other special purposes.
   - Unsigned Group
  
    | 
      BLSSU
     | 
    
      C EQL 1
     | 
   
  
    | 
      BLEQU
     | 
    
      {C OR Z} EQL 1
     | 
   
  
    | 
      BEQLU
     | 
    
      Z EQL 1
     | 
   
  
    | 
      BNEQU
     | 
    
      Z EQL 0
     | 
   
  
    | 
      BGEQU
     | 
    
      C EQL 0
     | 
   
  
    | 
      BGTRU
     | 
    
      {C OR Z} EQL 0
     | 
   
 
     These instructions typically follow integer and field instructions
    where the operands are treated as unsigned integers, address
    instructions, and character string instructions.
   - Signed Group
  
    | 
      BLSS
     | 
    
      N EQL 1
     | 
   
  
    | 
      BLEQ
     | 
    
      {N OR Z} EQL 1
     | 
   
  
    | 
      BEQL
     | 
    
      Z EQL 1
     | 
   
  
    | 
      BNEQ
     | 
    
      Z EQL 0
     | 
   
  
    | 
      BGEQ
     | 
    
      N EQL 0
     | 
   
  
    | 
      BGTR
     | 
    
      {N OR Z} EQL 0
     | 
   
 
     These instructions typically follow floating-point instructions,
    decimal string instructions, and integer and field instructions where
    the operands are being treated as signed integers.
  
 
BB
 
Branch on Bit
 
 
Format
 opcode pos.rl, base.vb, displ.bb
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  reserved operand
 
Opcodes
  
    | 
      E0
     | 
    
      BBS
     | 
    
      Branch on Bit Set
     | 
   
  
    | 
      E1
     | 
    
      BBC
     | 
    
      Branch on Bit Clear
     | 
   
 
 
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result.
 
Notes
 
 
  - A reserved operand fault occurs if pos GTRU 31 and
  the bit specified is contained in a register.
  
 - On a reserved operand fault, the condition codes are UNPREDICTABLE.
  
 
BB
 
Branch on Bit (and modify without interlock)
 
 
Format
 opcode pos.rl, base.vb, displ.bb
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  reserved operand
 
Opcodes
  
    | 
      E2
     | 
    
      BBSS
     | 
    
      Branch on Bit Set and Set
     | 
   
  
    | 
      E3
     | 
    
      BBCS
     | 
    
      Branch on Bit Clear and Set
     | 
   
  
    | 
      E4
     | 
    
      BBSC
     | 
    
      Branch on Bit Set and Clear
     | 
   
  
    | 
      E5
     | 
    
      BBCC
     | 
    
      Branch on Bit Clear and Clear
     | 
   
 
 
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result. Regardless of whether the branch
is taken or not, the tested bit is put in the new state as indicated by
the instruction.
 
Notes
 
 
  - A reserved operand fault occurs if pos GTRU 31 and
  the bit is contained in a register.
  
 - On a reserved operand fault, the field is unaffected, and the
  condition codes are UNPREDICTABLE.
  
 - The modification of the bit is not an interlocked operation. See
  BBSSI and BBCCI for interlocking instructions.
  
 
BB
 
Branch on Bit Interlocked
 
 
Format
 opcode pos.rl, base.vb, displ.bb
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  reserved operand
 
Opcodes
  
    | 
      E6
     | 
    
      BBSSI
     | 
    
      Branch on Bit Set and Set Interlocked
     | 
   
  
    | 
      E7
     | 
    
      BBCCI
     | 
    
      Branch on Bit Clear and Clear Interlocked
     | 
   
 
 
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result. Regardless of whether the branch
is taken, the tested bit is put in the new state as indicated by the
instruction. If the bit is contained in memory, the reading of the
state of the bit and the setting of the bit to the new state is an
interlocked operation. No other processor or I/O device can do an
interlocked access on this bit during the interlocked operation.
 
Notes
 
 
  - A reserved operand fault occurs if pos GTRU 31 and
  the specified bit is contained in a register.
  
 - On a reserved operand fault, the field is unaffected, and the
  condition codes are UNPREDICTABLE.
  
 - Except for memory interlocking, BBSSI is equivalent to BBSS, and
  BBCCI is equivalent to BBCC.
  
 - This instruction is designed to modify interlocks with other
  processors or devices. For example, to implement "busy
  waiting":
 
  
 
BLB
 
Branch on Low Bit
 
 
Format
 opcode src.rl, displ.bb
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  None.
 
Opcodes
  
    | 
      E8
     | 
    
      BLBS
     | 
    
      Branch on Low Bit Set
     | 
   
  
    | 
      E9
     | 
    
      BLBC
     | 
    
      Branch on Low Bit Clear
     | 
   
 
 
Description
The low bit (bit 0) of the source operand is tested. If it is equal to
the test state indicated by the instruction, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
 
 
BR
 
Branch
 
 
Format
 opcode displ.bx
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  None.
 
Opcodes
  
    | 
      11
     | 
    
      BRB
     | 
    
      Branch with Byte Displacement
     | 
   
  
    | 
      31
     | 
    
      BRW
     | 
    
      Branch with Word Displacement
     | 
   
 
 
Description
The sign-extended branch displacement is added to the program counter
(PC), and the PC is replaced by the result.
 
 
BSB
 
Branch to Subroutine
 
 
Format
 opcode displ.bx
  
Condition Codes
  
    | 
      N|| <--- N;
     | 
    
       
     | 
   
  
    | 
      Z|| <--- Z;
     | 
    
       
     | 
   
  
    | 
      V|| <--- V;
     | 
    
       
     | 
   
  
    | 
      C|| <--- C;
     | 
    
       
     | 
   
 
Exceptions
  None.
 
Opcodes
  
    | 
      10
     | 
    
      BSBB
     | 
    
      Branch to Subroutine with Byte Displacement
     | 
   
  
    | 
      30
     | 
    
      BSBW
     | 
    
      Branch to Subroutine with Word Displacement
     | 
   
 
 
Description
The program counter (PC) is pushed on the stack as a longword. The
sign-extended branch displacement is added to the PC, and the PC is
replaced by the result.
 
  
  
		 |