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
Jump to: navigation, search
(linkify flags)
(sp incremented before)
 
(9 intermediate revisions by the same user not shown)
Line 12: Line 12:
|4 cycles
|4 cycles
|+
|+
|[[Stack Addressing | Stack]]
|[[Stack Addressing | Stack]] - X
|CE
|CE
|1 byte
|1 byte
|4 cycles
|4 cycles
|+
|+
|[[Stack Addressing | Stack]]
|[[Stack Addressing | Stack]] - Y
|EE
|EE
|1 byte
|1 byte
|4 cycles
|4 cycles
|+
|+
|[[Stack Addressing | Stack]]
|[[Stack Addressing | Stack]] - PSW
|8E
|8E
|1 byte
|1 byte
Line 42: Line 42:
|+
|+
|yes
|yes
|
|N
|
|V
|
|P
|
|B
|
|H
|
|I
|
|Z
|
|C
|+
|+
|no
|no
Line 62: Line 62:
|}
|}


'''POP''' is an [[SPC700]] command that pops a byte from the stack, pulling it into a register.  The target register can be:
'''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 [[accumulator]]
Line 69: Line 69:
* the [[program status word]]
* the [[program status word]]


When the [[program status word]] is the operand, all the flags are naturally affected as that is the register they live in.
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 ===
* 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
* 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 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