Difference between revisions of "MVI@"
m |
m (Protected "MVI@" ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
The Move In Indirect (MVI@) instruction copies the value from the address contained in the specified address register into the specified destination register. Assuming the [[Double Byte Data Flag]] is <strong>clear</strong>, then this instruction will use 8 clock cycles <strong>unless</strong> R6 is used as the address register, in which case it will use 11 clock cycles.<br/><br/> | The Move In Indirect (MVI@) instruction copies the value from the address contained in the specified address register into the specified destination register. Assuming the [[Double Byte Data Flag]] is <strong>clear</strong>, then this instruction will use 8 clock cycles <strong>unless</strong> R6 is used as the address register, in which case it will use 11 clock cycles.<br/><br/> | ||
− | If | + | If prefixed with [[SDBD]], this instruction will perform two indirect reads to build a 16-bit value for its first operand, and will always use exactly 10 clock cycles regardless of which register is used as the address register. See [[Double Byte Data]] for more details on how [[SDBD]] interacts with [[Indirect Mode]].<br/><br/> |
+ | |||
+ | The "PULR Rx" instruction is an alias for "MVI@ R6, Rx". | ||
0000:0010:10aa:addd<br/> | 0000:0010:10aa:addd<br/> | ||
Line 27: | Line 29: | ||
aaa indicates the register containing the address | aaa indicates the register containing the address | ||
such that: | such that: | ||
− | aaa == 000 indicates | + | aaa == 000 indicates [[Direct Mode|direct mode]] [[MVI]] instruction |
aaa == 001 indicates register R1 | aaa == 001 indicates register R1 | ||
aaa == 010 indicates register R2 | aaa == 010 indicates register R2 | ||
Line 33: | Line 35: | ||
aaa == 100 indicates register R4 | aaa == 100 indicates register R4 | ||
aaa == 101 indicates register R5 | aaa == 101 indicates register R5 | ||
− | aaa == 110 indicates register R6 | + | aaa == 110 indicates register R6, which operates in [[Stack Mode|stack mode]] |
− | aaa == 111 indicates register R7<br/> | + | aaa == 111 indicates register R7, alias for [[Immediate Mode|immediate mode]] [[MVII]]<br/> |
Latest revision as of 08:52, 4 December 2010
Instruction Name | Move In Indirect |
Mnemonic | MVI@ |
CP1610 Clock Cycles | 8, 10, or 11 |
Interruptible | Yes |
Opcode Range | $0288-$02AF |
Input Flags | Double Byte Data Flag |
Output Flags | None |
The Move In Indirect (MVI@) instruction copies the value from the address contained in the specified address register into the specified destination register. Assuming the Double Byte Data Flag is clear, then this instruction will use 8 clock cycles unless R6 is used as the address register, in which case it will use 11 clock cycles.
If prefixed with SDBD, this instruction will perform two indirect reads to build a 16-bit value for its first operand, and will always use exactly 10 clock cycles regardless of which register is used as the address register. See Double Byte Data for more details on how SDBD interacts with Indirect Mode.
The "PULR Rx" instruction is an alias for "MVI@ R6, Rx".
0000:0010:10aa:addd
where: ddd indicates the register containing the value to move such that: ddd == 000 indicates register R0 ddd == 001 indicates register R1 ddd == 010 indicates register R2 ddd == 011 indicates register R3 ddd == 100 indicates register R4 ddd == 101 indicates register R5 ddd == 110 indicates register R6 ddd == 111 indicates register R7
aaa indicates the register containing the address such that: aaa == 000 indicates direct mode MVI instruction aaa == 001 indicates register R1 aaa == 010 indicates register R2 aaa == 011 indicates register R3 aaa == 100 indicates register R4 aaa == 101 indicates register R5 aaa == 110 indicates register R6, which operates in stack mode aaa == 111 indicates register R7, alias for immediate mode MVII