Cuando un archivo fuente se ensambla de esta manera, todas las variables y rutinas utilizadas en el
el archivo fuente deben definirse dentro de este, o en archivos explcitamente incluidos por el archivo
fuente. Si el ensamblado se realiza sin errores, se generar un archivo hexadecimal .HEX que contiene
el cdigo mquina ejecutable para el dispositivo designado. Este archivo puede utilizarse con un
simulador para probar la ejecucin del cdigo o cargarse en el microcontrolador mediante un
programador.
Archivos de entrada/salida
stas son las extensiones de archivo predefinidas utilizadas por el ensamblador y su funcin.
Archivos de entrada:
o Cdigo fuente (.asm): Archivo fuente de entrada al ensamblador.
o Archivo include (.inc): Archivo de inclusin o cabecera.
Archivos de salida:
o Archivo de listado (.lst): Archivo del listado generado por el ensamblador.
o Archivo de error (.err): Archivo de errores de ensamblado.
o Archivo hexadecimal (.hex, .hxl, .hxh): Archivo hexadecimal con cdigo ejecutable.
o Archivo de referencias cruzadas (.xrf): Archivo para las referencia cruzadas de los
archivos ensamblados.
o Archivo de smbolos y depuracin (.cod).
o Archivo objeto (.o).
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 1 de 6
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 2 de 6
Etiquetas
Una etiqueta se usa para representar una lnea o grupo de cdigo, o un valor constante. Se
necesitan para las instrucciones de salto.
Las etiquetas deben empezar en la columna 1. Pueden terminar en "dos puntos" (:), espacio,
tabulacin o fn de lnea. Las etiquetas deben comenzar por un carcter alfabtico o por un guin bajo
(_) y puede contener carcteres alfanumricos, guin bajo (_) y el signo de interrogacin (?).
Las etiquetas no deben:
Comenzar por dos guiones bajos, ejem., __config.
Comenzar por un guin bajo y un nmero, ejem., _2NDLOOP.
Ser palabras reservadas del ensamblador (ver Section 3.3 Reserved Words and Section
Names de MPASM, MPLINK, MPLIB User's Guide).
Las etiquetas pueden tener como mucho 32 carcteres. Por defecto se distinguen maysculas y
minsculas, pero esto puede anularse con la opcin en lnea de comandos (/c). Si se utiliza "dos
puntos" (:) al definir una etiqueta, se le trata como un operador de la etiqueta y no como parte de la
propia etiqueta.
Directiva EQU
El nombre viene de la palabra "equal", (igual)". La directiva EQU permite al programador "igualar"
nombres personalizados a datos o direcciones. Los nombres utilizados se refieren generalmente a
direcciones de dispositivos, datos numricos, direcciones de comienzo, direcciones fijas, posiciones de
bits, etc. Un nombre es ms descriptivo que una simple direccin y la tarea de programar se har
mucho ms sencilla. Tambin podemos asignar un nombre a una instruccin que repitamos varias
veces a lo largo de un algoritmo, de manera que sea mucho ms sencilla la programacin. A estos
nombre que asignamos mediante esta directiva se les denomina constantes, ya que el registro al que
apuntan no variar durante el programa. Ejemplos:
temp
DATO
PORT_A
Bank_1
equ
EQU
EQU
EQU
12
22
5
BSF STATUS,RP0
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 3 de 6
Directiva ORG
Esta directiva dice al ensamblador a partir de que posicin de memoria de programa se situarn las
siguientes instrucciones. Rutinas de comienzo, subrutinas de interrupcin y otros programas deben
comenzar en locaciones de memoria fijados por la estructura del microcontrolador. Recordemos que el
16F84 slo tiene 1024 posiciones de memoria flash para cdigo.
La directiva ORG hace al compilador colocar el cdigo que le sigue en una nueva direccin de
memoria (la salida del compilador no solo coloca los cdigos de operacin sino tambin las direcciones
de cada instruccin del programa). Usualmente se la utiliza para: reset, programas de servicios de
interrupcin, programa principal, subrutinas.
Ejemplos:
1) Inicia el programa en la posicin cero:
ORG
0x00
2) Inicia el programa en la posicin 0000h y luego pasa a la 0005h para no utilizar la posicin del
vector de interrupcin (0004 h)
ORG
0x00
; El programa comienza en la direccin 0 y
GOTO
inicio ; salta a la direccin 5 para sobrepasar
ORG
0x05
; el vector de interrupcin, situado en la posicin 4
Inicio xxx...
Directiva #INCLUDE
Esta directiva indica que archivos debern tomarse en cuenta a la hora de compilar el cdigo.
Normalmente se usa para incluir el archivo de PIC que el ensamblador tiene entre sus archivos, con el
cual el compilador ser capaz de reconocer todos los registros especiales y sus bits. Su uso nos
recordar al #include del lenguaje C. Esta lnea debe colocarse al principio, y tiene la siguiente sintaxis:
#INCLUDE
En ciertas ocasiones gran cantidad errores son debidos a que el nombre del archivo puesto entre
comillas no se escribe correctamente.
Directiva LIST
Este comando sirve para que el compilador tenga en cuenta sobre qu procesador se est
trabajando. Este comando debe estar en todo proyecto, situado debajo del "include", con la siguiente
sintaxis.
LIST P=PIC16F877A
Directiva END
Al igual que las dos anteriores, esta debe ir incluida una sola vez en todo el programa. En concreto,
esta debe situarse al final, para indicar al ensamblador que el programa ha finalizado. Esta siempre
debe estar presente, aunque el flujo de nuestro programa acabe en un bucle.
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 4 de 6
Macros
Las macros son conjuntos de instrucciones y directivas definidas por el usuario que se insertarn en
el cdigo fuente al realizar el ensamblado siempre que la macro se invoque.
Mnemnicos
Los mnemnicos de las instrucciones del ensamblador, las directivas y las llamadas a macros deben
colocarse de la segunda columna en adelante. Si hay una etiqueta en la misma lnea, las instrucciones
deben separarse de esa etiqueta por "dos puntos", o por uno o ms espacios o tabulaciones.
Operandos
Los operandos dan informacin a la instruccin sobre los datos que deben utilizarse y donde se
encuentran. Los operandos debe separarse de los mnemnicos por uno o ms espacios, o tabulaciones.
Los operandos mltiples deben separarse por comas.
Comentarios
Los comentarios son texto que explica el funcionamiento de una lnea o lneas de cdigo. El
ensamblador MPASM trata lo que est despus de un punto y coma como un comentario. Todos los
caracteres que siguen al punto y coma se ignoran hasta el final de la lnea. Las constantes del cadena
que contienen un punto y coma se permiten y no se confunden con comentarios.
O
#INCLUDE<P16F877A.INC>
Los archivos de cabecera se encuentran en el directorio de instalacin de MPASM o de MPLAB.
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 5 de 6
Sistemas de numeracin
La convencin utilizada por MPASM es la siguiente:
Hexadecimal: es la numeracin por defecto. Para mayor claridad para el programador se utiliza una
letra H al final del nmero. Por ejemplo: 0100H, 0A0H, 5H, 66h.
Importante: Como sta es la numeracin por defecto hay que tener mucho cuidado al colocar
nmeros en decimal. Por ejemplo la instruccin MOVLW 64 no utilizar el nmero 64 decimal sino el
100 decimal (64 hex = 100 dec)
Binario: Para escribir nmeros en binario utilizar B'xxxxxxxx' (utilizar comillas simples). Por
ejemplo: B'10011001' , b'01110000'.
Decimal: podemos utilizar la forma D'120' (tambin con comillas simples) o la forma corta
anteponiendo un punto al nmero decimal. Esta es la forma utilizada en todos los programas realizados
por Microchip. Por ejemplo: D'112' d'10' .200 .100
Tener en cuenta siempre el tamao de datos con el que se est trabajando. En la mayora de los
casos, se utilizar un nmero para almacenarlo en el acumulador y ste es de 8 bits. Por lo tanto el
nmero utilizado no debe exeder de 255 decimal o FF hexadecimal.
Tipo
Decimal
Hexadecimal
Sintaxis Ejemplo
Comentario
D''
D'100'
.100
H''
H'64'
0x
0x64
64
Por defecto
O puede ser minscula
Octal
O''
O'144'
Binario
B''
A''
A'C'
''
'C'
ASCII
http://perso.wanadoo.es/pictob/mpasm.htm y http://perso.wanadoo.es/pictob/ensamblador.htm
Para mayores referencias, revisar los artculos completos o acudir directamente a la documentacin de Microchip:
MPASM Assembler, MPLINK Object Linker, MPLIB Object Librarian Users Guide
http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf
Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm
Pgina 6 de 6