Beruflich Dokumente
Kultur Dokumente
MPASM nos permite escribir el cdigo y ensamblarlo para producir como salida un
fichero .HEX que luego grabaremos en el PIC o que nos servir para utilizarlo con el
simulador que incorpora MPLAB, en otros programas como PROTEUS o por ejemplo en
emuladores de PIC.
Con MPASM podemos producir un fichero .HEX a partir de un nico archivo .ASM con
cdigo simple/absoluto o bien podemos generar un archivo .HEX a partir de la unin de
distintos cdigos objeto y otros mdulos ensamblados y/o compilados. En este caso la
herramienta que dispone el MPLAB para "unir" esos mdulos se llama MPLINK.
Tambin podemos generar mdulos objeto para luego ser ensamblados con otros y as
producir un nico archivo .HEX. Otra posibilidad es crear libreras por medio de MPLIB.
Las libreras son una coleccin de cdigos objeto listos para ser utilizados y que se
almacenan todos juntos en un nico archivo con extensin .LIB.
Para mas informacin ver MPASM, MPLINK, MPLIB User's Guide o informacin
actualizada en Microchip.
Generacin de cdigo
Como antes hemos avanzado el ensamblador MPASM puede usarse de dos maneras:
Para generar cdigo absoluto que puede ser ejecutado directamente por un
microcontrolador.
Para generar cdigo relocalizable que puede unirse separadamente con otros
mdulos ensamblados o compilados.
Cuando un archivo fuente se ensambla de esta manera, todas las variables y rutinas
utilizadas en 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.
a. Archivos de entrada:
1.
2.
b. Archivos de salida:
1. Archivo de listado (.lst): Archivo del listado generado por el ensamblador.
2. Archivo de error (.err): Archivo de errores de ensamblado.
3. Archivo hexadecimal (.hex, .hxl, .hxh): Archivo hexadecimal con cdigo
ejecutable.
4. Archivo de referencias cruzadas (.xrf): Archivo para la referencia
cruzadas de los archivos ensamblados.
5. Archivo de smbolos y depuracin (.cod).
6. Archivo objeto (.o).
a. Archivos de entrada
1. 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. Para ms informacin ver El lenguaje ensamblador del PIC16F84A
El cdigo fuente debe seguir las siguientes pautas bsicas:
Cada lnea del archivo fuente puede contener cuatro tipos de informacin:
4
Etiquetas
Operacin, Mnemnicos (instrucciones), Directivas y Macros
Operandos
Comentarios
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 fin de lnea. Las etiquetas deben comenzar por un carcter alfabtico
o por un guin bajo (_) y puede contener caracteres alfanumricos, guin bajo (_) y el
signo de interrogacin (?).
Las etiquetas no deben:
Las etiquetas pueden tener como mucho 32 caracteres. 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.
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
(ver directiva macro).
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 deben 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 de la cadena que contienen un punto y coma se permiten y no se
confunden con comentarios.
b. Archivos de salida
1. Archivo de listado (.lst)
El archivo de listado que genera MPASM proporciona la correspondencia entre cdigo
fuente y cdigo objeto, como puede verse en este fragmento de archivo .LST:
LOC OBJECT CODE
VALUE
001C
001D
3A03
1903
00065
00066
XORLW
BTFSC
0x03
STATUS,2
00065
XORLW
0x03
Analicemos la lnea:
001C
3A03
El archivo de listado tambin proporciona una lista de smbolos y sus valores, informacin
sobre el uso de la memoria y el nmero de errores, advertencias y mensajes generados.
Aparece una informacin del tipo:
Program Memory Words Used:
Program Memory Words Free:
782
242
Por ejemplo:
Error[113] C:\PROG.ASM 7 : Symbol not previously defined (start)
El archivo del error puede contener cualquier nmero de errores, advertencias y mensajes
del ensamblador MPASM. Para mas informacin, ver Chapter 8. Errors, Warnings,
Messages, and Limitations en MPASM, MPLINK, MPLIB User's Guide
Tipo de
formato
INHX8M
Extensin
Uso
de rchivo
.hex
INHX32
.hex
INHX8S
.hxl, .hxh
donde:
BB: dos dgitos en hexadecimal que representan el nmero de bytes de datos que
aparecen en la lnea.
AAAA: cuatro dgitos en hexadecimal que representan la direccin de arranque de
los datos del registro.
TT: dos dgitos que siempre sern '00' salvo al final del archivo de datos que sern
'01'.
HH: dos dgitos en hexadecimal, con la informacin en la forma byte bajo / byte
alto.
CC: checksum de dos dgitos en hexadecimal son el complemento a dos de la suma
de todos bytes precedentes en el registro.
Ejemplo:
Parte de e001.lst:
0000
0001
0002
3007
3E08
0090
movlw
addlw
movwf
0x07
0x08
0x10
e001.hex completo:
:020000040000FA
:060000000730083E9000ED
:00000001FF
Observemos la 2 lnea:
:060000000730083E9000ED
:06000000
06 6 bytes: 07, 30, 08, 3E, 90, 00.
0000 direccin 0
00 al no ser el registro final
730083E9000ED
07 30 es 3007
08 3E es 3E08
90 00 es 0090
ED es el checksum
Ejecutar MPASM
MPASM permite operar a travs de una ventana con el botn Built All de MPLAB (ver
MPLAB-IDE v6.60) o a travs de lnea de comandos, siendo el resultado final el mismo,
mediante el programa mpasmwin de Microchip.
La lnea de comando se compone de de distintos campos, del tipo:
MPASMWIN [/<opcin>[,/<opcin>....]] [<nombre_archivo>]
10
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 exceder 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
Directivas de MPASM
Las directivas son "indicaciones" para el ensamblador que le dicen cmo hacer algunas
cosas, y sirven para ayudarnos en la tarea de programar. MPASM ofrece bastantes
directivas, las cuales se escriben dentro del cdigo fuente. Por eso no hay que confundir las
directivas con las instrucciones del PIC.
Los tipos de directivas son:
11
Directivas de control.
Directivas de datos.
Directivas de listado.
Directivas de macros.
Directivas de ficheros objeto.
DATA
DA
DB
DW
DT
Genera una serie de instrucciones RETLW, una por cada expresin que
acompaa a la directiva
DT 1, 2, 3, 5, 7
DE
12
FILL
RES
__CONFIG
__IDLOCS
CBLOCK
ENDC
CONSTANT
EQU
VARIABLE
SET
#DEFINE
Se emplea para definir una etiqueta para una cadena de caracteres siempre
que aparezca la etiqueta, se sustituye directamente por la cadena
#DEFINE bit_0 STATUS,RP0
#UNDEFINE
ORG
END
INCLUDE
RADIX
13
PROCESSOR
SPACE
PAGE
LIST
NOLIST
MESSG
ERROR
ERRORLEVEL
IF
ELSE
ENDIF
IFDEF
IFNDEF
WHILE
14
ENDW
sea cierta
VARIABLE i
i=0
WHILE i < CONTADOR
RETLW i
i+=1
ENDW
Macros
Una macro es un conjunto de instrucciones que pueden ser insertadas en el
cdigo fuente mediante una simple llamada a macro.
Una macro debe ser definida primero antes de poder ser llamada en
elcdigo fuente siguiente.
Una macro puede llamar a otra macro o a s misma de manera recursiva
Definicin de una macro:
Etiqueta MACRO argumento1, arguento2, argumento3, ...
Conjunto de Instrucciones
EXITM (salida intermedia opcional)
Ms instrucciones
ENDM
MACRO
EXITM
ENDM
15