Difference between revisions of "SWAP"

From Intellivision Wiki
Jump to: navigation, search
 
Line 9: Line 9:
 
<tr><td>Output Flags</td><td>[[Sign Flag]], [[Zero Flag]]</td></tr>
 
<tr><td>Output Flags</td><td>[[Sign Flag]], [[Zero Flag]]</td></tr>
 
</table><br/>
 
</table><br/>
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.<br/>
+
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 number of clock cycles used depends on the type of swap specified.  A single swap will use 6 clock cycles and a double swap will use 8 clock cycles.  The opcode format is as follows.<br/>
  
 
     0000:0000:0100:1srr<br/>
 
     0000:0000:0100:1srr<br/>

Revision as of 20:13, 14 January 2005

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 number of clock cycles used depends on the type of swap specified. A single swap will use 6 clock cycles and a double swap will use 8 clock cycles. 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