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

STZ: Difference between revisions

From SnesLab
Jump to: navigation, search
(linkify absolute)
(deindented headers)
 
(20 intermediate revisions by the same user not shown)
Line 12: Line 12:
|4 cycles*
|4 cycles*
|+
|+
|direct page
|[[Direct Page Addressing|Direct Page]]
|64
|64
|2 bytes
|2 bytes
|3 cycles*
|3 cycles*
|+
|+
|absolute indexed X
|[[Absolute Indexed by X]]
|9E
|9E
|3 bytes
|3 bytes
|5 cycles*
|5 cycles*
|+
|+
|direct page indexed X
|[[Direct Page Indexed by X]]
|74
|74
|2 bytes
|2 bytes
Line 31: Line 31:
!colspan="9"|Flags Affected
!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 50: Line 50:
|}
|}


'''STZ''' (Store Zero) is a [[65c816]] instruction that zeros out memory.  STZ takes one additional cycle if the accumulator is 16 bits wide, in all [[addressing modes]]. In [[direct page addressing]] modes only, STZ takes another additional cycle if the low byte of the [[direct page register]] is nonzero.
'''STZ''' (Store Zero) is a [[65c816]] instruction that zeros out memory.  The size of the [[accumulator]] determines how many zero bytes are written.
 
STZ has the same effect as [[STA]] when the accumulator is zero.  It was not available on the original NMOS 6502 and was probably added to the CMOS version in order to make code faster/smaller because zero is such a common value to store.
 
No flags are affected.
 
==== Syntax ====
<pre>
STZ addr
STZ dp
STZ addr, X
STZ dp, X
</pre>
 
==== Cycle Penalties ====
* STZ takes one additional cycle if the accumulator is 16 bits wide, in all [[addressing modes]].
* In [[direct page addressing]] modes only, STZ takes another additional cycle if the low byte of the [[direct page register]] is nonzero.


=== See Also ===
=== See Also ===
* [[STA]]
* [[STX]]
* [[STX]]
* [[STY]]
* [[STY]]


=== External Links ===
=== External Links ===
* [[Eyes & Lichty]] page on STZ: https://archive.org/details/0893037893ProgrammingThe65816/page/n533
* [[Eyes & Lichty]], [https://archive.org/details/0893037893ProgrammingThe65816/page/507 page 507] on STZ
* [[Labiak]] page on STZ: https://archive.org/details/Programming_the_65816/page/n198
* "Storing Zero to Memory," [https://archive.org/details/0893037893ProgrammingThe65816/page/103 page 103], lbid.
* [[Labiak]], [https://archive.org/details/Programming_the_65816/page/n198 page 188] on STZ
* snes9x implementation of STZ: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1317
* snes9x implementation of STZ: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L1317
* undisbeliever on STZ: https://undisbeliever.net/snesdev/65816-opcodes.html#stz-store-zero-to-memory
* undisbeliever on STZ: https://undisbeliever.net/snesdev/65816-opcodes.html#stz-store-zero-to-memory
Line 65: Line 81:
[[Category:ASM]]
[[Category:ASM]]
[[Category:65c02 additions]]
[[Category:65c02 additions]]
[[Category:Load/Store Instructions]]

Latest revision as of 06:42, 22 August 2024

Basic Info
Addressing Mode Opcode Length Speed
Absolute 9C 3 bytes 4 cycles*
Direct Page 64 2 bytes 3 cycles*
Absolute Indexed by X 9E 3 bytes 5 cycles*
Direct Page Indexed by X 74 2 bytes 4 cycles*
Flags Affected
N V M X D I Z C
. . . . . . . .

STZ (Store Zero) is a 65c816 instruction that zeros out memory. The size of the accumulator determines how many zero bytes are written.

STZ has the same effect as STA when the accumulator is zero. It was not available on the original NMOS 6502 and was probably added to the CMOS version in order to make code faster/smaller because zero is such a common value to store.

No flags are affected.

Syntax

STZ addr
STZ dp
STZ addr, X
STZ dp, X

Cycle Penalties

See Also

External Links