The instruction that is being executed at time 26 is what's failing. Time 25+ shows the register values after the previous instruction.
|time| inM | instruction |reset| outM |writeM |addre| pc |DRegiste|
|25+ | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
|26 | 11111|1110001100000101| 0 |*******| 0 | 1000| 1000| -1 |
The failing instruction is "D;JNE". The D Register value is -1 so the jump should occur. Since the A Register—addre[ssM] column—is 1000, the PC should be loaded with 1000. Because the PC was already 1000, it appears as if it was unchanged.
I'm guessing that your miscompare is because the PC was incremented due to an error in your jump control logic.
For a jump not taken, look at the instruction at time 30. This is a "D;JGT" with D=0, so the PC increments.
|29+ | 11111|1110001100000001| 0 |*******| 0 | 1000| 1001| 0 |
|30 | 11111|1110001100000001| 0 |*******| 0 | 1000| 1002| 0 |
--Mark