Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
equ
equ
0x0C
0x0D
org
0x00
bsf
bcf
bcf
STATUS, RP0
TRISB, 0
STATUS, RP0
bsf
call
bcf
call
goto
PORTB, 0
pausa
PORTB, 0
pausa
MLoop
;
;
;
;
;
;
;
;
;
;
;
Start
MLoop
;****************************************************************************
; Subrutina pausa. Genera 325 milisegundos aprox.
pausa
movlw d'100'
; Mover 100 a W
movwf cont1
; Mover W a cont1 (cargar cont1)
movlw d'255'
; Mover 255 a W
movwf cont2
; Mover W a cont2 (cargar cont2)
loop1
decfsz cont1, f
; decrementar cont1, saltear si da 0
goto
loop2
; saltar a loop2
decfsz cont2, f
; decrementar cont2, saltear si da 0
loop2 goto
loop1
; saltar a loop1
return
; retornar de subrutina
end
; Fin del cdigo
Visto el cdigo de izquierda a derecha podemos notar que sobresalen cuatro columna
s. (Los colores ayudan mucho, aunque no determinan nada.)
La primera columna es la que contiene las etiquetas y tambin algunas directivas.
Las etiquetas sirven para marcar las direcciones de las instrucciones a las que
preceden. Pueden ser tiles para algunas instrucciones y en otros casos estn de ado
rno. Por ejemplo, la etiqueta Start vale por la direccin de bsf STATUS, RP0. El n
ombre de las etiquetas es un identificador. Pueden opcionalmente ir seguidas de
dos puntos (:).
En este programa tenemos las etiquetas Start, MLoop, pausa, loop1 y loop2.
En la segunda columna estn los mnemnicos de las instrucciones, como bsf, movlw, et
c. (en el ejemplo aparecen de color marrn), macros o directivas del ensamblador.
Las directivas (cuyos nombres aparecen de color azul) no son instrucciones del P
IC ni constituyen cdigo ejecutable. Son ordenes que el ensamblador tendr en cuenta
en el momento de ensamblar el cdigo fuente. Tienen diversas funciones y ayudan b
astante, como lo veremos en adelante.
Ahora, lo que puede resultar desalentador es la cantidad de directivas que exist
en. De la enorme lista disponible solo un grupo de ellas son realmente elemental
es e iremos conocindolas de a poco. La lista inicial indispensable est formada por
list, include, __config, banksel, equ, org, end, define, cblock, endc, dt.
La tercera columna est constituida bsicamente por los operandos de instrucciones,
como STATUS, RP0; TRISB; pausa; etc.
En la cuarta columna sobresalen los comentarios. Un comentario es todo lo que si
gue en el rengln a un punto y coma (;) y ser ignorado por el ensamblador (en el li
stado es todo lo que se ve de color verde). Digamos que son texto de adorno que
solo sirve para documentar el programa. De hecho, los comentarios pueden ponerse
en cualquier parte del listado.
sa es una forma algo burda de estructurar un programa, pero ayuda muchsimo. Ahora
pasaremos a revisarlo de arriba abajo.
Los identificadores son los nombres que podemos usar para identificar ciertos el
ementos del cdigo fuente, como registros GPR, etiquetas, macros, etc. Los nombres
se forman a criterio del usuario, usando los carecteres alfanumricos disponibles
y los signos _ y ?, respetando las siguientes reglas:
No debe haber dos indentificadores iguales.
No deben empezar con nmeros. Ejemplo, 1n4148.
No deben comenzar con dos rayas bajas seguidas. Ejemplo, __var.
No deben incluir espacios. Ejemplo, contador 1.
No deben ser palabras reservadas, como directivas o mnemnicos. Ejemplo, include,
processor, retlw, etc.
A diferencia de los mnemnicos, por defecto el ensamblador distingue entre caracte
res maysculas y minsculas.