We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
POP (SPC700): Difference between revisions
From SnesLab
(moved tables up) |
(sp incremented before) |
||
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;clear:right;width: | {| class="wikitable" style="float:right;clear:right;width:40%" | ||
!colspan="8"|Basic Info | !colspan="8"|Basic Info | ||
|+ | |+ | ||
Line 7: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
| | |[[Accumulator Addressing | Accumulator]] | ||
| | |AE | ||
|1 byte | |||
|4 cycles | |||
|+ | |||
|[[Stack Addressing | Stack]] - X | |||
|CE | |||
|1 byte | |||
|4 cycles | |||
|+ | |||
|[[Stack Addressing | Stack]] - Y | |||
|EE | |||
|1 byte | |||
|4 cycles | |||
|+ | |||
|[[Stack Addressing | Stack]] - PSW | |||
|8E | |||
|1 byte | |1 byte | ||
|4 cycles | |4 cycles | ||
|} | |} | ||
{| class="wikitable" style="float:right;clear:right;width: | {| class="wikitable" style="float:right;clear:right;width:40%" | ||
!colspan=" | !colspan="9"|Flags Affected | ||
|+ | |||
|Operand is the PSW? | |||
|[[Negative Flag|N]] | |||
|[[Overflow Flag|V]] | |||
|[[Direct Page Flag|P]] | |||
|[[Break Flag|B]] | |||
|[[Half-Carry Flag|H]] | |||
|[[Interrupt Enable Flag|I]] | |||
|[[Zero Flag|Z]] | |||
|[[Carry Flag|C]] | |||
|+ | |+ | ||
|yes | |||
|N | |N | ||
|V | |V | ||
Line 25: | Line 51: | ||
|C | |C | ||
|+ | |+ | ||
|no | |||
|. | |. | ||
|. | |. | ||
Line 35: | Line 62: | ||
|} | |} | ||
'''POP''' is an [[SPC700]] command that pops | '''POP''' is an [[SPC700]] command that pops a byte from the [[stack]], pulling it into a register. The target register can be: | ||
* the [[accumulator]] | |||
* the [[X Index Register]] | |||
* the [[Y Index Register]] | |||
* the [[program status word]] | |||
The [[stack pointer]] is incremented by one before the value is pulled. | |||
When the [[program status word]] is the operand, all the flags are naturally affected as that is the register they live in. Otherwise, no flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
POP A | |||
POP X | |||
POP Y | |||
POP PSW | |||
</pre> | |||
=== See Also === | === See Also === | ||
* [[PUSH]] | * [[PUSH]] | ||
* [[PLA]] | |||
* [[PLX]] | |||
* [[PLY]] | |||
* [[PLP]] | |||
=== References === | === References === | ||
* [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9 of Book I] of the official Super Nintendo development manual | * Table C-17 in [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9 of Book I] of the official Super Nintendo development manual | ||
* anomie: https://github.com/yupferris/TasmShiz/blob/master/spc700.txt#L536 | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:SPC700]] | [[Category:SPC700]] | ||
[[Category:Stack Operation Commands]] | [[Category:Stack Operation Commands]] | ||
[[Category:One-byte Instructions]] |
Latest revision as of 03:52, 9 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Accumulator | AE | 1 byte | 4 cycles | ||||
Stack - X | CE | 1 byte | 4 cycles | ||||
Stack - Y | EE | 1 byte | 4 cycles | ||||
Stack - PSW | 8E | 1 byte | 4 cycles |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
Operand is the PSW? | N | V | P | B | H | I | Z | C |
yes | N | V | P | B | H | I | Z | C |
no | . | . | . | . | . | . | . | . |
POP is an SPC700 command that pops a byte from the stack, pulling it into a register. The target register can be:
- the accumulator
- the X Index Register
- the Y Index Register
- the program status word
The stack pointer is incremented by one before the value is pulled.
When the program status word is the operand, all the flags are naturally affected as that is the register they live in. Otherwise, no flags are affected.
Syntax
POP A POP X POP Y POP PSW
See Also
References
- Table C-17 in Appendix C-9 of Book I of the official Super Nintendo development manual
- anomie: https://github.com/yupferris/TasmShiz/blob/master/spc700.txt#L536