Let me write the steps of ADD B, as I've understood it till now.
T0:
- ALE goes high
- Memory location(say \$2000_h\$) is taken from Program Counter to Memory Address Register(which points to the passed location), via \$\small{A_{15}}\$-\$\small{A_8}\$ and \$\small{AD_7}\$ - \$\small{AD_0}\,\,\$(which will be latched)
- ALE goes low.
T1:
- \$\small{\overline{MEMR}}\,\$ is generated, the contents in \$2000_h\$ \$^ \dagger\$ is passed to the Instruction Decoder.
T2 and T3:
- I really can't understand these two states, I can see that the \$\small{\overline{MEMR}}\,\$ signal goes low in T2 and its stated tht the addition is done in T3, but the ALU will have evaluated the sum, once the temporary register is set, is the temporary register set only on the T3?
\$^\dagger\$ I could see that different instructions' OPCODE is divided differently, for example, for ADD B, the first 5 bits correspond to ADD and the next three bits correspond to the desired register, but for an instruction like MOV B,C the first two bits corresponds to the MOV and the next 6 correspond to the registers. How are OPCODES actually read correctly? Because, if it was constant that the first 5 bits always correspond to the instruction, then it can be understood easily, but that's not the case.
Finally, can someone please list out the steps in terms of Time-States for the instruction ADD B.
Program Counter is incremented somewhere along the way, but I don't know where that is happening.
In Ben Eater's 8 bit computer, there is a separate T-state for PC increment, but 8085 is far more advanced I suppose.