We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
PLB: Difference between revisions
From SnesLab
(→External Links: page number) |
(→External Links: hid archive URL on E&L) |
||
(18 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
|[[Stack Addressing|Stack]] | |[[Stack Addressing|Stack]] (Pull) | ||
|AB | |AB | ||
|1 byte | |1 byte | ||
Line 15: | Line 15: | ||
{| class="wikitable" style="float:right;clear:right;width:30%" | {| class="wikitable" style="float:right;clear:right;width:30%" | ||
!colspan="9"|Flags Affected | !colspan="9"|Flags Affected | ||
|+ | |||
|[[Negative Flag|N]] | |||
|[[Overflow Flag|V]] | |||
|[[M Flag|M]] | |||
|[[X Flag|X]] | |||
|[[Decimal Flag|D]] | |||
|[[I Flag|I]] | |||
|[[Zero Flag|Z]] | |||
|[[Carry Flag|C]] | |||
|+ | |+ | ||
|N | |N | ||
|. | |. | ||
|. | |. | ||
Line 31: | Line 31: | ||
|. | |. | ||
|. | |. | ||
| | |Z | ||
|. | |. | ||
|} | |} | ||
'''PLB''' (PulL data Bank) is a [[65c816]] instruction that pulls the byte at the top of the [[stack]] into the [[data bank register]]. | '''PLB''' (PulL data Bank) is a [[65c816]] instruction that pulls the byte at the top of the [[stack]] into the [[data bank register]]. PLB is the only instruction that modifies that register.<sup>[1][dubious, see [[MVP]] and [[MVN]]]</sup> The [[stack pointer]] is incremented before the byte it points to is pulled into the register. | ||
==== Syntax ==== | |||
<pre> | |||
PLB | |||
</pre> | |||
PLB works even in [[emulation mode]] even though all bank addresses are forced to zero.<sup>[5]</sup> | |||
=== See Also === | === See Also === | ||
* [[PLA]] | |||
* [[PLD]] | * [[PLD]] | ||
* [[PLX]] | * [[PLX]] | ||
Line 44: | Line 52: | ||
=== External Links === | === External Links === | ||
# [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/484 page 484] on PLB | |||
# [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n178 page 168] on PLB | |||
# snes9x implementation of PLB: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2032 | |||
# Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3 | |||
# section 7.8.2 of 65c816 datasheet | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:65c816 additions]] | [[Category:65c816 additions]] | ||
[[Category:Pull Instructions]] | |||
[[Category:One-byte Instructions]] | |||
[[Category:Four-cycle Instructions]] |
Latest revision as of 19:25, 6 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack (Pull) | AB | 1 byte | 4 cycles |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
N | V | M | X | D | I | Z | C | |
N | . | . | . | . | . | Z | . |
PLB (PulL data Bank) is a 65c816 instruction that pulls the byte at the top of the stack into the data bank register. PLB is the only instruction that modifies that register.[1][dubious, see MVP and MVN] The stack pointer is incremented before the byte it points to is pulled into the register.
Syntax
PLB
PLB works even in emulation mode even though all bank addresses are forced to zero.[5]
See Also
External Links
- Eyes & Lichty, page 484 on PLB
- Labiak, page 168 on PLB
- snes9x implementation of PLB: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2032
- Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3
- section 7.8.2 of 65c816 datasheet