The CALL
instruction, requires 5 machine cycles, namely, OPCODE-FETCH, MEMORY READ, MEMORY READ, MEMORY WRITE, MEMORY WRITE
. The OPCODE-FETCH cycle of CALL has 6 T-states to take care of the decrements of the Stack Pointer.
RET
instruction requires, 3 machine cycles, OPCODE-FETCH, MEMORY READ, MEMORY READ
, even here, the microprocessor's got to increment the stack pointer twice, as before, to pop. But, the OPCODE-FETCH cycle only has 4 T-states, Why is that?
I've got a vague idea, as to why; in CALL
and PUSH
the SP has to be decremented first, unlike RET
or POP
. This first decrement alone is taken care in the last two T-states of FETCH
cycle. But why would that require two T-states. Again, I'm really not sure about this. Kindly help.