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

Y Index Register: Difference between revisions

From SnesLab
Jump to: navigation, search
(flowed CPY into body)
(flowed LDY/STY into body)
 
Line 1: Line 1:
The [[Y Index Register]] on 65x processors often holds the current index when iterating over things.  It can be incremented or decremented by one with [[INY]] or [[DEY]], but there is no instruction to add or subtract more than one.  Although INY and DEY can affect the [[negative flag]], the indexed [[addressing mode]]s always interpret the bit pattern in the Y index register as a non-negative integer.
The [[Y Index Register]] on 65x processors often holds the current index when iterating over things.  It can be incremented or decremented by one with [[INY]] or [[DEY]], but there is no instruction to add or subtract more than one.  Although INY and DEY can affect the [[negative flag]], the indexed [[addressing mode]]s always interpret the bit pattern in the Y index register as a non-negative integer.
It can be loaded with [[LDY]] and stored to memory with [[STY]].


On the [[S-SMP]] it is always 8 bits wide.  On the [[65c816]], it may be 8 or 16 bits wide:
On the [[S-SMP]] it is always 8 bits wide.  On the [[65c816]], it may be 8 or 16 bits wide:
Line 13: Line 15:


[[CPY]] can compare it to something.
[[CPY]] can compare it to something.
=== See Also ===
* [[LDY]]
* [[STY]]


=== Reference ===
=== Reference ===

Latest revision as of 23:28, 16 August 2024

The Y Index Register on 65x processors often holds the current index when iterating over things. It can be incremented or decremented by one with INY or DEY, but there is no instruction to add or subtract more than one. Although INY and DEY can affect the negative flag, the indexed addressing modes always interpret the bit pattern in the Y index register as a non-negative integer.

It can be loaded with LDY and stored to memory with STY.

On the S-SMP it is always 8 bits wide. On the 65c816, it may be 8 or 16 bits wide:

  • When the index register select flag is clear, Y is 16 bit
  • When the index register select flag is set, Y is 8 bit

In emulation mode it is always 8 bits wide.

Unlike the X index register, there are no instructions to transfer value of the stack pointer to/from Y.

It is not specified to have any particular value after reset.

It can be pushed to the stack with PHY and pulled with PLY. It can be copied to the accumulator with TYA and made to reflect the accumulator with TAY. It can be copied to X with TYX and made to reflect x with TXY.

CPY can compare it to something.

Reference