movlw n 1 + call dottime 2 | ---------------- | dottime | movwf DOTCNT1 1 | dot_outer | movlw m 1 + | movwf DOTCNT0 1 | | dot_inner + | | x * nop x | y | z | t decfsz DOTCNT0,f 1 (2) | | | goto dot_inner 2 + | | decfsz DOTCNT1,f 1 (2) | | goto dot_outer 2 + | return 2 + y = (x + 1 + 2) * m - 1 = xm + 3m - 1 z = (1 + 1 + y + 1 + 2) * n - 1 = (4 + xm + 3m) * n - 1 = 4n + 3mn + xmn - 1 t = 1 + 2 + 1 + z + 2 = 5 + 4n + 3mn + xmn = ================== @ n = m = 256 (0): tmax = 197637 + 65536x µs @ n = m = 1: tmin = 12 + x µs for x=0: tmin = 12, tmax = 197637 x=1: tmin = 13, tmax = 263173 x=2: tmin = 14, tmax = 328709 x=3: tmin = 15, tmax = 394245 x=4: tmin = 16, tmax = 459781 x=5: tmin = 17, tmax = 525317 x=6: tmin = 18, tmax = 590853 x=7: tmin = 19, tmax = 656389 m(dot) = m(dot) = 36 m(dash) = 3*m(dot) = 108 m(element space) = m(dot) = 36 m(character space) = 3*m(dot) = 108 m(word space) = 7*m(dot) = 252 @ m = 36; tmax = 5 + 112n + 36xn @ m = 108: tmax = 5 + 328n + 108xn @ m = 252: tmax = 5 + 760n + 252xn n => CWSPEED x => nop count