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)