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

Stack Addressing

From SnesLab
Jump to: navigation, search

There are several types of Stack Addressing:

Absolute:

  • PEA (opcode F4)

Direct Page Indirect:

  • PEI (opcode D4)

Interrupt:

  • BRK (opcode 00)
  • COP (opcode 02)

Program Counter Relative Long:

  • PER (opcode 62)

Pull:

  • PLA (opcode 68)
  • PLB (opcode AB)
  • PLD (opcode 2B)
  • PLP (opcode 28)
  • PLX (opcode FA)
  • PLY (opcode 7A)

Push:

  • PHA (opcode 48)
  • PHB (opcode 8B)
  • PHD (opcode 0B)
  • PHK (opcode 4B)
  • PHP (opcode 08)
  • PHX (opcode DA)
  • PHY (opcode 5A)

RTI:

RTL:

  • RTL (opcode 6B)

RTS:

Relative:

  • ADC (opcode 63)
  • AND (opcode 23)
  • CMP (opcode C3)
  • EOR (opcode 43)
  • LDA (opcode A3)
  • ORA (opcode 03)
  • SBC (opcode E3)
  • STA (opcode 83)

Relative Indirect Indexed, Y

  • ADC (opcode 73)
  • AND (opcode 33)
  • CMP (opcode D3)
  • EOR (opcode 53)
  • LDA (opcode B3)
  • ORA (opcode 13)
  • SBC (opcode F3)
  • STA (opcode 93)

The effective addresses generated by stack addressing will always be in bank 0.[3]

Syntax

PEA addr
PEA const
PEI dp
PER label

See Also

References

  1. Eyes & Lichty, page 401
  2. section 3.5.22 of 65c816 datasheet, https://westerndesigncenter.com/wdc/documentation/w65c816s.pdf
  3. lbid, section 3.2