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 DE 1, 2, 3, 5, 7 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 Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 1/7 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 Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 2/7 2.- Directivas de Control CBLOCK ENDC Se emplean para declarar inicio y final de un bloque de 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 longitud CONSTANT EQU longitud=0x10 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 BUFFER #DEFINE VARIABLE SET BUFFER=0x20 0x20 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 ORG bit_0 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 Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 3/7 INCLUDE Se incluye el fichero especificado, se inserta en la posición y será ensamblado INCLUDE INCLUDE RADIX “c:\mplab\PIC16F877.INC” <PIC16F877.INC> 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 fichero.LST ERRORLEVEL 0 ;Errores, warnings y mensajes ERRORLEVEL 1 ;Warnings y errores ERRORLEVEL 2 ;Errores Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 4/7 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 …. p.e. 1 IFDEF DE_B_a_A MOVF PORTB,w MOVWF PORTA ELSE MOVF PORTA,W MOVWF PORTB ENDIF Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 5/7 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 Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 6/7 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 Banco_1 MACRO bcf bcf ENDM STATUS,RP0 STATUS,RP1 MACRO bsf bcf ENDM STATUS,RP0 STATUS,RP1 Utilización: movlw 0xF0 Banco_1 movwf TRISB Banco_0 Resumen de Directivas del Ensamblador MPASM ©ATE-Uniovi 7/7