Dividamosla por partes, empecemos desde adentro hacia afuera:
DECFSZ CONT1,1 (1 O 2)
GOTO $-1 (2)
...
Acá tenemos (CONT1-1)*3+2 (2 cuando salga del bucle)
LOOP MOVLW .255 (1)
MOVWF CONT1 (1)
DECFSZ CONT1,1 (1 O 2)
GOTO $-1 (2)
DECFSZ CONT2,1 (1 O 2)
GOTO LOOP (2)
...
Ahora tenemos: (
(CONT1-1)*3 + 2 + 1 + 2 + 1 +1)*(CONT2-1)+2
Paso a paso seria: Ciclos utilizados en el primer
lazo + ciclo de decfsz + 2 ciclos del goto + 2 ciclos del movlw y movwf y los últimos 2 cuando salga del lazo.
LOOP1 MOVLW .255 (1)
MOVWF CONT2 (1)
LOOP MOVLW .255 (1)
MOVWF CONT1 (1)
DECFSZ CONT1,1 (1 O 2)
GOTO $-1 (2)
DECFSZ CONT2,1 (1 O 2)
GOTO LOOP (2)
DECFSZ CONT3,1 (1 O 2)
GOTO LOOP1 (2)
...
[
((CONT1-1)*3 + 2 + 1 + 2 + 1 +1)*(CONT2-1)+2 + 1 + 2 + 1 + 1 ]*(CONT3-1) + 2
Paso a paso de nuevo: Ciclos de los
2 lazos anidados + 1 del decfsz + 2 goto + 2 del movlw y movwf + 2 cuando salga del lazo.
A todo esto se debe agregar 2 del call, 2 de movlw y movwf iniciales y 2 del return:
[ ((CONT1-1)*3 + 2 + 1 + 2 + 1 +1)*(CONT2-1)+2 + 1 + 2 + 1 + 1 ]*(CONT3-1) + 2 + 2 + 2 + 2.
Espero no haberme equivocado en algún paso
Saludos!