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.