We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

PLD: Difference between revisions

From SnesLab
Jump to: navigation, search
(moved tables up)
(how much stack pointer incremented by)
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
{| class="wikitable" style="float:right;clear:right;width:30%"
{| class="wikitable" style="float:right;clear:right;width:40%"
!colspan="8"|Basic Info
!colspan="8"|Basic Info
|+
|+
Line 7: Line 7:
|'''Speed'''
|'''Speed'''
|+
|+
|stack
|[[Stack Addressing|Stack]] (Pull)
|2B
|2B
|1 byte
|1 byte
Line 14: Line 14:


{| class="wikitable" style="float:right;clear:right;width:30%"
{| class="wikitable" style="float:right;clear:right;width:30%"
!colspan="9"|Flags Clobbered
!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
|V
|M
|X
|D
|I
|Z
|C
|+
|
|.
|.
|.
|.
Line 31: Line 31:
|.
|.
|.
|.
|
|Z
|.
|.
|}
|}


'''PLD''' (PulL Direct page) is a [[65c816]] instruction that pulls the 16-bit value at the top of the [[stack]] into the [[direct page register]].
'''PLD''' (PulL Direct page) is a [[65c816]] instruction that pulls the 16-bit value at the top of the [[stack]] into the [[direct page register]], relocating the [[direct page]]. The low byte of this register is pulled first and then the high byte.  The [[stack pointer]] is incremented by two and ends up pointing to where the high byte was, which becomes the next available stack location.
 
==== Syntax ====
<pre>
PLD
</pre>
 
PLD works even in [[emulation mode]], and instructions that used [[zero page addressing]] on the 6502 will use [[direct page addressing]] instead with the direct offset still added into their effective address.
 
=== See Also ===
* [[PHD]]
* [[PLB]]
* [[PLX]]
* [[PLY]]
* [[TCD]]


=== External Links ===
=== External Links ===
* [[Eyes & Lichty]] page on PLD: https://archive.org/details/0893037893ProgrammingThe65816/page/n511
* [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/485 page 485] on PLD
* [[Labiak]] page on PLD: https://archive.org/details/Programming_the_65816/page/n179
* [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n179 page 169] on PLD
* snes9x implementation of PLD: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2069
* snes9x implementation of PLD: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2069
* Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3


[[Category:ASM]]
[[Category:ASM]]
[[Category:65c816 additions]]
[[Category:65c816 additions]]
[[Category:Pull Instructions]]
[[Category:Five-cycle Instructions]]

Latest revision as of 01:25, 13 August 2024

Basic Info
Addressing Mode Opcode Length Speed
Stack (Pull) 2B 1 byte 5 cycles
Flags Affected
N V M X D I Z C
N . . . . . Z .

PLD (PulL Direct page) is a 65c816 instruction that pulls the 16-bit value at the top of the stack into the direct page register, relocating the direct page. The low byte of this register is pulled first and then the high byte. The stack pointer is incremented by two and ends up pointing to where the high byte was, which becomes the next available stack location.

Syntax

PLD

PLD works even in emulation mode, and instructions that used zero page addressing on the 6502 will use direct page addressing instead with the direct offset still added into their effective address.

See Also

External Links