DIRECTIVAS DEL ENSAMBLADOR MPASM
1.- Directivas para carga o reserva en la Memoria de Programa
DATA Inicializa una o más palabras de la memoria de programa con
datos o tiras de caracteres
DATA 0x012, 0x1345
DATA “Prueba 1,2,3”
DA Almacena en paquetes de 14 bits dos caracteres ASCII
representados con 7 bits
DA “abcdef”
DB Reserva e inicializa bytes en la memoria de programa
DB ’T’, 0xF0, ‘S’
DW Reserva e inicializa palabras en la memoria de programa
DW 0x39, 0x45B
DT Genera una serie de instrucciones RETLW, una por cada
expresión que acompaña a la directiva
DT 1, 2, 3, 5, 7
DE Reserva y carga posiciones de la memoria de programa con
bytes, en principio estaba pensada para rellenar la EEPROM de
datos (empieza en la 0x2100), pero se puede emplear para
cualquier posición de memoria de programa
ORG 0x2100
DE “Programa version 1.0”
FILL Rellena un número de posiciones de memoria de programa con
un mismo contenido (dato o instrucción si va entre paréntesis)
FILL 0x190F, 5
RES Reserva un determinado número de posiciones de la memoria de
programa (avanza el puntero de cuenta de posición en la
memoria de programa)
RES 64
_ _CONFIG Carga la palabra de configuración del microcontrolador,
previamente se debe haber declarado el microcontrolador
_ _CONFIG 0x3F43
_ _IDLOCS Se emplea para cargar las 4 posiciones de identificación del
microcontrolador. Se debe haber declarado previamente el
microcontrolador
_ _IDLOCS 1234
2.- Directivas de Control
CBLOCK Se emplean para declarar inicio y final de un bloque de
ENDC constantes. Se asignan valores correlativos
CBLOCK 0x20
A, B, C, D ;A = 0x20, B=0x21, C=0x22, D=0x23
ENDC
CONSTANT Las dos se emplean para asignar expresiones a símbolos
EQU esos símbolos no pueden luego cambiar de valor (son
constantes). Sintaxis distinta, pero igual efecto
CONSTANT longitud=0x10
longitud EQU 0x10
VARIABLE Las dos se emplean para asignar expresiones a símbolos
SET esos símbolos pueden cambiar de valor (son variables). Sintaxis
distinta, pero igual efecto
VARIABLE BUFFER=0x20
BUFFER SET 0x20
#DEFINE Se emplea para definir una etiqueta para una tira de
caracteres siempre que aparezca la etiqueta, se sustituye
directamente por la tira
#DEFINE bit_0 STATUS,RP0
#UNDEFINE Anula una asignación previa realizada con #DEFINE
#UNDEFINE bit_0
ORG Sitúa el código que se vaya generando después a partir de la
posición especificada
ORG 0x100
END Final de código fuente
END
INCLUDE Se incluye el fichero especificado, se inserta en la posición y
será ensamblado
INCLUDE “c:\mplab\[Link]”
INCLUDE <[Link]>
RADIX Se especifica el RADIX que se está usando
RADIX dec ;pueden ser hex ú oct
PROCESSOR Define el tipo de microcontrolador
PROCESSOR 16F877
Para controlar la generación del fichero de listado (.LST):
TITLE Título en la cabecera de las páginas
SUBTITLE Subtítulo (segunda línea) en cabecera
SPACE Inserta líneas en blanco
PAGE Inserta salto de página
LIST Habilita listado y opciones del mismo
NOLIST Deshabilita generación en fichero .LST
MESSG Saca mensajes en el fichero .LST
ERROR También para sacar mensajes en .LST
ERRORLEVEL Especifica tipos de mensajes que aparecerán en [Link]
ERRORLEVEL 0 ;Errores, warnings y mensajes
ERRORLEVEL 1 ;Warnings y errores
ERRORLEVEL 2 ;Errores
3.- Directivas de Ensamblado condicional
IF expresión
Grupo de directivas e instrucciones que se ensamblan si es cierta la
expresión
ENDIF
p.e. IF versión==1
MOVLW 0x0A
MOVWF PORTB
ENDIF
IF expresión Si la expresión es cierta
Se ensambla este grupo
Grupo 1 de Directivas e Instrucciones
ELSE y si es falsa, este otro
Grupo 2 de Directivas e Instrucciones
ENDIF
IFDEF etiqueta
Puede sustituir en las dos directivas anteriores IF expresión
Se ensambla si está definida la etiqueta
#DEFINE DE_B_a_A 1
….
p.e.
IFDEF DE_B_a_A
MOVF PORTB,w
MOVWF PORTA
ELSE
MOVF PORTA,W
MOVWF PORTB
ENDIF
IFNDEF etiqueta
Puede sustituir en las dos directivas anteriores IF expresión
Se ensambla si no está definida la etiqueta
WHILE expresión
Grupo de instrucciones y directivas que se ensamblan mientras la
expresión sea cierta
ENDW
p.e. VARIABLE i
i=0
WHILE i < CONTADOR
RETLW i
i+=1
ENDW
Operadores Aritméticos y Lógicos para el ensamblador MPASM
4.- Macros
Una macro es un conjunto de instrucciones que pueden ser insertadas en el
código fuente mediante una simple llamada a macro.
Una macro debe ser definida primero antes de poder ser llamada en el
código fuente siguiente.
Una macro puede llamar a otra macro o a sí misma de manera recursiva
Definición de una macro:
Etiqueta MACRO argumento1, arguento2, argumento3,…
Conjunto de Instrucciones
EXITM (salida intermedia opcional)
Más instrucciones
ENDM
Utilización de una macro (llamada):
Etiqueta_de_Macro arg1, arg2, arg3
p.e. Definiciones:
Banco_0 MACRO
bcf STATUS,RP0
bcf STATUS,RP1
ENDM
Banco_1 MACRO
bsf STATUS,RP0
bcf STATUS,RP1
ENDM
Utilización:
movlw 0xF0
Banco_1
movwf TRISB
Banco_0