Hello friends
Lets understand the process of delay calculation in 8085 using following example. We need to calculate the exact duration in microseconds or milliseconds which would be provided by given delay routine.
Let's assume that 8085 is running at 2MHz frequency so
1 clock duration (T) = 1/f = 0.5usec
1 MVI B, 10H 7 T-States
2 LOOP2 MVI C, FFH 7 T-States
3 LOOP1 DCR C 4 T-States
4 JNZ LOOP1 10 T-States
5 DCR B 4 T-States
6 JNZ LOOP2 10 T-States
Now start calculation
NOTE: Always remember to start from inner most loop and then move towards outer loop.
In this program, for sake of simplicity, I have also associated line numbers
Steps:
1) 1st innermost loop is at line no. 3 and 4. Now line 3 and 4 is going to get repeated for FFH or 256 times i.e. (10+4) T-states would be repeated for256 times. But since, in the last itteration, JNZ condition fails and JZ instruction gets executed. JNZ instruction takes 10 T-states whereas JZ takes 7 T-states. So for 14 T-states are processed for 254 iterations, but in 255th iteration, it took only 11 T-states, so while calculation:
(255 x 14) - 3 = 3567 T-states
2) Now, these 3567 T-states, along with (7+4+10) T-states are placed in another outer loop, which is going to rotate for 10H times or 16 times. Don't forget to subtract 3 for the same reason mentioned in point 1.
( (3567 + 7 + 4 + 10) x 16) - 3 = 57405 T-states
3) Now, combine this value to the T-state of 1st instruction of delay routine
(57405+7) = 57412 T-state
4) Since 1 clock duration = 1 T-state = 0.5usec, so
(57412 x 0.5usec) = 28.706 msec
This given routine is going to generate delay of 28.706 msec. This same process is applied to calculate the execution time of any 8085 microprocessor program such that user can calculate how responsive system might be, if the system is running using given program and said specification.
Happy learning :-) Please post your comments below!
Lets understand the process of delay calculation in 8085 using following example. We need to calculate the exact duration in microseconds or milliseconds which would be provided by given delay routine.
Let's assume that 8085 is running at 2MHz frequency so
1 clock duration (T) = 1/f = 0.5usec
1 MVI B, 10H 7 T-States
2 LOOP2 MVI C, FFH 7 T-States
3 LOOP1 DCR C 4 T-States
4 JNZ LOOP1 10 T-States
5 DCR B 4 T-States
6 JNZ LOOP2 10 T-States
Now start calculation
NOTE: Always remember to start from inner most loop and then move towards outer loop.
In this program, for sake of simplicity, I have also associated line numbers
Steps:
1) 1st innermost loop is at line no. 3 and 4. Now line 3 and 4 is going to get repeated for FFH or 256 times i.e. (10+4) T-states would be repeated for256 times. But since, in the last itteration, JNZ condition fails and JZ instruction gets executed. JNZ instruction takes 10 T-states whereas JZ takes 7 T-states. So for 14 T-states are processed for 254 iterations, but in 255th iteration, it took only 11 T-states, so while calculation:
(255 x 14) - 3 = 3567 T-states
2) Now, these 3567 T-states, along with (7+4+10) T-states are placed in another outer loop, which is going to rotate for 10H times or 16 times. Don't forget to subtract 3 for the same reason mentioned in point 1.
( (3567 + 7 + 4 + 10) x 16) - 3 = 57405 T-states
3) Now, combine this value to the T-state of 1st instruction of delay routine
(57405+7) = 57412 T-state
4) Since 1 clock duration = 1 T-state = 0.5usec, so
(57412 x 0.5usec) = 28.706 msec
This given routine is going to generate delay of 28.706 msec. This same process is applied to calculate the execution time of any 8085 microprocessor program such that user can calculate how responsive system might be, if the system is running using given program and said specification.
Happy learning :-) Please post your comments below!