We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
PEA: Difference between revisions
From SnesLab
(added basic info) |
(push category) |
||
(30 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]] (absolute) | ||
|F4 | |F4 | ||
|3 bytes | |3 bytes | ||
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: | ||
|. | |. | ||
|} | |} | ||
'''PEA''' (Push Effective Address) is a [[65c816]] instruction that pushes a 16-bit value to the [[stack]]. This value need not actually be an address. The [[stack pointer]] is decremented by two. | |||
PEA can be thought of as using [[immediate addressing]], although the immediate syntax is not used. | |||
PEA ignores the state of the m and x flags. | |||
No flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
PEA addr | |||
PEA const | |||
</pre> | |||
PEA works even in [[emulation mode]]. | |||
=== See Also === | |||
* [[PER]] | |||
* [[PEI]] | |||
* [[PHA]] | |||
* [[TSC]] | |||
* [[XBA]] | |||
=== External Links === | |||
* [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/473 page 473] on PEA | |||
* [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n167 page 157] on PEA | |||
* snes9x implementation of PEA: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1631 | |||
* undisbeliever on PEA: https://undisbeliever.net/snesdev/65816-opcodes.html#pea-push-effective-absolute-address | |||
* Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.1 | |||
* https://wilsonminesco.com/816myths/65c816_myths-2_BDD.pdf | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:65c816 additions]] | |||
[[Category:Push Instructions]] | |||
[[Category:Three-byte Instructions]] | |||
[[Category:Five-cycle Instructions]] |
Latest revision as of 22:58, 12 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack (absolute) | F4 | 3 bytes | 5 cycles |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
N | V | M | X | D | I | Z | C | |
. | . | . | . | . | . | . | . |
PEA (Push Effective Address) is a 65c816 instruction that pushes a 16-bit value to the stack. This value need not actually be an address. The stack pointer is decremented by two.
PEA can be thought of as using immediate addressing, although the immediate syntax is not used.
PEA ignores the state of the m and x flags. No flags are affected.
Syntax
PEA addr PEA const
PEA works even in emulation mode.
See Also
External Links
- Eyes & Lichty, page 473 on PEA
- Labiak, page 157 on PEA
- snes9x implementation of PEA: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1631
- undisbeliever on PEA: https://undisbeliever.net/snesdev/65816-opcodes.html#pea-push-effective-absolute-address
- Clark, Bruce. http://www.6502.org/tutorials/65c816opcodes.html#6.8.1
- https://wilsonminesco.com/816myths/65c816_myths-2_BDD.pdf