048. Sty página cero x

Añadir STY página cero,X ($94).

Lección 48 de 356 · tests/chapter_01_cpu/test_048_STY_zero_page_x.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes imports of zero_page_x and sty
opcodes.sty_zero_page_x
opcodes.OPCODE_TABLE[$94]

Por qué existe este paso

Esta codificación combina el límite de instrucción orientado a dirección de STY con el helper existente de página cero,X, incluyendo el ajuste dentro de la página $00.

Ejemplo completo de implementación

# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import zero_page_x
from emulator.cpu.instructions import sty


def sty_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    sty(cpu, addr)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x94: sty_zero_page_x,
}

Invariantes importantes

  • $94 se mapea a sty_zero_page_x y consume un byte de operando
  • X indexa el operando y la dirección efectiva se ajusta a ocho bits
  • la dirección efectiva, no su contenido actual, se pasa a sty
  • Y y los flags del procesador no cambian con el almacenamiento

Error frecuente

$FF,X con X igual a $01 almacena en $0000, no en $0100; el indexado en página cero no debe escapar de la página $00.

Fuera de alcance

  • STY absoluto
  • modificar zero_page_x
  • temporización de ciclos

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_048_STY_zero_page_x.py -v