We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

PLA: Difference between revisions

From SnesLab
Jump to: navigation, search
(which type of stack admode)
(deindent cycle penalty)
 
(21 intermediate revisions by the same user not shown)
Line 15: Line 15:
{| class="wikitable" style="float:right;clear:right;width:30%"
{| class="wikitable" style="float:right;clear:right;width:30%"
!colspan="9"|Flags Affected
!colspan="9"|Flags Affected
|+
|[[Negative Flag|N]]
|[[Overflow Flag|V]]
|[[M Flag|M]]
|[[X Flag|X]]
|[[Decimal Flag|D]]
|[[I Flag|I]]
|[[Zero Flag|Z]]
|[[Carry Flag|C]]
|+
|+
|N
|N
|V
|M
|X
|D
|I
|Z
|C
|+
|
|.
|.
|.
|.
Line 31: Line 31:
|.
|.
|.
|.
|
|Z
|.
|.
|}
|}


'''PLA''' (PulL Accumulator) is a 65x instruction that pulls the value at the top of the [[stack]] into the [[accumulator]].  PLA takes one additional cycle if the accumulator is 16 bits wide.
'''PLA''' (PulL Accumulator) is a 65x instruction that pulls the value at the top of the [[stack]] into the [[accumulator]].  PLA increments the [[stack pointer]] before the pull by the number of bytes pulled.  If the accumulator is 16 bits wide, the low byte is pulled and then the high byte is pulled.
 
The Eyes & Lichty page on PLA has a typo that says the 65x pull instructions "set" the zero and negative flags; it should say "affect."
 
The [[negative flag]] will then match the most significant bit of the pulled value.  The [[zero flag]] will indicate whether the pulled value is zero.
 
==== Syntax ====
<pre>
PLA
</pre>
 
==== Cycle Penalty ====
* PLA takes one extra cycle if the accumulator is 16 bits wide.


=== See Also ===
=== See Also ===
Line 43: Line 55:


=== External Links ===
=== External Links ===
* [[Eyes & Lichty]] page 483, on PLA: https://archive.org/details/0893037893ProgrammingThe65816/page/n509
* [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/483 page 483] on PLA
* [[Labiak]] page on PLA: https://archive.org/details/Programming_the_65816/page/n177
* [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n177 page 167] on PLA
* [[MCS6500 Manual]] page on PLA: https://archive.org/details/mos_microcomputers_programming_manual/page/n137
* 8.6 on [[MCS6500 Manual]], [https://archive.org/details/mos_microcomputers_programming_manual/page/n137 page 118] on PLA
* [[Carr]] page on PLA: https://archive.org/details/6502UsersManual/page/n281
* [[Carr]], [https://archive.org/details/6502UsersManual/page/n281 page 268] on PLA
* [[Leventhal]] page on PLA: https://archive.org/details/6502-assembly-language-programming/page/n132
* [[Leventhal]], [https://archive.org/details/6502-assembly-language-programming/page/n132 page 3-83] on PLA
* snes9x implementation of https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1982
* snes9x implementation of https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1982


[[Category:ASM]]
[[Category:ASM]]
[[Category:Inherited from 6502]]
[[Category:Inherited from 6502]]
[[Category:Pull Instructions]]
[[Category:One-byte Instructions]]

Latest revision as of 17:39, 23 August 2024

Basic Info
Addressing Mode Opcode Length Speed
Stack (Pull) 68 1 byte 4 cycles*
Flags Affected
N V M X D I Z C
N . . . . . Z .

PLA (PulL Accumulator) is a 65x instruction that pulls the value at the top of the stack into the accumulator. PLA increments the stack pointer before the pull by the number of bytes pulled. If the accumulator is 16 bits wide, the low byte is pulled and then the high byte is pulled.

The Eyes & Lichty page on PLA has a typo that says the 65x pull instructions "set" the zero and negative flags; it should say "affect."

The negative flag will then match the most significant bit of the pulled value. The zero flag will indicate whether the pulled value is zero.

Syntax

PLA

Cycle Penalty

  • PLA takes one extra cycle if the accumulator is 16 bits wide.

See Also

External Links