0% encontró este documento útil (0 votos)
109 vistas8 páginas

Directivas MPASM para Programadores

Este documento presenta directivas para el ensamblador MPASM para cargar datos en memoria, controlar el ensamblado condicionalmente, e incluir macros. Algunas directivas clave son DATA y DB para cargar datos, IF/ELSE para ensamblar condicionalmente, e INCLUDE para incorporar archivos.

Cargado por

Jonathan Lazo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
109 vistas8 páginas

Directivas MPASM para Programadores

Este documento presenta directivas para el ensamblador MPASM para cargar datos en memoria, controlar el ensamblado condicionalmente, e incluir macros. Algunas directivas clave son DATA y DB para cargar datos, IF/ELSE para ensamblar condicionalmente, e INCLUDE para incorporar archivos.

Cargado por

Jonathan Lazo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte