SWAP

From Intellivision Wiki
Revision as of 20:12, 14 January 2005 by Pingaso (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Instruction NameSwap Bytes
MnemonicSWAP
CP1610 Clock Cycles6 or 8
InterruptibleNo
Opcode Range$0040-$0047
Input FlagsNone
Output FlagsSign Flag, Zero Flag

The Swap Bytes (SWAP) instruction can perform two very different functions depending on the "double swap" indicator. A single swap trades the lowest eight bits in a register with the upper eight bits. A double swap essentially copies the lowest eight bits in a register to the upper eight bits. Regardless of which swap is specified, the CP1610 then sets or clears the Sign Flag and [[Zero Flag] according to the resulting value. The opcode format is as follows.

   0000:0000:0100:1srr
where: s indicates the type of swap such that: s == 0 indicates a single swap s == 1 indicates a double swap
rr indicates the target register such that: rr == 00 indicates register R0 rr == 01 indicates register R1 rr == 10 indicates register R2 rr == 11 indicates register R3