Ahora si perdon.. este es un mensaje editado con la respuesta.
Tu problema con el calculo esta en que no estas contando cuando no d1 o d2 llegan a 0, en ese punto si pasa por el DECFSZ pasan a tener le valor 255.
Otra consideracion previa antes de dar el calculo, para llegar del primer decfsz ( el de d1 ), dar toda la vuelta, y volver al mismo decfsz si o si tenes 7 ciclos. Si el primer defsz no salta, tenes 3 GOTO + 1 DEFCSZ, Si el primero salta, tenes 2 del primer DECFSZ, 1 del proximo DECFSZ y luego 4 de los GOTO, lo mismo se corrobora si los 2 primeros decfsz saltan, como ves sea donde sea tenes SIEMPRE 7 ciclos.
El unico caso que esto no se cumple es cuando se sale, que se ejecutan 3 saltos de DECFSZ y por lo tanto son 6 ciclos.
Aca es donde se complica un poco mas el tema.
Como te decia para cuando d2 vale 47 ( 0x2F ) d3 solo tiene quedar 7 (0x7) vueltas, pero cuando d2 vale 46 o menos, tiene quedar 256 vueltas.
De la misma forma ocurre con d3, el primero de estos significa que d2 solo da 47 vueltas ( de la cual como dijimos antes una es de 7 nomas ), y las demas de 256.
Ahora como obtener esto, asi:
- Son 2 vueltas de d3, las cuales cada vuelta de d3 son 256 de d2, y a su vez cada una de d2 son 256 de d1, y 7 ciclos cada uno de d1 como dijimos, por lo tanto:
2 * 256 * 256 * 7 = 917.504 ciclos
**Caso de vueltas "completas" de d3, observese que d3 eran 3, y tomamos 1 menos**
- Luego tenemos la vuelta restante de d3 ( recorda que eran 3 ) en las que d2 tiene vueltas "completas" de d1, es decir las 46 restantes ( 1 menos de lo que tiene )
1 * 46 * 256 * 7 = 82.432 ciclos
**Caso de vueltas "completas" de d2, aca tambien tomamos uno menos**
- d3 tambien tiene un par de vueltas mas, recorda que empezamos con 7, y hasta ahora no las tuvimos en cuenta, y que corresponden cuando d2 es 47, pero 1 vuelta es la de salida. Por lo tanto:
1 * 1 * 6 * 7 = 42 ciclos
**Caso de vueltas "completas" de d1, aca tambien tomamos uno menos que corresponde a cuando sale**
- Finalmente la vuelta de salida que son 6 ciclos mas.
Resultado final:
999.984
Que sumado a los 6 ciclos de los MOVLW / MOVWF anteriores dan los 999.990 especificados en el codigo