MIT PDP-10 'Info' file converted to Hypertext 'html' format by Henry Baker
Previous
Up
Next
Halfword instructions
The halfword class of instructions perform data transmission between
one half of an accumulator and one half of a memory location.  There
are sixty-four halfword instructions.  Each mnemonic begins with H
and has four modifiers.  The first modifier specifies which half of
the source word; the second specifies which half of the destination.
The third modifier specifies what to do to the other half of the
destination.  The fourth modifier specifies the source of data and
the destination of the result.
H halfword from |R right  of source to
                |L left
                |R right  of destination
                |L left
                |  no modification of other half
                |Z zero other half
                |O set other half to ones
                |E sign extend source to other half
                |  from memory to AC
                |I Immediate
                |M from AC to memory
                |S to self. If AC#0, then move to AC also.
C18 means bit 18 of the contents (the high bit of the low half);
C0 means bit 0 of the contents (the high bit of the high half);
E18 means the high bit of the effective address.
777777*X evaluates to 0 if X is 0, or 777777 (all ones) if X is one.
Such expressions represent sign extension.
HRR             CR(AC) <- CR(E)
HRRI            CR(AC) <- E
HRRM            CR(E)  <- CR(AC)
HRRS            CR(E)  <- CR(E); if AC#0 then CR(AC) <- CR(E)
HRRZ            C(AC) <- 0,,CR(E)
HRRZI           C(AC) <- 0,,E
HRRZM           C(E)  <- 0,,CR(AC)
HRRZS           C(E)  <- 0,,CR(E); if AC#0 then C(AC) <- 0,,CR(E)
HRRO            C(AC) <- 777777,,CR(E)
HRROI           C(AC) <- 777777,,E
HRROM           C(E)  <- 777777,,CR(AC)
HRROS           C(E)  <- 777777,,CR(E); if AC#0 then C(AC) <- 777777,,CR(E)
HRRE            C(AC) <- 777777*C18(E),,CR(E);
HRREI           C(AC) <- 777777*E18,,E
HRREM           C(E)  <- 777777*C18(AC),,CR(AC)
HRRES           C(E)  <- 777777*C18(E),,CR(E);
                        if AC#0 then C(AC) <- 777777*C18(E),,CR(E)
HRL             CL(AC) <- CR(E)
HRLI            CL(AC) <- E
HRLM            CL(E)  <- CR(AC)
HRLS            CL(E)  <- CR(E); if AC#0 then CL(AC) <- CR(E)
HRLZ            C(AC) <- CR(E),,0
HRLZI           C(AC) <- E,,0
HRLZM           C(E)  <- CR(AC),,0
HRLZS           C(E)  <- CR(E),,0; if AC#0 then C(AC) <- CR(E),,0
HRLO            C(AC) <- CR(E),,777777
HRLOI           C(AC) <- E,,777777
HRLOM           C(E)  <- CR(E),,777777
HRLOS           C(E)  <- CR(E),,777777; if AC#0 then C(AC) <- CR(E),,777777
HRLE            C(AC) <- CR(E),,777777*C18(E)
HRLEI           C(AC) <- E,,777777*E18
HRLEM           C(E)  <- CR(AC),,777777*C18(AC)
HRLES           C(E)  <- CR(E),,777777*C18(E);
                        if AC#0 then C(AC) <- CR(E),,777777*C18(E)
HLR             CR(AC) <- CL(E)
HLRI            CR(AC) <- 0
HLRM            CR(E)  <- CL(AC)
HLRS            CR(E)  <- CL(E); if AC#0 then CR(AC) <- CL(E)
HLRZ            C(AC) <- 0,,CL(E)
HLRZI           C(AC) <- 0
HLRZM           C(E)  <- 0,,CL(AC)
HLRZS           C(E)  <- 0,,CL(E); if AC#0 then C(AC) <- 0,,CL(E)
HLRO            C(AC) <- 777777,,CL(E)
HLROI           C(AC) <- 777777,,0
HLROM           C(E)  <- 777777,,CL(AC)
HLROS           C(E)  <- 777777,,CL(E); if AC#0 then C(AC) <- 777777,,CL(E)
HLRE            C(AC) <- 777777*C0(E),,CL(E);
HLREI           C(AC) <- 0
HRREM           C(E)  <- 777777*C0(AC),,CL(AC)
HRRES           C(E)  <- 777777*C0(E),,CL(E);
                        if AC#0 then C(AC) <- 777777*C0(E),,CR(E)
HLL             CL(AC) <- CL(E)
HLLI            CL(AC) <- 0
HLLM            CL(E)  <- CL(AC)
HLLS            CL(E)  <- CL(E); if AC#0 then CL(AC) <- CL(E)
HLLZ            C(AC) <- CL(E),,0
HLLZI           C(AC) <- 0
HLLZM           C(E)  <- CL(AC),,0
HLLZS           C(E)  <- CL(E),,0; if AC#0 then C(AC) <- CL(E),,0
HLLO            C(AC) <- CL(E),,777777
HLLOI           C(AC) <- 0,,777777
HLLOM           C(E)  <- CL(E),,777777
HLLOS           C(E)  <- CL(E),,777777; if AC#0 then C(AC) <- CL(E),,777777
HLLE            C(AC) <- CL(E),,777777*C0(E)
HLLEI           C(AC) <- 0
HLLEM           C(E)  <- CL(AC),,777777*C0(AC)
HLLES           C(E)  <- CL(E),,777777*C0(E);
                        if AC#0 then C(AC) <- CL(E),,777777*C0(E)