VMS Help
MACRO, VAX MACRO Assembler, Instructions, CASEx

 *Conan The Librarian (sorry for the slow response - running on an old VAX)

    Purpose:        Perform multi-way branching depending on arithmetic
                    input
    Format:         opcode selector.rx,base.rx,limit.rx,disp[0].bw,...,
                    disp[limit].bw
    Operation:      tmp = selector - base; PC = PC + if tmp LEQU limit
                    then SEXT (displ[tmp]) else {2 + 2*ZEXT (limit)}
    C. Codes:       N = {tmp LSS limit}, Z = {tmp EQL limit}, V = 0,
                    C = {tmp LSSU limit}
    Exceptions:     None
    Opcodes:        8F    CASEB    Case byte
                    AF    CASEW    Case word
                    CF    CASEL    Case long
    Description:    base is subtracted from selector and tmp is replaced
                    by the result. The temporary tmp is compared with
                    limit and if it is less than or equal (unsigned) a
                    branch displacement is selected by tmp added to PC
                    and PC is replaced by the result. Otherwise 2 *
                    (limit+1) is added to PC and the result is placed
                    in PC. This causes PC to be moved past the table of
                    branch displacements. The condition codes are always
                    affected by the comparison of tmp with limit.
  Close     HLB-list     TLB-list     Help  

[legal] [privacy] [GNU] [policy] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.