We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
PHD: Difference between revisions
From SnesLab
(added E&L page) |
(clarify emulation mode note) |
||
(26 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;clear:right;width:40%" | |||
{| class="wikitable" style="float:right;clear:right;width: | |||
!colspan="8"|Basic Info | !colspan="8"|Basic Info | ||
|+ | |+ | ||
Line 9: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
| | |[[Stack Addressing|Stack]] (Push) | ||
|0B | |0B | ||
|1 byte | |1 byte | ||
Line 16: | Line 14: | ||
{| class="wikitable" style="float:right;clear:right;width:30%" | {| class="wikitable" style="float:right;clear:right;width:30%" | ||
!colspan="9"|Flags | !colspan="9"|Flags Affected | ||
|+ | |+ | ||
|N | |[[Negative Flag|N]] | ||
|V | |[[Overflow Flag|V]] | ||
|M | |[[M Flag|M]] | ||
|X | |[[X Flag|X]] | ||
|D | |[[Decimal Flag|D]] | ||
|I | |[[I Flag|I]] | ||
|Z | |[[Zero Flag|Z]] | ||
|C | |[[Carry Flag|C]] | ||
|+ | |+ | ||
|. | |. | ||
Line 36: | Line 34: | ||
|. | |. | ||
|} | |} | ||
'''PHD''' (PusH Direct Page) is a [[65c816]] instruction that pushes the value of the [[direct page register]] onto the [[stack]]. The high byte is pushed before the low byte. The [[stack pointer]] is decremented by two. | |||
No flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
PHD | |||
</pre> | |||
PHD works even in [[emulation mode]], and will not push zero if the [[direct page]] has been relocated, as 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 === | |||
* [[PLD]] | |||
* [[PHB]] | |||
* [[TDC]] | |||
* [[PHK]] | |||
=== External Links === | === External Links === | ||
* [[Eyes & Lichty]] page on PHD | * [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/478 page 478] on PHD | ||
* [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n172 page 162] on PHD | |||
* snes9x implementation of PHD: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1786 | |||
* Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3 | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:65c816 additions]] | [[Category:65c816 additions]] | ||
[[Category:One-byte Instructions]] | |||
[[Category:Four-cycle Instructions]] | |||
[[Category:Push Instructions]] |
Latest revision as of 01:04, 13 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack (Push) | 0B | 1 byte | 4 cycles |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
N | V | M | X | D | I | Z | C | |
. | . | . | . | . | . | . | . |
PHD (PusH Direct Page) is a 65c816 instruction that pushes the value of the direct page register onto the stack. The high byte is pushed before the low byte. The stack pointer is decremented by two.
No flags are affected.
Syntax
PHD
PHD works even in emulation mode, and will not push zero if the direct page has been relocated, as 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
- Eyes & Lichty, page 478 on PHD
- Labiak, page 162 on PHD
- snes9x implementation of PHD: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1786
- Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3