Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Directivas Ensamblador

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 106

http://www.terra.es/personal/fremiro/directivas.

htm

DIRECTIVAS DEL MPLAB

Directiva Descripción Sintaxis


 _ _ BADRAM
BADRAM Especifique las posiciones del RAM inválidas  _badram<expr>
 _ 
BANKISEL Genera el
el código
código que selecciona el banco de bankisel<label>
memoria de memoria RAM para
direccionamiento
direccionamiento indirecto
BANKSEL Genera el código que selecciona el código de banksel<label>
memoria RAM
CBLOCK Defina un Bloque de Constantes cblock [<expr>]
CODE Empieza la sección del código ejecutable [<name>] code [<address>]
[<address>]
 _ _CONFIG Especifica los bits de configuración
configuración _ _config<expr>
_config<expr>
CONSTANT Declara los Símbolos de las Constantes constant
<label>[=<expr>,...,<label>[=<
<label>[=<expr>,...,<label>[=<expr>]
expr>] ]
DATA Crea Datos numéricos y de Texto [<label>] data <expr>,[,<expr>,...,<exp
<expr>,[,<expr>,...,<expr>]
r>]

[<label>] data
´<text_string>µ[,µ<text_string>µ,...]
DB Declare Datos de un Byte [<label>] db<expr>[,<expr>,...,<ex
db<expr>[,<expr>,...,<expr>]
pr>]

[<label>] db
´<text_string>µ[,µ<text_string>µ,...]
DE Defina los Datos de EEPROM [<label>] de <expr>[,<expr>,...,<expr
<expr>[,<expr>,...,<expr>]
>]

[<label>] de
´<text_string>µ[,µ<text_string>µ,...]
#DEFINE Defina una Etiqueta de Substitución de Texto define <name> [<value>]

define <name> [<arg>,...,<ar


[ <arg>,...,<arg>]
g>] <value>
DT Defina Tabla [<label>] dt<expr>[,<expr>,...,<expr
dt<expr>[,<expr>,...,<expr>]
>]

[<label>] dt
´<text_string>µ[,µ<text_string>µ,...]
DW Declare Datos de un Word [<label>] dw<expr>[,<expr>,...,<exp
dw<expr>[,<expr>,...,<expr>]
r>]

[<label>] dw
´<text_string>µ[,µ<text_string>µ,...]
ELSE Empieza el bloque alternativo de un IF Else
END Fin de bloque de programa End
ENDC Acaba un Bloque Constante Automático Endc
ENDIF Fin del bloque de condiciones
condiciones ensambladas Endif 
ENDM Fin de la definición de una Macro Endm
ENDW Fin de un bucle de While Endw
EQU Define una constante para el ensamblador
ensamblador <label>equ<expr>
<label>equ<expr>
ERROR Manda un mensaje de error error ´<text_string>µ
ERRORLEVEL Sitúa el nivel del error errorlevel 0|1|2| <+|-><message
<+|-><message
number>
EXITM Salida de una Macro Exitm
EXPAND Expande una lista de Macro expand
EXTERN Declara una etiqueta externa extern<label>[
extern<label>[ ,<label>]
FILL Llena la memoria [<label>] fill <expr>, <count>
GLOBAL Exporta una etiqueta definida global <label>[ ,<label>]
IDATA Comienza una sección de identificadores
identificadores (ID) [<name>] idata [<address>]
[<address>]
 _ _ IDLOCS
IDLOCS Especifica donde están colocados los  _ _idlocs<expr>
_idlocs<expr>
Identificadores (ID)
IF Empieza un bloque de código condicional if <expr>
IFDEF Ejecutar si el símbolo ha sido definido ifdef<label>
IFNDEF Ejecutar si el símbolo no ha sido definido ifndef<label>
#INCLUDE Incluye Ficheros fuentes adiccionales include <<include_file>>
|´<include_file>µ
LIST Opciones listado list [<list_option>,...,<list_option>]
[<list_option>,...,<list_option>]
LOCAL Declara una Macro Variable como local local <label>[,<label>]
<label>[,<label>]
MACRO Declara la Definición del Macro <label> macro [<arg>,...,<arg>]
[<arg>,...,<arg>]
 _ _ MAXRAM
MAXRAM Especifique la dirección del RAM máxima _ _maxram<expr>
MESSG Crea Mensajes definidos por el usuario messg ´<message_text>µ
´<message_text>µ
 NOEXPAND Termina la Expansión del Macro Noexpand
NOLIST Termina el Listado del Rendimiento Nolist
ORG Pone el Origen del Programa <label>org<expr>
<label>org<ex pr>
PAGE Inserta el número de página del listado Page
PAGESEL Genere el código de selección de la página de pagesel<label>
ROM
PROCESSOR El Tipo del Procesador
Procesador fijo processor <processsor_type>
<processsor_type>
RADIX Especifique Radix Predefinido radix <default_radix>
RES Reserve la Memoria [<label>] res <mem_units>
<mem_units>
SET Defina Variable de ensamblador
ensamblador <label> set <expr>
SPACE Inserta líneas en blanco space <expr>
ELSE Empieza el bloque alternativo de un IF Else
END Fin de bloque de programa End
ENDC Acaba un Bloque Constante Automático Endc
ENDIF Fin del bloque de condiciones
condiciones ensambladas Endif 
ENDM Fin de la definición de una Macro Endm
ENDW Fin de un bucle de While Endw
EQU Define una constante para el ensamblador
ensamblador <label>equ<expr>
<label>equ<expr>
ERROR Manda un mensaje de error error ´<text_string>µ
ERRORLEVEL Sitúa el nivel del error errorlevel 0|1|2| <+|-><message
<+|-><message
number>
EXITM Salida de una Macro Exitm
EXPAND Expande una lista de Macro expand
EXTERN Declara una etiqueta externa extern<label>[
extern<label>[ ,<label>]
FILL Llena la memoria [<label>] fill <expr>, <count>
GLOBAL Exporta una etiqueta definida global <label>[ ,<label>]
IDATA Comienza una sección de identificadores
identificadores (ID) [<name>] idata [<address>]
[<address>]
 _ _ IDLOCS
IDLOCS Especifica donde están colocados los  _ _idlocs<expr>
_idlocs<expr>
Identificadores (ID)
IF Empieza un bloque de código condicional if <expr>
IFDEF Ejecutar si el símbolo ha sido definido ifdef<label>
IFNDEF Ejecutar si el símbolo no ha sido definido ifndef<label>
#INCLUDE Incluye Ficheros fuentes adiccionales include <<include_file>>
|´<include_file>µ
LIST Opciones listado list [<list_option>,...,<list_option>]
[<list_option>,...,<list_option>]
LOCAL Declara una Macro Variable como local local <label>[,<label>]
<label>[,<label>]
MACRO Declara la Definición del Macro <label> macro [<arg>,...,<arg>]
[<arg>,...,<arg>]
 _ _ MAXRAM
MAXRAM Especifique la dirección del RAM máxima _ _maxram<expr>
MESSG Crea Mensajes definidos por el usuario messg ´<message_text>µ
´<message_text>µ
 NOEXPAND Termina la Expansión del Macro Noexpand
NOLIST Termina el Listado del Rendimiento Nolist
ORG Pone el Origen del Programa <label>org<expr>
<label>org<ex pr>
PAGE Inserta el número de página del listado Page
PAGESEL Genere el código de selección de la página de pagesel<label>
ROM
PROCESSOR El Tipo del Procesador
Procesador fijo processor <processsor_type>
<processsor_type>
RADIX Especifique Radix Predefinido radix <default_radix>
RES Reserve la Memoria [<label>] res <mem_units>
<mem_units>
SET Defina Variable de ensamblador
ensamblador <label> set <expr>
SPACE Inserta líneas en blanco space <expr>
SUBTITLE Especifique el Subtítulo del Programa
Programa subtitle ´<sub_text>µ

TITLE Especifique el Título del Programa


Programa title ´<title_text>µ
UDATA Empieza la sección de datos no inicializados [<name>] udata [<address>]
[<address>]
UDATA_OVR  Empieza la sección de datos no inicializados [<name>] udata_ovr [<address>]
superpuestos
UDATA_SHR Empieza la sección de datos no inicializados [<name>] udata_shr [<address>]
compartidos
#UNDEFINE Anula una Etiqueta de la Substitución #undefine<label>
#undefine<label>

VARIABLE Declara un símbolo como variable variable


<label>[=<expr>,...,<label>[=<
<label>[=<expr>,...,<label>[=<expr>]
expr>] ]
WHILE Realiza el bucle Mientras la Condición es while<expr>
Verdadera
Detalles de las directivas

En las siguientes líneas nos dedicaremos a la descripción detallada del directivas utilizadas
 por MPASM.

Cada definición mostrará:

 Sintaxis

 Descripción

 Ejemplo

 _  _ 
 _ BADRAM
BADRAM .±Identifica las posiciones de RAM invalidas

Sintaxis

 _ _BADRAM <el expr>[-<expr>] [, <el expr>[-<expr>]]

Descripción

Las directivas _  _ 
 _ MAXRAM
MAXRAM y _ BADRAM juntas acceden a los flag de los
registros no implementados.

 _  _ 
 _ BADRAM
BADRAM define las
las posiciones de las direcciones RAM inválidas.

 _ _ BADRAM está diseña para el uso con


co n la directiva __MAXRAM. La directiva
 __ BADRAM debe irir precedida de una directiva __ MAXRAM.

Cada <expr> debe ser al menos igualar al valor especificado por 


 __MAXRAM. Una vez se utiliza
utiliza la directiva _ _MAXRAM, se habilitan
habilitan las
direcciones de RAM y se inhabilitan posici
po siciones
ones de RAM utilizando la directiva _ 
 _BADRAM.

Ejemplo

; definición DE RAM para el PIC16F84

 __ MAXRAM
MAXRAM H¶CF¶

 __ BADRAM H¶07¶,H50¶-H¶7F¶,H87¶
Mirar también en:

 _  _ 
 _ MAXRAM
MAXRAM

Volver a la tabla de directivas


d irectivas

BANKISEL ±Genera el código que selecciona el banco de memoria RAM para el


direccionamiento Indirecto.

Sintaxis

 bankisel<etiqueta>

Descripción

Se usa para generar el archivo objeto. Esta directiva es una instrucción para
el linkador
linkador para que seleccione
seleccione el banco de memoria
memoria adecuado para acceder 
directamente a la <etiqueta> especificada. La <etiqueta> debe ser especificada sola.
 No puede realizarse ninguna operación delante de la <etiqueta>. La <etiqueta>debe
estar definida previamente.
El linkador generará el banco apropiado que selecciona el código. En esencia para
los dispositivos de 14 bits, la instrucción genera el set/c lear del bit apropiado en el
IRP de registro de STATUS. Para los dispositivos de 16-bits, MOVLB o MOVLR 
son las que lo generan. Si el usuario puede especificar la dirección indirecta
completamente sin estas instrucciones, no se genera ningún código.

Para más información, refiérase a Capítulo 4, ³Usando MPASM Create

RelocatableObjects.´

Ejemplo

movlw Var1

movwf FSR 

  bankisel Var1

...

movwf INDF

Mirar también en

PAGESEL BANKSEL

Volver a la tabla de directivas

BANKSEL.- Genera el código que selecciona el código de memoria RAM

Sintaxis

 banksel<etiqueta>

Descripción
Se utiliza para generar un archivo objeto. Esta directiva da instrucción al linkador 
 para que seleccione el banco de memoria adecuado para acceer directamente a la
etiqueta. La etiqueta debe especificarse sola. Ninguna operación puede realizarse
delante de la etiqueta. La etiqueta debe haberse definido previamente.

El linkador genera el banco apropiado que selecciona el código . En esencia para


los dispositivos de 12 bits, las instrucciones de set/clear se generan los bit
apropiados en el FSR. Para los dispositivos de 14 bits, se generan las instrucciones
de set/clearde los bit del registro de STATUS. Para los dispositivos de 16 bits, se
generan instrucciones MOVLB o MOVLR . Para dispositivos de 16 bits reforzados
se generan MOVLB. Si el dispositivo contiene sólo un banco RAM, no se genera
ninguna instrucción. Para más información ver el Capítulo 6.

Ejemplo:

  banksel Var1

movwf Var1

Mirar también en:

BANKISEL PAGESEL

Volver a la tabla de directivas

CBLOCK± Define a Block of Constants

Sintaxis

cblock [<expresión>]

<etiqueta>[:<increment>][,<etiqueta>[:<increment>]]

endc

Descripción

Defina una lista de constantes definidas (por un nombre). A cada <label> se le


asigna un valor inmediatamente superior que al anterior <label>. El propósito de
esta directiva es asignar direccines a muchas et iquetas. La lista finaliza cuando se
encuentra la directiva ENDC.
<expr> indica el valor de arranque para el primer nombre del bloque de etiquetas.
Si no se asigna en la expresión, la primera variable recibirá un valor superior al de
la variable final del CBLOCK anterior. Si el primer CBLOCK en el archivo fuente
no tiene ningún <expresión>, los valores asignados empiezan con el cero.

Si <increment> se especifica, entonces a la próxima <etiqueta> se le asigna el valor 


de <increment> superior a la anterior <etiqueta>.

Pueden darse los nombres múltiples en una línea, separada por las comas.

Ejemplo

cblock 0x20 ; a la primera variable se le asigna el valor 20

name_1, name_2 ; name_2, se le asigna el valor 21

name_3, name_4 ; name_4 se le asigna 23.

endc

cblock 0x30

TwoByteVar: 0, TwoByteHigh, TwoByteLow

Queue: QUEUE-SIZE

QueueHeadmQueueTail

Double1:2, Double2:2

endc

Mirartambiénen

ENDC

Volver a la tabla de directivas

CODE ±Empieza la sección de código de un Archivo Objeto


Sintaxis

[<etiqueta>] CODE [<dirección de ROM>]

Descripción

Se usa para generar un archivo del objeto. Declara el principio de una sección de
código del programa. Si < etiqueta> no se especifica, la sección se nombra .code.

empezando en la dirección siguiente a la dirección especificada o se asignará al


eslabón tiempo si ninguna dirección se especifica.

Ejemplo

RESET code H¶01FF¶

goto START

Mirar también en:

EXTERN GLOBAL IDATA UDATA UDATA _ ACS

UDATA _ OVR UDATA _ SHR 

Nota: Dos secciones del mismo archivo fuente no pueden tener el mismo nombre.

Volver a la tabla de directivas

 _  _ CONFIG ± Configuración de los bit de configuración de procesador


Sintaxis

 _ _config<expr> OR _ _config<addr>, <expr>


Descripción

Fija los bit de configuración del procesador con el valor descrito por la expresión

Para los dispositivos PIC18CXX, la dirección de la palabra de configuración


también debe ser especificada por <addr>. Ver en el manual de referencia de los
microcontroladores la descripción elos bit de la palabra de configuración para cada
microcontrolador.

Antes de utilizar esta directiva, debe declararse med iante la directiva LIST o la
directiva PROCESSOR. Si esta directiva se usa en la familia de los PIC17CXX, el
archivo Hexadecimal debe ponerse en formato INHX32 utilizando la directiva
LIST.

Ejemplo

LIST P=12ce519 ,n=66

INCLUDE <P12ce519.INC>

  _ CONFIG CP_OFF&WDT_ON & MCLRE _ ON &IntRC_OSC

La primera línea de directivas indica que el número de líneas que se incluirá en el


listado de una página.

La segunda línea indica al compilador el fichero que deberá incluir en la


compilación, en este caso es el archivo que incluye las declaraciones para el
microcontrolador PIC12C519.

En la tercera línea apararen los bit para la configuración del modo de


funcionamiento. Al compilar el programa estos bits se configuran por defecto y se
incluyen en el archivo hexadecimal que se genera, el cual se traslada al
microcontrolador en la fase de grabación. Se puede deducir fácilmente que con esta
línea la configuración queda de la siguiente manera: no se protege el código, se
habilita el WDT, el MCR será externo y el tipo de oscilador será interno por RC.
Mirar también en:

 _  _ IDLOCS LIST PROCESSOR 

Volver a la tabla de directivas

CONSTANT.- Declara los símbolos de las constantes

Sintaxis

constant<label>=<expr> [...,<label>=<expr>]

Descripción

Crea los símbolos para el uso de las expresiones del MPASM. No pueden ponerse a
cero las constantes una vez se ha inicializado, y la expresión deber ser totalmente
admitida en el momento de la asignación. Esta es la diferencia principal entre las
constantes (CONSTANT) y aquellas que se definen co mo variables (VARIABLE) o
aquellas creadas por la directiva SET. Por otra parte pueden usarse constantes y
variables intercambiables en las expresiones.

Ejemplo

variableRecLength=64 ; Poner por defecto

; RecLength

constantBufLength=512 ; InitBufLength

. ; RecLength may

. ; be reset later 

. ; inRecLength=128

. ;

constantMaxMem=RecLength+BufLength ;CalcMaxMem
Mirar también en:

SET VARIABLE

Volver a la tabla de directivas

DATA ± Crea Datos numéricos y de Texto

Sintaxis

[<etiqueta>]data <expr>,[,<expr>,...,<expr>]

[<etiqueta>]data ³<text_string>´[,´<text_string>´,...]

Descripción

Esta directiva inicializa una o más palabras de memoria de programa con los datos
de la expresión. Estos datos pueden ser en forma de constantes, reubicable o
etiquetas externas, o expresiones formadas por cualquiera de las anteriores.

Los datos también pueden ser un carácter ASCII, <text_string>, entre comillas
simples para caracteres o entre dobles comillas para cadenas de caracteres.

Ejemplo

data reloc_label+10 ; constante

data 1,2,ext_label ; constante, esterna

data ³hola 1,2,3´ ;cadena de caracteres

data µN¶ ; carácter sencillo

datastart_of_program ; etiquetarecolocable

Mirar También en:

DW DB DE DT IDATA
Volver a la tabla de directivas

DB ± Declara datos de un Byte

Sintaxis

[<etiqueta>] db<expr>[,<expr>,...,<expr>]

Descripción

Reserva memoria de programa para palabras de tamaño 8 bits. Las expresiones


múltiples continúan llenando los bytes de memoria de forma consecutiva hasta el
final de las expresiones.

Si el número de datos de las expresiones es impar, el último byte será el


cero.

Al generar un archivo del objeto, esta directiva también puede usarse para
declarar los valores de los datos de inicialización. Para mas información mirar la
directiva IDATA.

Ejemplo

DB t ,0x0f, µe¶, 0x0f, µs¶ , 0x0f, µt¶ , µ\n¶

Mirar También en:

DATA DW DE DT IDATA

Volver a la tabla de directivas

DE± Define datos en la EPROM

Sintaxis

[<etiqueta>] de <expr>[,<expr>,...,<expr>]

Descripción
Reservan palabras de memoria de 8 bits. Cada expresión reserva un valor de 8 bits.
Los bits superiores de la palabra de programa son cero. Carda carácter de un string
se guarda en un posición separada.

Ejemplo

org H¶2100¶

de ³Mi Programa, v1.0´ ,0

El resultado en la memoria EEPROM es el siguiente:

Mirar También en:

DATA DB DT DW

Volver a la tabla de directivas

#DEFINE ±Defina una Etiqueta de Substitución de Texto

Sintaxis

#define <name> [<string>]

Descripción

Esta directiva define una cadena de substitución de texto. Dondequiera que <string>
se encuentre en el ensamblador, se sustituirá por <string>.
Usando la directiva sin <string> genera una de finición de tipo <name> para ser 

utilizada internamente y puede ser utilizada por la directiva IFDEF.

Esta directiva emula el ANSI 'C ' standardcomo #define. Define símbolos con este
método no está disponible para ser usado por el MPLAB.

Ejemplo 1

#define banco0 bcf status,5

#define banco1 bsf status,5

Siempre que a lo largo del programa se escriba banco0, se selecciona el


 banco 0 de memoria. De igual modo, siempre que se escriba banco1, se selecciona
el banco 1 de memoria.

Ejemplo 2

#define longitud 20

#define control 0x19,7

#define posicion (X,Y,Z) (Y-(2 * Z +X))

test_label dw posición (1, longitud, 512)

  bsf control ; set bit 7 de la posición 19 RAM

Mirar También en:

IFDEF IFNDEF #UNDEFINE


Volver a la tabla de directivas

DT ± Define Tabla

Sintaxis

[<etiqueta>dt>expr> [, <expre>, «., <expre>]

Descripción

Esta genera, durante la fase de ensamblado, tantas instrucciones retlw como


caracteres u octetos la acompañen.

Ejemplo

dt ³mensaje´,0x10,.15

Esta directiva genera las instrucciones:

rtlw 0x6D (m en ASCII)

rtlw 0x65 (e en ASCII)

rtlw 0x6E (n en ASCII)

rtlw 0x73 (s en ASCII)

rtlw 0x61 (a en ASCII)

rtlw 0x6A (j en ASCII)

rtlw 0x65 (e en ASCII)

rtlw 0x10

rtlw 0xf (15 en decimal)

Mirar también en

DATA DB DE DW

Volver a la tabla de directivas


DW ± Define datos de un Word

Sintaxis

[<etiqueta>dw<expr> [, <expre>, «., <expre>]

Descripción

Reserva memoria de programa para los datos, inicializando estas posiciones con
valores específicos. Se guardan los valores en po siciones de memoria sucesivas y se
incrementa en uno el contador. Las expresiones pueden ser literales y se guardan
como se ha descrito en la directiva DATA.

Al generar el archivo objeto, esta directiva también puede usarse para declarar los
valores de los datos inicializados. Mirar la directiva IDATA para más información.

Ejemplo

dw 39, ³diagnostic 39´, (d_list*2+d_offset)

dw diagbase-1

Mirar también en

DATA DB IDATA

Volver a la tabla de directivas

ELSE ± Empieza el bloque alternativo de un IF

Sintaxis

else

Descripción
Usada junto con la directiva IF para proporcionar un camino alternativo de ensamblado si
al evaluar la condición es falso. Else puede usarse dentro de un bloque de programa o en
una macro.

Ejemplo

SPEED macro rate

if rate < 50

dw lento

else

dw rapido

endif 

endm

Mirar también en:

IF ENDIF

Volver a la tabla de directivas

END ± Fin de bloque de Programa

Sintaxis

End

Descripción

Esta directiva indica el final del programa y es obligatoria. Si se detecta el fin de fichero y
no se ha encontrado la directiva END se produce error. Todas las líneas po steriores a la
línea en la que se encuentra esta directiva, se ignoran y no se ensamblan.

Ejemplo

Inicio bsf STATUS,RP0 ; Comienza el programa ejecutable


clrf PORTB

  bcf STATUS,RP0

movlw b¶00000010¶

movwf PORTB

end

Volver a la tabla de directivas

ENDC ± Termina un bloque automático de constantes

Sintaxis

endc

Descripción

ENDC se escribe al final de una lista de constantes CBLOCK. Debe escribirse para indicar 
el fin de la lista.

Ejemplo

cblock 0x20 ; a la primera variable se le asigna el valor 20

name_1, name_2 ; name_2, se le asigna el valor 21

name_3, name_4 ; name_4 se le asigna 23.

endc

Mirar también en:

CBLOCK 

Volver a la tabla de directivas


Volver a la tabla de directivas

ENDIF ± Fin de bloque de condiciones de ensamblado

Sintaxis

endif 

Descripción

Esta directiva marca el extremo de un bloque condicional de ensamblado. ENDIF


 puede usarse dentro de un bloque de programa o en una macro.

Mirar también en:

IF ELSE

Volver a la tabla de directivas

ENDM ± Fin de la definición de una macro

Sintaxis

endm

Descripción

Termina una definición del macro que comienza con la directiva MACRO.

Ejemplo

Led1 macro ;Enciende el LED1 del conectado al PortB

  bsf STATUS,RP0

clrf PORTB

  bcf STATUS,RP0

movlw b¶00000010¶
movwf PORTB

endm

Mirar también en

MACRO EXITM

Volver a la tabla de directivas

ENDW .- Fin de bucle de espera

Sintaxis

endw

Descripción

ENDW Finaliza un tiempo de espera. Cuando se cumple la condición especificada


 por la directiva WHILE , el código fuente entre la directiva WHILE y la directiva
ENDW se extenderá repetidamente en la fuente del ensamblador y el código fuente.
Esta directiva puede usarte dentro de un bloque de programa o en una macro.

Ejemplo:

Véase el ejemplo de WHILE

Mirar también en

WHILE

Volver a la tabla de directivas

EQU ± Define una constante para el ensamblador

Sintaxis

<etiqueta> equ <espr>


Descripción

Esta directiva permite asignar el valor de <expr> a un identificador <etiqueta>. El


resultado puede ser el resultado de una expresión compuesta por otros
identificadores y tan compleja como se desee.

Generalmente, el identificador es un nombre que describe el valor de manera más


significativa para el programador. Suele utilizarse para definir constantes y
direcciones de memoria. Así, es más fácil recordar SEG_POR_HORA que recordar 
el valor 3600 o en el caso de una dirección de memoria TRISA que 0x05.

Ejemplo

cuatro EQU 4 ; asigna el valor del número 4 a la etiqueta 4

Mirar también en:

SET

Volver a la tabla de directivas

ERROR ± Emite un mensaje de Error

Sintaxis

error ³<text_string>´

Descripción

<text_string> imprime en un formato idéntico a cualquier error de MPASM

el mensaje. <text_string> puede tener un total de ochenta caracteres.

Ejemplo

error_checking macro arg1

if arg1 >= 55 ; Si el argumento está fuera de rango

error ³error_checking-01 el argumento está fuera de rango´


endif 

Mirar también en:

MESSG

Volver a la tabla de directivas

ERRORLEVEL .- Sitúa el nivel de error

Sintaxis

errorlevel {0|1|2|+<msgnum>|-<msgnum>} [, ...]

Descripción

Tipos de mensajes que están impreso en el archivo listable y el archivo de erro res.

Se pone Afecta
0 mensajes, advertencias, e impresión de errores
1 Se imprimen advertencias y errores
2 Imprime errores
-<msgnum> Inhibe impresión del mensaje <msgnum>
+<msgnum> Habilita impresión del mensaje <msgnum>

Los valores para <msgnum> están en el Apéndice C. Los mensajes de Error no


 pueden ser desactivado. La opción de 0, 1, o 2 anula el mensaje individual que
desactiva o habilitando.

Ejemplo:

errorlevel 1, -202

Mirar también en:

LIST

Volver a la tabla de directivas

EXITM ± Salida de una Macro


Sintaxis

exitm

Descripción

La fuerza el retorno inmediato de la expansión de la macro durante el ensamblado.


El efecto es igual que encontrar una directiva ENDM.

Ejemplo

test macro filereg

if filereg == 1 ; check for valid file

exitm

else

error "bad file assignment"

endif 

endm

Mirar también en:

MACRO ENDM

Volver a la tabla de directivas

EXPAND ± Expande una lista de Macro

Sintaxis

expand

Descripción

Extienda todas las macros en el archivo de listado. Esta directiva es aproximadamente


equivalente al comando de la opción de línea /m MPASM, pero puede desactivarse por la
acción de un NOEXPAND.
Mirar también en:

MACRO NOEXPAND

Volver a la tabla de directivas

EXTERN±Declare una Etiqueta Definida como Externa

Sintaxis

elextern<la etiqueta> [, <la etiqueta>...]

Descripción

Se utiliza para generar un archivo del objeto. Declara nombres del símbolo que pueden ser 
usado en el módulo actual pero se define como global en un módulo diferente.

La declaración de EXTERN debe ser incluida antes de <etiqueta>. Debe


expecificarse al menos una etiqueta en la misma línea. Si <etiqueta> se define en el
el módulo actual, MPASM generará un error de la etiqueta doble.

Ejemplo

externFunction

...

callFunction

Volver a la tabla de directivas

FILL.- Llena la memoria

Sintaxis

[<label>] fill<expr>,<count>

Descripción
Genera <count> de sucesos de palabras de programa o byte (en los dispositivos
PIC18CXX ), <expr>. Se limita por paréntesis, <expr> puede ser una instrucción en
ensamblador.

Ejemplo:

fill 0x1009, 5 ; Llenar con una constante

fill (GOTO RESET_VECTOR), NEXT_BLOCK-$

Mirar También en:

DW ORG DATA

Volver a la tabla de directivas

GLOBAL±Exportación una Etiqueta

Sintaxis

global< etiqueta> [, <etiqueta>...]

Descripción

Para el uso al generar un archivo del objeto. Declara nombres del símbolo que son

definido en el módulo actual y debe estar disponible en otros módulos.

La declaración GLOBAL debe anteceder a una <etiqueta> . Por lo menos una


etiqueta

debe especificarse en la línea.

udata

Var1 res 1

Var2 res 1

global Var1, Var2

code
AddThree

globalAddThree

addlw 3

return

Volver a la tabla de directivas

IDATA± Comienza una sección de identificadores en el archivo objeto

Sintaxis

[<label>] idata [<RAM address>]

Descripción

Para generar un archivo objeto. Declara el inicio de una sección de inicicaliazción de datos.
Si <label> no se especifica, la sección se nombra .idata. La primera dirección es la que se
especifica, sino se indica, se asignará en el momento de linkar. Ningún código puede
generarse en este segmento del programa.

El montador generará una entrada de la tabla parecer-despierta para cada byte especificado
en la sección idata . El usuario debe linkar entonces o debe incluir el código de la
inicialización apropiado.

Ver en el Capítulo 9 los ejemplos de códigos de la inicialización para las varias familias de
PICmicro.

 Note que esta directiva no está disponible para los dispositivos de 12-bits.

Pueden usarse las directivas RES, DB y DW para reservar el espacio para las variables.

RES generará un valor inicial de cero. DB inicializará los bytes sucesivos de RAM.
DW inicializará bytes sucesivos de RAM, con el siguiente orden, en el byte-bajo /
 byte-alto.

Para más información, refiérase a Capítulo 6.

Ejemplo:

idata
LimitLdw 0

LimitHdw D¶300¶

Gain dw D¶5¶

Flags db 0

String db µHi there!¶

Mirar También en:

EXTERN GLOBAL TEXT UDATA UDATA _ ACS UDATA _ OVR 


UDATA _ SHR 

Volver a la tabla de directivas

 __ IDLOCS- El Procesador fija las posiciones de ID


Sintaxis

 _ _idlocs<expr> or _ _idlocs<expr1>, <expr2>

Descripción

Para los PIC12CXX, PIC14000, y PIC16CXX, _ _idlocs pone los cuatro localizadores ID
en hexadecimal valorando la <expr>. Para los dispositivos PIC18CXX, _ idlocs pone dos
 bytes en el dispositivo ID < expr1> el valor del hexadecimal de <expr2>. Esta directiva no
es válido para la familia de PIC17CXX.

Por ejemplo, si <expr> evalúa 1AF, primero (la dirección más baja) del localizador ID es
el cero, el segundo es el uno, el tercero es el diez, y el cuarto es quince.

Antes de usar esta directiva, debe declararse el procesador a través de la

línea de comandos con la directiva LIST, o la directiva PROCESSOR.

Ejemplo

 _ _idlocs H¶1234¶

Mirar también en:


LIST PROCESSOR   _  _ CONFIG

Volver a la tabla de directivas

IF ± Comienza un bloque de código condicional

Sintaxis

if <expr>

Descripción

Empiece ejecución de un bloque condicional de ensamblado. Si <expr> es


verdadera,

el código inmediato al IF se ensamblara. En caso contrario, las instrucciones


siguiente se saltan hata encontrar una directiva ELSE o una directiva ENDIF.

La evaluación de una expresión que sea cero se considera desde el punto de vista de
la lógica FALSA. La evaluación de una expresión que de cualquier valor distinto de
dero se considera como VERDADERA. las directivas IF (SI) y WHILE
(MIENTRAS) operan con el valor lógico de una expresión. Un expresión verdadera
(TRUE) garantiza devolver un valor distinto de cero, y falsa (FALSE) el valor cero.

Ejemplo

if version == 100 ; check current version

movlw 0x0a

movwf io_1

else

movlw 0x01a

movwf io_2

endif 

Mirar también en
ELSE ENDIF

Volver a la tabla de directivas

IFDEF ± Ejecuta si el símbolo ha sido definido

Sintaxis

ifdef ³<label>´

Descripción

Si <label> se ha definido previamente, normalmente utilizando la directiva


#DEFINE o poniendo el valor en el comando de línea del MPLAB, se toma el
camino condicional. El ensamblado continuará hasta encontrar un ELSE
emparejado o una directiva ENDIF.

Ejemplo

; *******************************

; doble microcontrolador 

;********************************

#DEFINE PIC674

ifdef  PIC674

LIST p = 12ce674

INCLUDE <P12ce674.INC>

else

LIST p=12ce519

INCLUDE <P12ce519.INC>

endif 
ifdef  PIC674 ;Si está declarada PIC674, el reloj será externo

  __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF & EXTER_COSC_NOCLKOUT &


HSOSC

else

  __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF &IntRC_OSC

endif 

Si se pine un ³;´ delante de #DEFINE PIC674, se compila para el microcontrolador 


PIC12CE519, si se quita el ³;´ lo hace para el PIC674. Si el microcontrolador que se
usa es el 674, el oscilador que se utiliza es el externo y sin habilitar la salida de reloj
(CLKOUT) mientras que si se utiliza el 519, el oscilador será interno por RC. En la
fase de ensamblado se comprobará si está declarada la variable. Si es cierta, se
ejecutará la primera línea de configuración y si no lo es, se ejecutará la que hay
después de ELSE.

Mirar también en:

#DEFINE ELSE ENDIF IFNDEF #UNDEFINE

Volver a la tabla de directivas

IFNDEF ± Ejecuta si el símbolo no ha sido definido

Sintaxis

ifndef ³<label>´

Descripción

Si <label> no se ha definido previamente, o se ha utilizando la directiva


#UNDEFINE , entonces el código que hay a continuación de la directiva será
ensamblado. Se seguirá ensamblando hasta encontrar una directiva ELSE
emparejada o encontrar una directiva ENDIF

Ejemplo

; *******************************
; doble microcontrolador 

;********************************

#DEFINE PIC674

ifdef PIC674

LIST p = 12ce674

INCLUDE <P12ce674.INC>

else

LIST p=12ce519

INCLUDE <P12ce519.INC>

endif 

ifdef PIC674 ;Si está declarada PIC674, el reloj será externo

  __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF & EXTER_COSC_NOCLKOUT &


HSOSC

else

  __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF &IntRC_OSC

endif 

Si se pine un ³;´ delante de #DEFINE PIC674, se compila para el microcontrolador 


PIC12CE519, si se quita el ³;´ lo hace para el PIC674. Si el microcontrolador que se usa es
el 674, el oscilador que se utiliza es el externo y sin habilitar la salida de reloj (CLKOUT)
mientras que si se utiliza el 519, el oscilador será interno por RC. En la fase de ensamblado
se comprobará si está declarada la variable. Si es cierta, se ejecutará la primera línea de
configuración y si no lo es, se ejecutará la que hay después de ELSE.

Mirar también en:


#DEFINE ELSE ENDIF IFNDEF #UNDEFINE

Volver a la tabla de directivas

INCLUDE ± Incluye Fichero fuentes adicionales

Sintaxis

include<<include_file>>

include ³<include_file>´

Descripción

El archivo especificado se lee en como código fuente. El efecto es igual que si el

texto entero del archivo include se pusiera aquí. Al final-del-archivo, el código


fuente al ensambla reasumirá del archivo de la fuente original. Se permiten seis
niveles de anidamiento. El <include_file> puede escribirse entre comillas o entre
los símbolos de mayor que y menor que (<>). Si se especifica totalmente el camino
del fichero include, sólo ese camino se investigará. Si no se indica camino, el orden
de la búsqueda es: el directorio activo actual, el directorio de archivo de fuente, el
directorio ejecutable de MPASM.

Ejemplo

include<p16F84.inc> ;define el archivo donde están definidos todos los

; registros del PIC16F84

include ³p16F84.inc´ ; también se puede definir de esta forma

include ³c:\sys\sysdefs.inc´ ; define system con sucamino

include<regs.h> ; define regs.h

Volver a la tabla de directivas

LIST ± Opciones de Listado


Sintaxis:

list [<list_option>, ..., <list_option>]

Descripción

Se admite solo en una línea , la directiva LIST tiene el efecto sobre el listado de
salida. Por otra parte, uno de lo siguiente opciones pueden proporcionarse
controlando la estructura del proceso de ensamblado o el archivo listando:

Opción Por defecto Descripción


  b=nnn 8 Espacios de tabulación
c=nnn 132 Fija la anchura de las columnas
f=<format> INHX8M Fija el fichero hexadecimal de salida .<format> puede ser 
INHX32, INHX8M, o INHX8S.
Free FIXED Usa el analizador de formato libre. Suministra la
compatibilidad hacia atrás
Fixed FIXED Usa el analizador de formato fijo
mm=on/off On Imprime el mapa de memoria en un fichero tipo listado.
n=nnn 60 Fija las líneas por página.
P=<tipe> Ningún tipo Fija el tipo de procesador; por ejemplo , PIC16F84
r=<radix> hex Pone por defecto el RADIX: hex, dec, oct
st=ON/OFF On Imprime la tabla de símbolos en un fichero tipo listado
t=ON/OFF Off Corta las líneas de listado (oculta )
w=0|1|2 0 Fija el nivel de mensaje. Ver ERRORLEVEL (nivel de
error)
x=ON/OFF On Activa o desactiva la expansión de macro

 Nota: Todas las opciones LIST están de finidas como número decimales

Ejemplo:

list p=17c42, f=INHX32, r=DEC

Mirar también en:

NOTLIS PROCESSOR  RADIX ERRORLAVEL

EXPAND  NOEXPAND

Volver a la tabla de directivas


LOCAL± Declara la variable de la Macro como Local

Sintaxis

Local <label>, <label>

Descripción

Declara que el elemento de datos especificado se considera en el contexto local de la


macro. <label> puede ser idéntico a otra etiqueta declarada fuera de la definición de la
macro; no habrá ningún conflicto entre las dos. Si la macro es llamada recursivamente, cada
llamada tendrá su propia copia local.

Ejemplo

<maincodesegment>

len equ 10 ; versión global

size equ 20 ; Comprobar que una variable local

; puede crearse ahora y modificarse

test macro size ;

local len, label ; local len y label

len set size ; modifica local len

label res len ; reserva buffer 

len set len-20 ;

endm ; fin de la macro

Mirar también en

MACRO ENDM

Volver a la tabla de directivas


MACRO - Declara la definición de Macro

Sintaxis

<label> macro [<arg>, ..., <arg>]

Descripción

Una macro define un conjunto de instrucciones alas que se asigna un nombre.


Posteriormente, el programa fuente del usuario puede incluir el nombre de una
macro y todas las instrucciones que la componen quedan insertadas en el momento
de realizar el ensamblado, formando parte del programa.

Ejemplo:

La estructura de la macro es la siguiente:

  Nombre_macro MACRO

Instrucción_1

Instrucción_2

«««««..

«««««..

Instrucción_n

ENDM

Donde:

 Nombre_macro : indica el nombre de la macro que posteriormente se empleará en el


 programa fuente para incluir todas las instrucciones que estén definidas bajo este
nombre. Las directivas MACRO y ENDMACRO forman el cuerpo dentro del cual
están incluidas todas las instrucciones deseadas.
Cada vez que se emplea Nombre_macro en el programa fuente, implica insertar 
todas las instrucciones que conlleve dicho nombre en el programa

Mirar también en

ENDM LOCAL IF ELSE ENDIF EXITM

Volver a la tabla de directivas

 _  _ MAXRAM ± Define la Posición de RAM mayor


Sintaxis

 _ _MAXRAM <expr>

Descripción

Las directivas _ _MAXRAM y _ _BADRAM dan juntas accesos a los flag de registro no
implementado.

 _ _MAXRAM define el valor máximo absoluto válido de la memoria RAM e


inicializa las direcciones del mapa de memoria a utilizar, el valor debe ser siempre
superior a la máxima dirección del banco 0 y menor de 1000h.

Este directiva esta diseñada para usarla junto con la directiva_ _ BADRAM para
 proteger ciertas direcciones de memoria.

 _ _MAXRAM puede usarse más de una vez en un archivo de la fuente. Cada uso

redefine la dirección de memoria, se debe de tener en cuenta que cada vez que esto
ocurre, se borra el contenido de la memoria.

Ejemplo

; definición DE RAM para el PIC16F84

 __ MAXRAM H¶CF¶
 __ BADRAM H¶07¶,H50¶-H¶7F¶,H87¶

movwf H¶07¶ ; Genera un warning de dirección de RAM no valida


movwf H¶87¶ ; Genera un warning de dirección de RAM no valida

Mirar también en

 _  _ BADRAM
Volver a la tabla de directivas
MESSG± Crea mensajes definidos por el usuario

Sintaxis

Messg ³<message_text>´

Descripción

Genera un mensaje informativo a ser imprimido el archivo listable. El texto del mensaje
 puede tener hasta 80 carácteres. Emitiendo una directiva MESSG no pone el código de
retorno de error.

Ejemplo

mssg_macro macro

messg " mssg_macro-001 llamada sin el argumento "

endm

Mirar también en

ERROR 

Volver a la tabla de directivas

NOEXPAND± Termina la expansión de la Macro

Sintaxis

noexpand

Descripción

Desactiva la expansión de la macro en el archivo de listado.

Mirar también en

EXPAND

Volver a la tabla de directivas


NOLIST ± Desactiva el Listado de salida

Sintaxis

nolist

Descripción

Desactiva el archivo del listado de salida

Mirar también en

LIST

Volver a la tabla de directivas

ORG ±Origen de las Instrucciones del programa

Sintaxis

[<label>] org<expr>

Descripción

El origen del programa comienza la dirección indicada en la <expr> de la directiva.


Si se especifica una <etiqueta> se le da el valor de la <expr>. Si no hay ningún
ORG especificado, la generación del código comienza en la dirección cero.

Ejemplo

int_1 org 0x20

; Vector 20 va aquí

int_2 org int_1+0x10

; Vector 20 va aquí
Mirar también en

RES FILL

Volver a la tabla de directivas

PAGE ± Inserta el número de Página en el listado

Sintaxis:

 page

Descripción

Inserta el número de página en el listado del programa

Mirar también en:

LIST TITLE SUBTITLE

Volver a la tabla de directivas

PAGESEL - Genera Página que Selecciona el Código

Sintaxis:

Pagesel <label>

Descripción
Para el uso general de un archivo objeto. Al linkar una instrucción para generar la
 página que selecciona el código para poner los bits de la página en la página que
contiene las etiquetas designadas .Una única <et iqueta> debe especificarse. Ninguna
operadión puede realizarse delante de la < etiqueta>. La <etiqueta> debe haberse
definido previamente. El linkador generará la página apropiada que selecciona el
código. Para los micros de 12-bits, las instrucciones set/clear de pedazo apropiadas
en el ESTADO registran el estado generado. Para los dispositivos de 14-bits y los
de 16-bits, MOVLW y MOVWF generarán las instrucciones para modificar el
PCLATH. Si el dispositivo contiene sólo una pág ina de memoria del programa,
ningún código se generará.

Para los dispositivos de PIC18CXX, este orden no hará nada.Para más información,
refiérase a Capítulo 6.

Ejemplo

Pagesel GotoDest

goto GotoDest

....

  pagesel CallDest

call CallDest

Mirar también en

BANKSEL BANKISEL

Volver a la tabla de directivas

PROCESSOR ± Fija el tipo de procesador

Sintaxis:

 processor<processor_type>

Descripción

Fija el tipo de microcontrolador utilizado <processor_type>.

Ejemplo
 processor 16F84

Mirar también en:

LIST

Volver a la tabla de directivas

RADIX ± Especifica el rango (RADIX) por defecto

Sintaxis:

radix<default_radix>

Descripción

Define el rango para las expresiones de los datos. El radix predefinido por defecto es el
hexadecimal.

Los valores del radix son: el hexadecimal (hex), decimal (dec), u octal (oct).

Mirar también en:

radix dec

Mirar también en:

LIST

Volver a la tabla de directivas

RES ± Reserva memoria

Sintaxis:

[<lavel>] res <mem_units>


Descripción

Al indicador de la posición de memoria se le incrementa desde la posición actua l las


unidades que especifica<mem_units>. En el código no reubicable, <la etiqueta>puede ser 
una dirección de memoria de programa. En el código reubicable (usando MPLINK),
también pueden usarse RES para reservar el almacenamiento de los datos.

Ejemplo:

Buffer RES 64 ;reserva 64 palabras para almacenar 

Mirar también en:

ORG FILL

Volver a la tabla de directivas

SET ± Define Variable en Ensamblador

Sintaxis:

<etiqueta>set<expresión>

Descripción

<etiqueta> asume el valor de la expresión de MPASM válida especificada por 

<expresión>.La directiva SET es funcionalmente equ ivalente a la directiva EQU

sólo que los valores SET puede ser alterado como por otra directiva SET.

Ejemplo:

area set 0

ancho set 0x12

largo set 0x14

area set largo * ancho

Volver a la tabla de directivas


SUBTITLE ± Especifica el subtítulo del programa

Sintaxis:

subtitle ³<sub_text>´

Descripción

<sub_text> es una cadena de caracteres ASCII imprimibles que se indica entre dobles
comillas. Debe tener 60 caracteres o menos. Esta directiva establece el texto a ser usado en
la segunda línea de cada página en el archivo de impresión.

Ejemplo:

subtitle ³sección de diagnostico´

Mirar también en:

TITLE

Volver a la tabla de directivas

SPACE ± Inserta líneas en blanco

Sintaxis:

space <expr>

Descripción

Inserción el número de líneas en blanco en el archivo de listado indicadas en <expr>.

Ejemplo

space 3 ;Inserta tres líneas en blanco

Mirar también en:

LIST
Volver a la tabla de directivas

TITLE ± Especifica el título del programa

Sintaxis:

title ³<title_text>´

Descripción

<title_text> es una cadena de caracteres ASCII imprimibles que se indica entre dobles
comillas. Debe tener 60 caracteres o menos. Esta directiva establece el texto a ser usado en
la línea inicial de cada página en el archivo de impresión.

Ejemplo:

title ³código de operación, rev 5.0´

Mirar también en:

LIST SUBTITLE

Volver a la tabla de directivas

UDATA ± Empieza la sección de datos no inicializados en el archivo objeto

Sintaxis

[<label>] udata [<RAM address>]

Descripción

Para el uso al generar del archivo objeto. Declara el inicio de una sección de datos a
inicializar . Si <label> no se especifica, la sección se nombra .udata.

La primera dirección se indica con a la dirección especificada o se asignará a


continuación de la dirección especifica. No se puede generar ningún código en este
segmento.

La directiva RES debe utilizarse para reservar espacio para los datos.
 Nota.- Dos secciones en el mismo archivo fuente no pueden tener el mismo nombre.

Para más información, ver el Capítulo 6.

Ejemplo:

udata

Var1 res 1

Double res 2

Mirar también en:

TEXT IDATA UDATA _ OVR UDATA _ SHR  EXTERN


GLOBAL

Volver a la tabla de directivas

UDATA _ OVR ± Comienza la sección de datos no inicializados superpuestos

Sintaxis

[<label>] udata_ovr [<RAM address>]

Descripción

Para el uso al generar un archivo del objeto. Declara el principio de una sección de
los datos de inicialización superpuestos. Si no se especifica <label> , la sección es
nombrada .udata_ovr . La dirección de arranque se indica al principio o se asignará
en momento de linkar si no se especifica ninguna dirección. El espacio dec larado
 por esta sección es overlayed para todas las otras secciones del udata_ovr del
mismo nombre. Es una manera ideal de declarar las variables temporales ya que
 permite que las variables múltiples sean declaradas en la misma posición de de
memoria. Ningún código puede genere en este segmento. La directiva RES debe
usarse para reservar el espacio para los datos.

Ejemplo

Tempsudata_ovr 

Temp1 res 1
Temp2 res 1

Temp3 res 1

Tempsudata_ovr 

LongTemp1 res 2 ; ésta será una variable en la

;misma posición que Temp1 y Temp2

LongTemp2 res 2 ; ésta será una variable en la posición

;que Temp3

Mirar también en:

TEXT IDATA UDATA EXTERN GLOBAL


UDATA _ SHR 

Volver a la tabla de directivas

UDATA _ SHR ± Empieza la sección de datos no inicializados compartidos

Sintaxis

[<label>] udata_shr [<RAM address>]

Descripción

Para el uso al generar un archivo del objeto. Declara el inicio de una sección de

los datos de uninitialized compartido. Si <la etiqueta> no se especifica, la sección es


nombrada .udata_shr. La dirección de arranque se inicializa la dirección si no se asignará
en momento del linkado cuando no se indique ninguna dirección. Esta directiva se usa
 para declarar variables que se asignan en RAM que es compartido por todos los bancos del
RAM (es decir los unbanked RAM). Ningún código puede generarse en este segmento. La
directiva RES debe usarse para reservar el espacio para los datos.

Ejemplo

Tempsudata_shr 
Temp1 res 1

Temp2 res 1

Temp3 res 1

Mirar también en

EXTERN GLOBAL IDATA UDATA UDATA _ ACS


UDATA _ OVR TEXT

Volver a la tabla de directivas

#UNDEFINE ± Anula etiqueta de sustitución

Sintaxis

#undefine<label>

Descripción

<la etiqueta> es previamente un identificador definido con la directiva #DEFINE . Esta


debe ser una etiqueta valida para el MPASM. El identificador indicado es borrado de la
tabla de símbolos.

Ejemplo

#define length 20

#undefinelength

Mirar también en

#DEFINE IFDEF INCLUDE IFNDEF

Volver a la tabla de directivas


VARIABLE - Declara un símbolo como variable

Sintaxis

variable <label>[=<expr>][,<label>[=<expr>]...]

Descripción

Crea los símbolos para el uso en las expresiones de MPASM. Las variables y
constantes

 puede intercambiarse en las expresiones.

La directiva VARIABLE crea un símbolo que es funcionalmente equivalente a los


creados por la Ddirectiva SET. La diferencia es que la directiva VARIABLE no
requiere que los símbolos se inicialicen cuando se declaran.

 Note que no se pueden actualizar los valores de las variables dentro de un


operando. Se debe

utilizar líneas separadas para asignar variables, incrementos y decrementos.

Ejemplo

Por favor mirar el ejemplo de la directiva CONSTANT

Mirar también en

CONSTANT SET

Volver a la tabla de directivas

WHILE ± Realiza el bucle mientras la condición es verdadera

Sintaxis

while <expr>

:
:

endw

Descripción

Las líneas de comandos comprendidas entre WHILE y los ENDW se ensamblan


mientras el valor de la <expr> sea TRUE (verdadera). Una expresión que al ser 
valuada da cero, se considera como FALSE (falsa). Una expresión que al evaluarla
es distinta de cero, se considera como TRUE (verdadera). Una expresión se
garantiza como TRUE (verdadera) cuando devuelve un valor distinto de cero, y
FALSE (falsa) cuando el valor es cero, Un bucle WHILE puede contener un
máximo de 100 líneas y repetirlo un máximo de 256 veces.

Ejemplo

test_mac macro count

variable i

i=0

while i < count

movlw i

i += 1

endw

endm

start

test_mac 5

end

Mirar también en

ENDW IF
Operadores Aritméticos y de Procedencia

Operador Ejemplo
$ Retorna contador de programa goto $+3
( Paréntesis izquierdo 1 +(d*4)
) Paréntesis derecho (longitud+1) * 256
! Operador NOT (completo lógico) If ! (a = = b)
- Negación (2ºs complemento) -1 * longitud
~ Complemento flags = ~flags
high Retorna byte alto movlw high CTR_Tabla
low Retorna byte bajo movlw low CTR_Tabla
* Multiplica a=b*c
/ División a= b/c
% Módulo entri_len = tot_len % 16
+ Suma tot_len = entru_len * 8 +1
- Resta entry_len = (tot 1)/8
<< Desplazamiento a la izquierda flags<<flags<< 1
>> Desplazamiento a la derecha flags>>flags>> 1
>= Mayor o igual If entry_idx>= num_entries
> Mayor que If entry_idx>num_entries
< Menor que If entry_idx<num_entries
<= Menor o igual If entry_idx<= num_entries
== Igual a If entry_idx = num_entries
!= No igual a If entry_idx != num_entries
& Bitwise AND flags = flags & ERROR_BIT
^ Bitwise Or-exclusiva flags = flags ^ ERROR_BIT
| Bitwise Or flags = flags | ERROR_BIT
&& Función AND lógica If (len = = 511) && (b = = c)
|| Función lógica OR If (len = = 511) || (b = = c)
= Hacer igual a entry_index = 0

También podría gustarte