We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
Block Move Addressing: Difference between revisions
From SnesLab
(current byte copy completed) |
(→References: hid archive URL for E&L) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Two instructions use '''Block Move Addressing''' on the [[65c816]]: | Two instructions use '''Block Move Addressing''' on the [[65c816]]: | ||
* [[MVP]] | * [[MVP]] (opcode 44) | ||
* [[MVN]] | * [[MVN]] (opcode 54) | ||
The total number of bytes copied is the value in the [[C accumulator]] plus one. If a block move is interrupted, the current byte copy is completed, then the interrupt is serviced. | They are both 3 bytes long. The total number of bytes copied is the value in the [[C accumulator]] plus one. If a block move is interrupted, the current byte copy is completed, then the interrupt is serviced. | ||
=== | When the copying is complete: | ||
* [[Eyes & Lichty]], page 388 | * the accumulator will contain the value $FFFF. | ||
* both index registers will point to the byte one past the end of the blocks they were pointing to | |||
* if the source and destination blocks do not overlap, the source block is still intact | |||
==== Syntax ==== | |||
[[Asar]]: | |||
<pre> | |||
MVN srds | |||
</pre> | |||
=== See Also === | |||
* [[DMA]] | |||
=== References === | |||
* [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/388 page 388] | |||
* "Block Moves" on [https://archive.org/details/0893037893ProgrammingThe65816/page/103 page 103], lbid | |||
* section 3.5.9 of 65c816 datasheet, https://westerndesigncenter.com/wdc/documentation/w65c816s.pdf | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:Addressing Modes]] | [[Category:Addressing Modes]] | ||
[[Category:Simple Admodes]] | |||
[[Category:65c816 additions]] | [[Category:65c816 additions]] |
Latest revision as of 21:53, 6 August 2024
Two instructions use Block Move Addressing on the 65c816:
They are both 3 bytes long. The total number of bytes copied is the value in the C accumulator plus one. If a block move is interrupted, the current byte copy is completed, then the interrupt is serviced.
When the copying is complete:
- the accumulator will contain the value $FFFF.
- both index registers will point to the byte one past the end of the blocks they were pointing to
- if the source and destination blocks do not overlap, the source block is still intact
Syntax
Asar:
MVN srds
See Also
References
- Eyes & Lichty, page 388
- "Block Moves" on page 103, lbid
- section 3.5.9 of 65c816 datasheet, https://westerndesigncenter.com/wdc/documentation/w65c816s.pdf