Duda en lenguaje ensamblador para PIC

#1
Hola.
Esta es mi primer pregunta en el foro.
Quisiera consultarlos sobre una instrucción de un macro que leí de un application note;
Copio aquí parte del código;

WAIT:MACRO TIME
;Delay for TIME µs.
;Variable time must be in multiples of 5µs.
MOVLW (TIME/5) - 1 ;1µs to process
MOVWF TMP0 ;1µs to process
CALL WAIT5U ;2µs to process
ENDM

Mi duda es la siguiente. En la línea que dice MOVLW (TIME/5) - 1; ¿se puede usar la división (/) en el assembler de los pic\'s?
Corrí el simulador del mplab paso a paso con varios valores de TIME y veo que efectivamente hace la división y la hace bien pero no encontré nada en internet de hacer la división así y dado que esto es parte de una rutina que controla tiempos, es importante saber cuantos ciclos tomaría ejecutar esa instrucción.
Según la hoja que estoy leyendo, toma solo un ciclo y lo utilizan alegremente.
Dejo acá el link del documento que estoy leyendo: maximintegrated.com/en/app-notes/index.mvp/id/2420
Espero se haya entendido lo que quiero consultar y desde ya muchas gracias por su ayuda.
Saludos.- ...
 
#2
Hola.
Dime, TIME esta declarado como variable o constante?, has probado distintos valores en el mismo tiempo de ejecución?.

Sucede que si se pueden realizar distintos tipos de operaciones sin embargo el que se considera es el resultado del mismo y se toma como constante... dicho valor constante es el que realmente va grabado en el PIC.

Saludos.
 
#3
Agregando a lo que dice el compañero Axel, esa división la ejecuta el ensamblador en si, no el micro. Al final de cuentas esa instrucción se grabará en el micro como movlw K, y será ya el resultado de la operación.

Incluso ve el comentario

Variable time must be in multiples of 5µs
Para que el resultado sea entero siempre.

Saludos y bienvenido al foro.
 

Temas similares

Arriba