We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
PHK: Difference between revisions
From SnesLab
(added acronym description) |
(superscripted, bullet point -> ref) |
||
(20 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
| | |[[Stack Addressing|Stack]] (Push) | ||
|4B | |4B | ||
|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 | !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 35: | Line 35: | ||
|} | |} | ||
'''PHK''' (Push Program BanK) is a [[65c816]] instruction that pushes the value of the [[program bank register]] onto the [[stack]]. | '''PHK''' (Push Program BanK) is a [[65c816]] instruction that pushes the value of the [[program bank register]] onto the [[stack]]. PHK always pushes a single byte. The [[stack pointer]] is decremented by one. | ||
No flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
PHK | |||
</pre> | |||
Its [[PLK]] counterpart does not exist. PHK works even in [[emulation mode]] even though all bank addresses are forced to be zero.<sup>[5]</sup> | |||
=== See Also === | === See Also === | ||
* [[PHB]] | * [[PHB]] | ||
* [[PHD]] | * [[PHD]] | ||
* [[PHA]] | |||
* [[PHX]] | |||
* [[PHY]] | |||
=== External Links === | === External Links === | ||
# [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/479 page 479] on PHK | |||
# [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n173 page 163] on PHK | |||
# snes9x implementation of PHK: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1813 | |||
# 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:Push Instructions]] | |||
[[Category:One-byte Instructions]] | |||
[[Category:Three-cycle Instructions]] |
Latest revision as of 19:35, 9 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack (Push) | 4B | 1 byte | 3 cycles |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
N | V | M | X | D | I | Z | C | |
. | . | . | . | . | . | . | . |
PHK (Push Program BanK) is a 65c816 instruction that pushes the value of the program bank register onto the stack. PHK always pushes a single byte. The stack pointer is decremented by one.
No flags are affected.
Syntax
PHK
Its PLK counterpart does not exist. PHK works even in emulation mode even though all bank addresses are forced to be zero.[5]
See Also
External Links
- Eyes & Lichty, page 479 on PHK
- Labiak, page 163 on PHK
- snes9x implementation of PHK: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1813
- Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.3
- section 7.8.2 of 65c816 datasheet