esquema de direccionamiento del microprocesador 6502

Me estoy preparando para una prueba y actualmente me quedé con la siguiente pregunta.

Tenemos un microprocesador 6502. Para la ejecución de un salto absoluto, la dirección de salto con el byte alto de dirección (ADH) y el byte bajo de dirección (ADL) se cargan en el contador de programa (PCH, PCL). La pregunta ahora es, ¿por qué no se pueden cargar ambos bytes de dirección en la PC, sino que la ADL debe almacenarse primero en el búfer de datos?

¿Se abrió paso esta prueba a través de un agujero de gusano de 1982? Rápido, encienda la conexión inalámbrica y díganos si están jugando Adam Ant, Duran Duran o Boy George...
@BrianDrummond :-D ¡Pero ojo que en 1982 el único inalámbrico que tenían era la radio FM (al menos para escuchar música)!
Tengo mucha curiosidad: ¿realmente enseñan arquitectura y ensamblador 6502 en estos días? ¿Es quizás la introducción para las CPU ARM (se derivan de 6502 IIRC)? ¡Esto me trae recuerdos! Cuando era un adolescente en ~1984, aprendí a programar en ensamblador 6502 en mi viejo Apple//e leyendo revistas nerd. De hecho, también aprendí a programar en su lenguaje de máquina (qué dolor, solo entonces realmente aprecias el ensamblaje) :-) LLAME -151 ¿alguien? :-D
@LorenzoDonati Te sorprendería lo que todavía enseñan en los programas de ingeniería. En mi licenciatura, vi muchos diseños de fuentes de alimentación lineales en clase, pero ni una sola vez vi que se mencionara una fuente de alimentación conmutada. De manera similar, hicimos toneladas de circuitos BJT y los FET fueron solo una ocurrencia tardía. Y esto es reciente: debo graduarme a fines de este año.
@PeterK ¡Impactante! ¡En realidad! Solo espero que te enseñen el enfoque correcto : si tus maestros son buenos, puedes aprenderlo incluso estudiando circuitos "antiguos", incluso si es "aburrido" y desconectado de la realidad actual. De todos modos, obtenga una copia de The Art of Electronics (3ra edición) de Horowitz & Hill y haga un estudio paralelo. Como les digo a menudo a mis alumnos: "¡Siempre puedes aprender cosas a pesar de tus maestros!" :-D

Respuestas (1)

La instrucción de salto 6502 tiene una longitud de tres bytes:

JMP   ADRL  ADRH

No es posible cargar ambos bytes de la PC al mismo tiempo, ya que el 6502 es una CPU de 8 bits y solo puede obtener un byte a la vez.

Por tanto, se ejecuta en tres ciclos, uno por cada byte. Una vez que se ha decodificado la instrucción, la CPU sabe que es una instrucción JMP. El byte bajo de la dirección de destino (ADRL) se obtiene y luego se retiene hasta el comienzo del ciclo 3 , de modo que el valor de PC original (actualizado) se puede usar para obtener el byte alto de la dirección (ADRH) en el ciclo 3.

Al comienzo del ciclo 3, se inicia una nueva búsqueda de memoria con la PC original para obtener el byte alto de la nueva dirección. Al mismo tiempo, el valor retenido que comprende ADRL se usa para actualizar el byte bajo de la PC.

Al final del ciclo 3, el valor obtenido (ADRH) se usa para actualizar la dirección alta de la PC. Esto completa la instrucción de salto, ya que la siguiente instrucción se obtendrá desde la nueva ubicación de la PC.

Esta explicación no es correcta; después de que PCL se haya cambiado en el ciclo 2, el byte ADRH no se obtendrá de la dirección correcta en el ciclo 3.
@CL Veo a lo que se refiere, pero también me resulta difícil creer que haya un caché de 16 bits separado solo para esta instrucción. Veré si puedo encontrar un diagrama de bloques de la CPU. SI tiene una respuesta definitiva, continúe y publíquela.
Se debe almacenar en búfer el valor de PC antiguo o el nuevo. La pregunta era por qué se almacena ADRL en el búfer de datos.
Ambos están cerca de la respuesta correcta, y me he tomado la libertad de editar su redacción para aclarar los detalles.
@DaveTweed También modifiqué un poco tu respuesta, finalmente encontré el detalle ciclo por ciclo que estaba buscando aquí (busca JMP). La PC todavía se actualiza un byte a la vez, estaba bastante seguro de que no había un búfer de 16 bits involucrado; no podía pagar el silicio. Todo el 6502 usó solo 3500 transistores.