PE03257A.gif (4096 bytes)

Microcontroladores
Principal ] Arriba ]

 

Principal

Principal ] Arquitectura ] Instrucciones ] Interrupciones ] Registros ] Patillaje ] [ Directivas MPLAB ] Aplicaciones ] MPLAB ]

DIRECTIVAS DEL MPLAB

Directiva

Descripción

Sintaxis

_ _BADRAM

Especifique las posiciones del RAM inválidas _

_badram <expr>

BANKISEL

Genera el código que selecciona   el banco de memoria de memoria  RAM para direccionamiento indirecto

bankisel <label>

BANKSEL

Genera el código que selecciona el código de memoria RAM

banksel <label>

CBLOCK

Defina un Bloque de Constantes

cblock [<expr>]

CODE

Empieza la sección del código ejecutable

[<name>] code [<address>]

_ _CONFIG

Especifica los bits de configuración

_ _config <expr>

CONSTANT

Declara los Símbolos de las Constantes

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

DATA

Crea Datos numéricos y  de Texto

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

[<label>] data “<text_string>”[,”<text_string>”,...]

DB

Declare Datos de un Byte

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

[<label>] db “<text_string>”[,”<text_string>”,...]

DE

Defina los Datos de EEPROM

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

[<label>] de “<text_string>”[,”<text_string>”,...]

#DEFINE

Defina una Etiqueta de Substitución de Texto

define <name> [<value>]

define <name> [<arg>,...,<arg>] <value>

DT

Defina Tabla

[<label>] dt <expr>[,<expr>,...,<expr>]

[<label>] dt “<text_string>”[,”<text_string>”,...]

DW

Declare Datos de un Word

[<label>] dw <expr>[,<expr>,...,<expr>]

[<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 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

<label> equ <expr>

ERROR

Manda un mensaje de error

error “<text_string>”

ERRORLEVEL

Sitúa el nivel del error

errorlevel 0|1|2| <+|-><message number>

EXITM

Salida de una  Macro

Exitm

EXPAND

Expande una lista de Macro

expand

EXTERN

Declara una etiqueta externa

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 (ID)

[<name>] idata [<address>]

_ _IDLOCS

Especifica donde están colocados los Identificadores (ID)

_ _idlocs <expr>

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>]

LOCAL

Declara una Macro Variable como local

local <label>[,<label>]

MACRO

Declara la Definición del Macro

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

_ _MAXRAM

Especifique la dirección del RAM máxima

_ _maxram <expr>

MESSG

Crea  Mensajes definidos por el usuario

messg “<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>

PAGE

Inserta el número de página del listado

Page

PAGESEL

Genere el código de selección de la página de ROM

pagesel <label>

PROCESSOR

El Tipo del Procesador fijo

processor <processsor_type>

RADIX

Especifique Radix Predefinido

radix <default_radix>

RES

Reserve la Memoria

[<label>] res <mem_units>

SET

Defina Variable de ensamblador

<label> set <expr>

SPACE

Inserta líneas en blanco

space <expr>

SUBTITLE

Especifique el Subtítulo del Programa

subtitle “<sub_text>”

TITLE

Especifique el Título del Programa

title “<title_text>”

UDATA

Empieza la sección de datos no inicializados

[<name>] udata [<address>]

UDATA_OVR

Empieza la sección de datos no inicializados superpuestos

[<name>] udata_ovr [<address>]

UDATA_SHR

Empieza la sección de datos no inicializados compartidos

[<name>] udata_shr [<address>]

#UNDEFINE

Anula una Etiqueta de la Substitución

#undefine <label>

VARIABLE

Declara un símbolo como variable

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

WHILE

Realiza el bucle Mientras la Condición es Verdadera

while <expr>

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  .–Identifica las posiciones de RAM invalidas 

Sintaxis 

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

Descripción 

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

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

 _ _ BADRAM está diseña para el uso con la directiva __MAXRAM. La directiva __ BADRAM debe ir precedida de una directiva    __ MAXRAM.

            Cada < expr> debe ser al menos igualar al valor especificado por __MAXRAM.  Una vez se utiliza la directiva _ _MAXRAM, se habilitan las direcciones de RAM y se inhabilitan posiciones de RAM utilizando la directiva _ _BADRAM. 

 

Ejemplo 

; definición DE RAM para el PIC16F84

__MAXRAM H’CF’

__ BADRAM H’07’,H50’-H’7F’,H87’

 

 

Mirar también en:

_ _MAXRAM  

Volver a la tabla de directivas

 

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  para que seleccione el banco de 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/clear 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 

Relocatable Objects.”

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/clear de 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 etiquetas. 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

QueueHeadm QueueTail

Double1:2, Double2:2

endc

 

Mirar también en

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 e los bit de la palabra de configuración para cada microcontrolador.

Antes de utilizar esta directiva, debe declararse mediante 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 como variables (VARIABLE) o aquellas creadas por la directiva SET. Por otra parte pueden usarse constantes y variables intercambiables en las expresiones.

Ejemplo

variable RecLength=64                                   ; Poner por defecto

; RecLength

constant BufLength=512                                 ; Init BufLength

.                                                          ; RecLength may

.                                                          ; be reset later

.                                                          ; in RecLength=128

.                                                          ;

constant MaxMem=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

data start_of_program ; etiqueta recolocable

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 definición de tipo <name> para ser

utilizada internamente y puede ser utilizada por la directiva IFDEF. 

Esta directiva emula el ANSI 'C ' standard como #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 posiciones 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 posteriores 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 errores.

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 

el extern <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 

extern Function

...

call Function

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

global AddThree

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

LimitL dw 0

LimitH dw 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 su camino

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 definidas 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

<main code segment>

:

:

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 <etiqueta> 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ágina 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 actual 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 equivalente 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 declarado 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

Temps udata_ovr

Temp1             res 1

Temp2             res 1

Temp3             res 1

Temps udata_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

Temps udata_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

:

:

#undefine length

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

Volver a la tabla de directivas

 

 

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

+=

Suma a. el igual fijo

entry_index  += 0

-=

Resta, el igual fijo

entry_index -= 0

*=

Multiplicar por el igual fijo

entry_index *= 0

/=

Dividir por el igual fijo

entry_index /= 0

%=

Modulo, el igual fijo

entry_index %= 8

<<=

Desplaza a la izquierda el igual fijo

flags <<=3

>>=

Desplaza a la derecha el igual fijo

flags >>=3

&=

AND , el igual fijo

flags& >=ERROR_FLAG

| =

OR , el igual fijo

flags |= ERROR_FLAG

^ =

OR-Exclusiva con el valor fijo

flags  ^ = ERROR_FLAG

 

Volver a la tabla de directivas