Sie sind auf Seite 1von 6

MPASM, el ensamblador de Microchip

MPASM, el ensamblador de Microchip


Debido a la flexibilidad del IDE de Microchip, MPLAB, tenemos la posibilidad de programar en
lenguajes como "C" o "Basic". Pero lo cierto es que con el ensamblador tenemos un codigo puro y
compacto. El ensamblador de Microchip que viene con MPLAB es el MPASM.

Generacin de cdigo absoluto


La generacin de cdigo absoluto es el modo definido por defecto del ensamblador MPASM. Este
proceso se muestra a continuacin:

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).

Cdigo fuente (.asm)


El ensamblador es un lenguaje de programacin para desarrollar cdigo fuente en una aplicacin con
PIC. El archivo de cdigo fuente puede crearse y editarse con cualquier editor de texto ASCII.
El cdigo fuente debe seguir las siguientes pautas bsicas:

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm

Pgina 1 de 6

MPASM, el ensamblador de Microchip


Cada lnea del archivo fuente puede contener cuatro tipos de informacin:
Etiquetas
Operacin, Mnemnicos (intrucciones), Directivas y Macros
Operandos
Comentarios

El orden y posicin de stos es importantes. Para facilitar la depuracin, se recomienda que la


etiqueta se coloque en la primera columna y que los mnemnicos se coloquen una o dos columnas ms
all. Los operandos siguen al cdigo mnemotcnico. Los comentarios pueden seguir a los operandos,
mnemnicos o etiquetas, y pueden comenzar en cualquier columna. La anchura de columna mxima es
de 255 carcteres.
Un espacio en blanco debe separar la etiqueta del cdigo mnemotcnico, y tambin un espacio en
blanco deba separar el cdigo mnemotcnico y los operandos. Los operandos mltiples deben separarse
por comas.
Se considera como un espacio en blanco uno o ms espacios o tabulaciones. El espacio en blanco se
utiliza para separar las partes de una lnea del cdigo fuente. El espacio en blanco debe utilizarse para
hacer el cdigo ms fcil de leer. Cualquier nmero de espacios en blanco o tabulaciones son
exactamente igual que uno.

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm

Pgina 2 de 6

MPASM, el ensamblador de Microchip

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.

Mnemnicos, directivas y macros


Los mnemnicos le dicen al ensamblador qu instrucciones de cdigo mquina (cdigos de
operacin) deben utilizarse. Por ejemplo, suma (add), ir a (goto) o movimientos (movwf). A
diferencia de las etiquetas que creamos nosotros mismos, los mnemnicos los proporciona el lenguaje
ensamblador que se utilice. Los mnemnicos no son en ningn caso sensibles a
maysculas/minsculas.
Las directivas son rdenes del ensamblador que aparecen en el cdigo fuente pero que normalmente
no son traducidas directamente a cdigos de operacin. Se utilizan para controlar al ensamblador: sus
entradas, salidas y asignacin de datos. Las directivas no son en ningn caso sensibles a
maysculas/minsculas.
Algunas de las directivas ms utilizadas son:

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

MPASM, el ensamblador de Microchip

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

; Lista de etiquetas de microchip

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

MPASM, el ensamblador de Microchip

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.

Archivo include (.inc)


Un archivo "include" o cabecera (header) es cualquier archivo que contenga cdigo ensamblador
vlido. Normalmente, el archivo contiene equivalencias sobre registros especficos del dispositivo a
utilizar y asignaciones de bits. Este archivo puede ser incluido en el cdigo para que pueda ser
reutilizado por muchos programas.
Como ejemplo, para aadir el archivo de cabecera para el dispositivo PIC16F877A en el cdigo
ensamblador de nuestro programa, pondremos:
#INCLUDE P16F877A.inc

O
#INCLUDE<P16F877A.INC>
Los archivos de cabecera se encuentran en el directorio de instalacin de MPASM o de MPLAB.

Archivo hexadecimal (.hex, .hxl, .hxh)


El archivo hexadecimal es, por as decirlo, el archivo que contiene el ejecutable para el
microcontrolador.

Modificado de http://perso.wanadoo.es/pictob/mpasm.htm
Y http://perso.wanadoo.es/pictob/ensamblador.htm

Pgina 5 de 6

MPASM, el ensamblador de Microchip

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'

D puede ser minscula

.100

H''

H'64'

0x

0x64

H puede ser minscula

64

Por defecto
O puede ser minscula

Octal

O''

O'144'

Binario

B''

B'01100100' B puede ser minscula

A''

A'C'

''

'C'

ASCII

A puede ser minscula

Este artculo es una modificacin a dos artculos de Emilio Toboso en

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

Das könnte Ihnen auch gefallen