8085; ¿Por qué RET no requiere un ciclo de recuperación de 6 estados T?

La CALLinstrucción requiere 5 ciclos de máquina, a saber, OPCODE-FETCH, MEMORY READ, MEMORY READ, MEMORY WRITE, MEMORY WRITE. El ciclo OPCODE-FETCH de CALL tiene 6 estados T para encargarse de las disminuciones del puntero de pila .

RETLa instrucción requiere 3 ciclos de máquina , OPCODE-FETCH, MEMORY READ, MEMORY READincluso aquí, el microprocesador tiene que incrementar el puntero de pila dos veces, como antes , para hacer estallar. Pero, el ciclo OPCODE-FETCH solo tiene 4 estados T, ¿por qué?

Tengo una vaga idea de por qué; en CALLy PUSHel SP tiene que ser decrementado primero, a diferencia de RETo POP. Solo este primer decremento se tiene en cuenta en los dos últimos estados T del FETCHciclo. Pero, ¿por qué eso requeriría dos estados T? Una vez más, no estoy muy seguro de esto. Amablemente ayuda

Respuestas (1)

Sería interesante analizar CALLla instrucción una vez más antes de hablar de RETinstrucción.

LLAME INSTRUCCIONES AL 8085

Como dijiste, consta de: Opcode Fetch, Memory Read, Memory Read, Memory Write,Memory Write

8085 sigue la metodología de decremento y empuje mientras empuja para apilar.

Opcode Fetchen 8085 es típicamente 4 estados T. Sin embargo, para CALLla instrucción, se necesitan 2 estados T adicionales. Es porque: después de obtener y decodificar, el puntero de la pila debe disminuirse antes del primer Memory Writeciclo que almacenará el MSB de la PC actual en la pila.

Durante el primero Memory Write, el valor es empujado y el puntero de la pila es decrementado nuevamente por el procesador. Esto se hace en paralelo, para que el próximo Memory Writeciclo pueda comenzar inmediatamente sin perder estados T adicionales. En el segundo Memory Write, el LSB de la PC se empuja a la pila, pero el puntero de la pila no necesita disminuirse ya que no hay más escrituras por venir.

Memory ReadEl ciclo es donde la dirección de bifurcación se almacena en los registros internos de WZ.

Cada uno Memory Writetiene 3 estados T y cada uno Memory Readtiene 3 estados T también.

Así que el total de estados T = 4 + 2 + 3 + 3 + 3 + 3 = 18

INSTRUCCIÓN RET EN 8085

Se compone de: Opcode Fetch, Memory Read,Memory Read

De nuevo, Opcode Fetchson 4 estados T. Sin embargo, 8085 sigue la metodología de extracción e incremento mientras extrae de la pila. El puntero de la pila ya apunta al LSB de la dirección de retorno, por lo que no es necesario incrementar el puntero de antemano.

Durante el primero Memory Read, se lee el valor apuntado y el procesador también incrementa el puntero de la pila en paralelo. Durante el siguiente Memory Read, se lee el MSB de la dirección de retorno y el puntero de la pila se incrementa de nuevo en paralelo.

Así que el total de estados T = 4 + 3 + 3 = 10

Así que en RET, no se necesitan estados T adicionales después de Opcode Fetcha diferencia de en CALL.

Así que mi suposición fue correcta. Pero existe esta pregunta ingenua: ¿Por qué un decremento toma 2 estados T?
El puntero de pila es solo un registro, solo se necesita un ciclo de reloj o estado T para disminuirlo o incrementarlo. El valor del registro se puede pasar al bus de direcciones en el siguiente ciclo. El ciclo adicional debe deberse al registro en el medio.
Maravillosa respuesta. ¡Realmente disfruté la claridad! He borrado mi vago comentario.