077. Dec página cero x

cablear DEC Página Cero,X (`0xD6`).

Lección 77 de 356 · tests/chapter_01_cpu/test_077_DEC_zero_page_x.py

En este paso, con dec importado en la lección 076, añade solo emulator/cpu/opcodes.py:dec_zero_page_x y OPCODE_TABLE[0xD6].

Por qué existe este paso

Delega el cálculo de dirección de página cero indexada en el auxiliar de direccionamiento existente y la mutación de memoria en la primitiva DEC existente.

Implementación sugerida en emulator/cpu/opcodes.py:

def dec_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    dec(cpu, addr)

Añade exactamente esta entrada a la OPCODE_TABLE existente:

0xD6: dec_zero_page_x,

Invariantes: se consume un byte de operando; base más X envuelve en $FF dentro de la página cero; el PC avanza hasta la siguiente instrucción de dos bytes; DEC escribe un resultado de 8 bits y actualiza solo Z/N.

Concepto erróneo: $FF,X con X=1 no apunta a $0100; el direccionamiento indexado de página cero resuelve $0000 antes de que se ejecute DEC.

Fuera de alcance: dec_absolute/0xCE y dec_absolute_x/0xDE son las lecciones 078-079.

Ejecutar esta lección

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