Professional Documents
Culture Documents
Directivas de MPASM
Directivas de MPASM
Directiva __BADRAM Descripcin Genera el cdigo que selecc iona el banc o de memoria de memoria RAM para direccionamiento indirec to Genera el cdigo que selecc iona el cdigo de memoria RAM Define un Bloque de Constantes Empieza la sec cin del cdigo ejecutable Especific a los bits de configurac in Dec lara los smbolos de las c onstantes Sintaxis Especific a las posiciones del RAM invlidas __badram <expr>
BANKISEL
bankisel <label>
banksel <label> cblock [<expr>] [<name>] c ode [<address>] __c onfig <expr> constant <label>[=<expr>,...,<label> [=<expr>]] [<label>] data<expr>,[,<expr>,..., <expr>] [<label>] data "<text_string>"[," <text_string>",...] [<label>] db <expr>[,<expr>,..., <expr>] [<label>] db "<text_string>"[," <text_string>",...] [<label>] de <expr>[,<expr>,..., <expr>] [<label>] de "<text_string>"[," <text_string>",...] define <name> [<value>] define <name> [<arg>,...,<arg>] <value> [<label>] dt <expr>[,<expr>,..., <expr>] [<label>] dt "<text_string>"[," <text_string>",...] [<label>] dw <expr>[,<expr>,..., <expr>] [<label>] dw "<text_string>"[," <text_string>",...] else end endc endm endw error "<text_string>" errorlevel 0|1|2| <+|-><message number>
1/42
DATA
DB
DE
#DEFINE
DT
Define tabla
DW
Empieza el bloque alternativo de un IF Fin de bloque de programa Acaba un bloque c onstante automtico Fin de la definicin de una Macro Fin de un bucle de While Manda un mensaje de error
09/06/2011
Directivas de MPASM
ERRORLEVEL Sita el nivel del error EXITM EXPAND EXTERN FILL GLOBAL IDATA __IDLOCS IF IFDEF IFNDEF #INCLUDE LIST LOCAL MACRO __MAXRAM MESSG NOEXPAND NOLIST ORG PAGE PAGESEL Salida de una Macro Expande una lista de Macro Dec lara una etiqueta externa Llena la memoria Exporta una etiqueta definida Comienza una seccin de identificadores (ID) Especific a donde estn colocados los Identificadores (ID) Empieza un bloque de c digo c ondicional Ejec utar si el smbolo ha sido definido Ejec utar si el smbolo no ha sido definido Incluye Ficheros fuentes adic cionales Opciones listado Dec lara una Macro Variable como local Dec lara la Definicin del Mac ro Especific a la direccin del RAM mxima Crea Mensajes definidos por el usuario Termina la Expansin del Macro Termina el Listado del Rendimiento Pone el Origen del Programa Inserta el nmero de pgina del listado
number> exitm expand extern<label>[ ,<label>] [<label>] fill <expr>, <count> global <label> [,<label>] [<name>] idata [<address>] __idlocs <expr> if <expr> ifdef <label> ifndef <label> include <<include_file>> |" <include_file>" list [<list_option>,...,<list_option>] local <label> [,<label>] <label> macro [<arg>,...,<arg>] __maxram <expr> messg "<message_text>" noexpand nolist <label> org <expr> page
Genera el cdigo de seleccin de la pgina pagesel <label> de ROM processor <proc esssor_type> radix <default_radix> [<label>] res <mem_units> <label> set <expr> space <expr> subtitle "<sub_text>" title "<title_text>" [<name>] udata [<address>] [<name>] udata_ovr [<address>] [<name>] udata_shr [<address>] #undefine <label> variable <label>[=<expr>,...,<label> [=<expr>] ] while <expr>
2/42
PROCESSOR El Tipo del Procesador fijo RADIX RES SET SPACE SUBTITLE TITLE UDATA Especific a Radix Predefinido Reserve la Memoria Defina Variable de ensamblador Inserta lneas en blanc o Especifique el Subttulo del Programa Especifique el Ttulo del Programa Empieza la sec cin de datos no inic ializados
UDATA_OVR Empieza la sec cin de datos no inic ializados superpuestos UDATA_SHR Empieza la sec cin de datos no inic ializados compartidos
#UNDEFINE Anula una Etiqueta de la Substitucin VARIABLE WHILE Dec lara un smbolo como variable Realiza el bucle Mientras la Condicin es Verdadera
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
Para mas informacin ver MPASM, MPLINK, MPLIB User's Guide o informacin actualizada en Mic roc hip.
__BADRAM
Identifica las posic iones de RAM invalidas
Sintaxis:
__BADRAM <el expr>[-<expr>] [, <el expr>[-<expr>]] Descripcin: Las directivas __MAXRAM y _BADRAM juntas acc eden a los flag de los registros no implementados. __BADRAM define las posic iones de las direcciones RAM invlidas. __BADRAM est disea para el uso con la directiva __MAXRAM. La directiva __BADRAM debe ir precedida de una directiva __MAXRAM. Cada <expr> debe ser al menos igual al valor especificado por __MAXRAM. Una vez se utiliza la direc tiva __MAXRAM, se habilitan las direcciones de RAM y se inhabilitan posiciones de RAM utilizando la directiva __BADRAM.
Ejemplo:
; definicin DE RAM para el PIC16F84 __MAXRAM H'CF' __BADRAM H'07',H50'-H'7F',H87'
Ver
__MAXRAM Volver a la tabla de directivas
wanadoo.es//directivas_mpasm.htm
3/42
09/06/2011
Directivas de MPASM
BANKISEL
Genera el cdigo que selecc iona el banco de memoria RAM para el direc cionamiento Indirecto.
Sintaxis:
bankisel <etiqueta> Descripcin: Se usa para generar el arc hivo objeto. Esta direc tiva es una instruccin para el linkador para que seleccione el banco de memoria adecuado para acceder direc tamente a la <etiqueta> especificada. La <etiqueta> debe ser especific ada sola. No puede realizarse ninguna operacin delante de la <etiqueta>. La <etiqueta> debe estar definida previamente. El linkador generar el banco apropiado que selec ciona el cdigo. En esencia para los dispositivos de 14 bits, la instrucc in 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 especific ar la direcc in indirecta c ompletamente sin estas instrucciones, no se genera ningn c digo.
Ejemplo:
movlw movwf bankisel ... movwf Var1 FSR Var1 INDF
Ver
PAGESEL BANKSEL Volver a la tabla de directivas
BANKSEL
Genera el cdigo que selecc iona el cdigo de memoria RAM
Sintaxis:
banksel <etiqueta> Descripcin: Se utiliza para generar un arc hivo objeto. Esta direc tiva da instruccin al linkador para que
wanadoo.es//directivas_mpasm.htm 4/42
09/06/2011
Directivas de MPASM
selec cione el banc o de memoria adecuado para acceer direc tamente a la etiqueta. La etiqueta debe especificarse sola. Ninguna operac in puede realizarse delante de la etiqueta. La etiqueta debe haberse definido previamente. El linkador genera el banc o apropiado que selecciona el cdigo . En esencia para los dispositivos de 12 bits, las instrucc iones de set/clear se generan los bit apropiados en el FSR. Para los dispositivos de 14 bits, se generan las instrucc iones de set/clear de los bit del registro de STATUS. Para los dispositivos de 16 bits, se generan instruc ciones MOVLB o MOVLR. Para dispositivos de 16 bits reforzados se generan MOVLB. Si el dispositivo c ontiene slo un banc o RAM, no se genera ninguna instruccin.
Ejemplo:
banksel movwf Var1 Var1
Ver
BANKISEL PAGESEL Volver a la tabla de directivas
CBLOCK
Define un bloque de constantes. Sintaxis: cblock [<expresin>] <etiqueta>[:<increment>][,<etiqueta>[:<increment>]]endc Descripcin: Define una lista de c onstantes definidas (por un nombre). A c ada <label> se le asigna un valor inmediatamente superior que al anterior <label>. El propsito de esta direc tiva es asignar direcc iones a muchas etiquetas. La lista finaliza cuando se encuentra la direc tiva ENDC. <expr> indica el valor de arranque para el primer nombre del bloque de etiquetas. Si no se asigna en la expresin, 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 ningn <expresin>, los valores asignados empiezan con el cero. Si <increment> se especifica, entonc es a la prxima <etiqueta> se le asigna el valor de <increment> superior a la anterior <etiqueta>. Pueden darse los nombres mltiples en una lnea, separada por las comas.
Ejemplo:
cblock 0x20 name_1, name_2
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
cblock 0x30 TwoByteVar: 0, TwoByteHigh, TwoByteLow Queue: QUEUE-SIZE QueueHeadm QueueTail Double1:2, Double2:2 endc
Ver
ENDC Volver a la tabla de directivas
CODE
Empieza la sec cin de cdigo de un Archivo Objeto
Sintaxis:
[<etiqueta>] CODE [<direccin de ROM>] Descripcin: Se usa para generar un archivo del objeto. Declara el principio de una secc in de cdigo del programa. Si <etiqueta> no se espec ifica, la seccin se nombra .code, empezando en la direcc in siguiente a la direccin espec ificada o se asignar al eslabn tiempo si ninguna direcc in se espec ifica.
Ejemplo:
RESET code H'01FF' goto START
Ver
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
wanadoo.es//directivas_mpasm.htm 6/42
09/06/2011
Directivas de MPASM
Configurac in de los bit de c onfiguracin de procesador Sintaxis: __config <expr> OR __config <addr>, <expr> Descripcin: Fija los bit de configurac in del proc esador c on el valor descrito por la expresin Para los dispositivos PIC18CXX, la direccin de la palabra de configurac in tambin debe ser especificada por <addr> . Ver en el manual de referenc ia de los mic roc ontroladores la desc ripc in de los bit de la palabra de configuracin para c ada mic roc ontrolador. Antes de utilizar esta direc tiva, debe dec lararse mediante la directiva LIST o la directiva PROCESSOR. Si esta directiva se usa en la familia de los PIC17CXX, el arc hivo Hexadec imal debe ponerse en formato INHX32 utilizando la direc tiva LIST .
Ejemplo:
LIST P=12ce519 ,n=66 INCLUDE __CONFIG CP_OFF & WDT_ON & MCLRE_ON & IntRC_OSC La primera lnea de directivas indica que el nmero de lneas que se incluir en el listado de una pgina. La segunda lnea indica al compilador el fichero que deber inc luir en la compilac in, en este caso es el arc hivo que incluye las declarac iones para el microcontrolador PIC12C519. En la tercera lnea apararen los bit para la configurac in del modo de funcionamiento. Al compilar el programa estos bits se c onfiguran por defecto y se incluyen en el archivo hexadec imal que se genera, el c ual se traslada al microcontrolador en la fase de grabac in. Se puede deducir fc ilmente que con esta lnea la configuracin 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 .
Ver
__IDLOCS LIST PROCESSOR Volver a la tabla de directivas
CONSTANT
Declara los smbolos de las c onstantes
Sintaxis:
constant <label>=<expr> [...,<label>=<expr>]
wanadoo.es//directivas_mpasm.htm 7/42
09/06/2011
Directivas de MPASM
Descripcin: Crea los smbolos para el uso de expresiones. No pueden ponerse a cero las constantes una vez se ha inicializado, y la expresin deber ser totalmente admitida en el momento de la asignacin. Esta es la diferencia principal entre las c onstantes (CONSTANT) y aquellas que se definen como variables (VARIABLE) o aquellas creadas por la direc tiva 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
Ver
SET VARIABLE Volver a la tabla de directivas
DATA
Crea Datos numricos y de Texto
Sintaxis:
[<etiqueta>] data <expr>,[,<expr>,...,<expr>] [<etiqueta>] data "<text_string>"[,"<text_string>",...] Descripcin: Esta directiva inicializa una o ms palabras de memoria de programa con los datos de la expresin. Estos datos pueden ser en forma de c onstantes, reubic able o etiquetas externas, o expresiones formadas por cualquiera de las anteriores. Los datos tambin pueden ser un carc ter ASCII, <text_string> , entre c omillas simples para caracteres o entre dobles c omillas para c adenas de carac teres.
Ejemplo:
data data reloc_label+10 1,2,ext_label ;constante ;constante, externa
8/42
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
Ver
DW DB DE DT IDATA Volver a la tabla de directivas
DB
Declara datos de un Byte
Sintaxis:
[<etiqueta>] db <expr>[,<expr>,...,<expr>] Descripcin: Reserva memoria de programa para palabras de tamao 8 bits. Las expresiones mltiples continan llenando los bytes de memoria de forma consecutiva hasta el final de las expresiones. Si el nmero de datos de las expresiones es impar, el ltimo byte ser el cero. Al generar un archivo del objeto, esta directiva tambin puede usarse para declarar los valores de los datos de inic ializacin. Para mas informacin mirar la directiva IDATA.
Ejemplo:
DB 't', 0x0f, 'e', 0x0f, 's' , 0x0f, 't', '\n'
Ver
DATA DW DE DT IDATA Volver a la tabla de directivas
DE
Define datos en la EPROM
Sintaxis:
[<etiqueta>] de <expr>[,<expr>,...,<expr>]
wanadoo.es//directivas_mpasm.htm 9/42
09/06/2011
Directivas de MPASM
Descripcin: Reservan palabras de memoria de 8 bits. Cada expresin reserva un valor de 8 bits. Los bits superiores de la palabra de programa son cero. Carda carc ter de un string se guarda en un posic in separada.
Ejemplo:
org H'2100' de "ProgTOB, v1.0" ,0 El resultado en la memoria EEPROM es el siguiente:
Ver
DATA DB DT DW Volver a la tabla de directivas
#DEFINE
Define una etiqueta de sustitucin de texto
Sintaxis:
#define <name> [<string>] Descripcin: Esta directiva define una cadena de substitucin de texto. Dondequiera que <name> se encuentre en el ensamblador, se sustituir por <string>. Usando la directiva sin <string> genera una definicin de tipo <name> para ser utilizada internamente por la directiva IFDEF. Esta directiva emula el ANSI 'C' standard como #define. No est disponible definir smbolos
wanadoo.es//directivas_mpasm.htm 10/42
09/06/2011
Directivas de MPASM
con este mtodo utilizando MPASM. Ejemplo 1: #define banco0 bcf status,5 #define banco1 bsf status,5 Siempre que a lo largo del programa se escriba banco0, se selec ciona el banc o 0 de memoria. De igual modo, siempre que se esc riba banco1, se selec ciona el banc o 1 de memoria. Ejemplo 2: #define longitud 20 #define control 0x19,7 #define posicion (X,Y,Z) (Y-(2 * Z+X)) . . . test_label dw posicin (1, longitud,512) bsf control ;set bit 7 de la posicin 19 RAM
Ver
IFDEF IFNDEF #UNDEFINE Volver a la tabla de directivas
DT
Define Tabla
Sintaxis:
[<etiqueta>] dt <expr> [, <expre>, .., <expre>] Descripcin: Esta genera, durante la fase de ensamblado, tantas instrucc iones retlw como caracteres u oc tetos la acompaen.
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)
wanadoo.es//directivas_mpasm.htm 11/42
09/06/2011
Directivas de MPASM
Ver
DATA DB DE DW Volver a la tabla de directivas
DW
Define datos de un Word
Sintaxis:
[<etiqueta>] dw <expr> [, <expre>, .., <expre>] Descripcin: Reserva memoria de programa para los datos, inicializando estas posiciones c on valores especficos. Se guardan los valores en posic iones de memoria sucesivas y se incrementa en uno el c ontador. Las expresiones pueden ser literales y se guardan c omo se ha desc rito en la directiva DATA. Al generar el archivo objeto, esta direc tiva tambin puede usarse para dec larar los valores de los datos inic ializados. Ver la direc tiva IDATA para ms informac in.
Ejemplo:
dw 39, "diagnostic 39", (d_list*2+d_offset) dw diagbase-1
Ver
DATA DB IDATA Volver a la tabla de directivas
ELSE
Empieza el bloque alternativo de un IF
Sintaxis:
wanadoo.es//directivas_mpasm.htm 12/42
09/06/2011
Directivas de MPASM
else Descripcin: Usada junto con la direc tiva IF para proporcionar un camino alternativo de ensamblado si al evaluar la c ondicin 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
Ver
IF ENDIF Volver a la tabla de directivas
END
Fin de bloque de programa
Sintaxis:
end Descripcin: Esta direc tiva indica el final del programa y es obligatoria. Si se detec ta el fin de fic hero y no se ha encontrado la directiva ENDse produce error. Todas las lneas posteriores a la lnea en la que se encuentra esta direc tiva, se ignoran y no se ensamblan.
Ejemplo:
Inicio bsf clrf bcf movlw movwf end STATUS,RP0 ; Comienza el programa ejecutable PORTB STATUS,RP0 b'00000010' PORTB
09/06/2011
Directivas de MPASM
ENDC
Termina un bloque automtic o de c onstantes
Sintaxis:
endc Descripcin: ENDCse escribe al final de una lista de constantes CBLOCK. Debe escribirse para indicar el fin de la lista.
Ejemplo:
cblock 0x20 name_1, name_2 name_3, name_4 ;a la primera variable se le asigna el valor 20 ;name_2 se le asigna el valor 21 ;name_4 se le asigna 23.
endc
Ver
CBLOCK Volver a la tabla de directivas
ENDIF
Fin de bloque de condic iones de ensamblado
Sintaxis:
endif Descripcin: Esta direc tiva marca el extremo de un bloque c ondicional de ensamblado. ENDIF puede usarse dentro de un bloque de programa o en una macro.
Ver
IF ELSE
wanadoo.es//directivas_mpasm.htm
14/42
09/06/2011
Directivas de MPASM
ENDM
Fin de la definicin de una macro
Sintaxis:
endm Descripcin: Termina una definicin del mac ro 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
Ver
MACRO EXITM Volver a la tabla de directivas
ENDW
Fin de bucle de espera
Sintaxis:
endw Descripcin: ENDW Finaliza un tiempo de espera. Cuando se c umple la condicin espec ificada por la directiva WHILE , el cdigo fuente entre la directiva WHILE y la directiva ENDW se extender repetidamente en la fuente del ensamblador y el cdigo fuente. Esta direc tiva puede usarte dentro de un bloque de programa o en una macro.
wanadoo.es//directivas_mpasm.htm
15/42
09/06/2011
Directivas de MPASM
Ejemplo:
test_mac macro count variable i i = 0 while i < count movlw i i += 1 endw endm start test_mac 5 end
Ver
WHILE Volver a la tabla de directivas
EQU
Define una constante para el ensamblador
Sintaxis:
<etiqueta> equ <espr> Descripcin: Esta directiva permite asignar el valor de <expr> a un identific ador <etiqueta>. El resultado puede ser una expresin compuesta por otros identific adores y tan compleja como se desee. Generalmente, el identificador es un nombre que describe el valor de manera ms significativa para el programador. Suele utilizarse para definir constantes y direc ciones de memoria. As, es ms fcil recordar SEG_POR_HORA que rec ordar el valor 3600 o en el c aso de una direcc in de memoria TRISA que 0x05.
Ejemplo:
cuatro EQU 4; asigna el valor del nmero 4 a la etiqueta 4
Ver
SET
wanadoo.es//directivas_mpasm.htm 16/42
09/06/2011
Directivas de MPASM
ERROR
Emite un mensaje de Error
Sintaxis:
error "<text_string>" Descripcin: <text_string> imprime en un formato idntico a c ualquier error de MPASM El mensaje <text_string> puede tener un total de oc henta c aracteres.
Ejemplo:
error_checking macro arg1 if >= 55 ; Si el argumento est fuera de rango error "error_checking-01 el argumento est fuera de rango" endif endm
Ver
MESSG Volver a la tabla de directivas
ERRORLEVEL
Sita el nivel de error
Sintaxis:
errorlevel {0|1|2|+<msgnum>|-<msgnum>} [, ...] Descripcin: Tipos de mensajes que estn impreso en el archivo listable y el archivo de errores. Poner 0 Efecto mensajes, advertencias, e impresin de errores
17/42
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
1 2
-<msgnum> Inhibe impresin del mensaje <msgnum> +<msgnum> Habilita impresin del mensaje <msgnum> Los valores para <msgnum> pueden verse en MPASM, MPLINK, MPLIB Users Guide. Los mensajes de Error no pueden ser desac tivados. La opcin de 0, 1, o 2 anula el mensaje individual que desactiva o habilitando.
Ejemplo:
errorlevel 1, -202
Ver
LIST Volver a la tabla de directivas
EXITM
Salida de una Mac ro
Sintaxis:
exitm Descripcin: Fuerza el retorno inmediato de la expansin de la macro durante el ensamblado. El efec to 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
Ver
wanadoo.es//directivas_mpasm.htm 18/42
09/06/2011
Directivas de MPASM
EXPAND
Expande una lista de Mac ro
Sintaxis:
expand Descripcin: Extiende todas las macros en el archivo de listado. Esta directiva es aproximadamente equivalente al comando de la opc in de lnea /m MPASM, pero puede desac tivarse por la ac cin de un NOEXPAND.
Ver
MACRO NOEXPAND Volver a la tabla de directivas
EXTERN
Declare una etiqueta definida c omo externa
Sintaxis:
extern <etiqueta> [,<etiqueta>...] Descripcin: Se utiliza para generar un archivo del objeto. Declara nombres del smbolo que pueden ser usado en el mdulo actual pero se define como global en un mdulo diferente. La dec laracin de EXTERNdebe ser incluida antes de <etiqueta>. Debe expecificarse al menos una etiqueta en la misma lnea. Si <etiqueta> se define en el el mdulo actual, MPASM generar un error de la etiqueta doble.
Ejemplo:
extern ... call Function Function
19/42
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
FILL
Llena la memoria
Sintaxis:
[<label>] fill (<expr>,<count>) Descripcin: Genera <count> sucesos de palabras de programa o byte (en los dispositivos PIC18CXX ). <expr> puede ser una instrucc in en ensamblador.
Ejemplo:
fill 0x1009, 5 ; Llenar con una constante fill (GOTO RESET_VECTOR),NEXT_BLOCK-$
Ver
DW ORG DATA Volver a la tabla de directivas
GLOBAL
Exportac in una Etiqueta
Sintaxis:
global <etiqueta> [,<etiqueta>...] Descripcin: Para el uso al generar un archivo del objeto. Declara nombres del smbolo que son definidos en el mdulo actual y debe estar disponible en otros mdulos. La declaracin GLOBAL debe anteceder a una <etiqueta>. Por lo menos una etiqueta debe especificarse en la lnea.
Ejemplo:
wanadoo.es//directivas_mpasm.htm 20/42
09/06/2011
Directivas de MPASM
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 secc in de identificadores en el archivo objeto
Sintaxis:
[<label>] idata [<RAM address>] Descripcin: Para generar un archivo objeto. Declara el inicio de una secc in de inic icaliazc in de datos. Si <label> no se especifica, la sec cin se nombra .idata. La primera direccin es la que se especifica, sino se indica, se asignar en el momento de linkar. Ningn c digo puede generarse en este segmento del programa. El montador generar una entrada de la tabla parec er-despierta para cada byte especificado en la seccin IDATA . El usuario debe linkar entonc es o debe incluir el cdigo de la inicializac in apropiado. 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 c ero. DB inic ializar los bytes suc esivos de RAM. DW inic ializar bytes sucesivos de RAM, con el siguiente orden, en el byte-bajo / byte-alto. idata LimitL LimitH Gain Flags String dw dw dw db db 0 D'300' D'5' 0 'Hi there!'
Ver
EXTERN GLOBAL UDATA UDATA_ACS UDATA_OVR UDATA_SHR Volver a la tabla de directivas
wanadoo.es//directivas_mpasm.htm
21/42
09/06/2011
Directivas de MPASM
__IDLOCS
El Procesador fija las posiciones de ID
Sintaxis:
__idlocs <expr> or __idlocs <expr1>, <expr2> Descripcin: Para los PIC12CXX, PIC14000, y PIC16CXX, __IDLOCS pone los cuatro loc alizadores ID en hexadec imal 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 vlido para la familia de PIC17CXX. Por ejemplo, si <expr> evala 1AF, primero (la direc cin ms 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 travs de la lnea de comandos con la directiva LIST, o la directiva PROCESSOR.
Ejemplo:
__idlocs H'1234'
Ver
LIST PROCESSOR __CONFIG Volver a la tabla de directivas
IF
Comienza un bloque de cdigo c ondicional
Sintaxis:
if <expr> Descripcin: Empieza ejecucin de un bloque condicional de ensamblado. Si <expr> es verdadera, el cdigo inmediato a IF se ensamblara. En caso contrario, las instruc ciones siguientes se saltan hata encontrar una directiva ELSE o una directiva ENDIF. La evaluacin de una expresin que sea cero se c onsidera desde el punto de vista de la
wanadoo.es//directivas_mpasm.htm 22/42
09/06/2011
Directivas de MPASM
lgica FALSA. La evaluac in de una expresin que de c ualquier valor distinto de dero se considera como VERDADERA. las direc tivas IF (SI) y WHILE (MIENTRAS) operan con el valor lgico de una expresin. Un expresin 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
Ver
ELSE ENDIF Volver a la tabla de directivas
IFDEF
Ejecuta si el smbolo ha sido definido
Sintaxis:
ifdef "<label>" Descripcin: Si <label> se ha definido previamente, normalmente utilizando la directiva #DEFINE o poniendo el valor en el comando de lnea del MPASM, se toma el c amino condic ional. El ensamblado c ontinuar hasta encontrar un ELSE emparejado o una direc tiva ENDIF.
Ejemplo:
;******************************* ;doble microcontrolador ;******************************** #DEFINE PIC674 ifdef PIC674 LIST p=12ce674 INCLUDE else LIST p=12ce519
wanadoo.es//directivas_mpasm.htm 23/42
09/06/2011
Directivas de MPASM
INCLUDE 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 mic roc ontrolador PIC12CE519, si se quita el ";" lo hace para el PIC674. Si el mic roc ontrolador 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 lnea de configurac in y si no lo es, se ejecutar la que hay despus de ELSE.
Ver
#DEFINE ELSE ENDIF IFNDEF #UNDEFINE Volver a la tabla de directivas
IFNDEF
Ejecuta si el smbolo no ha sido definido
Sintaxis:
ifndef "<label>" Descripcin: Si <label> no se ha definido previamente, o se ha utilizando la direc tiva #UNDEFINE , entonc es el c digo que hay a continuacin de la directiva ser ensamblado. Se seguir ensamblando hasta enc ontrar una directiva ELSE emparejada o encontrar una directiva ENDIF.
Ejemplo:
;******************************* ;doble microcontrolador ;******************************* #DEFINE PIC674 ifndef PIC674 LIST p=12ce519 INCLUDE else LIST p=12ce674 INCLUDE
wanadoo.es//directivas_mpasm.htm 24/42
09/06/2011
Directivas de MPASM
endif ifndef PIC674 ;Si est declarada PIC674, el reloj ser externo __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF & IntRC_OSC else __CONFIG CP_OFF & WDT_OFF & MCLRE_OFF & EXTER_COSC_NOCLKOUT & HSOSC endif Si se pine un ";" delante de #DEFINE PIC674, se compila para el mic roc ontrolador PIC12CE519, si se quita el ";" lo hace para el PIC674. Si el mic roc ontrolador 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 lnea de configurac in y si no lo es, se ejecutar la que hay despus de ELSE.
Ver
#DEFINEELSEENDIF IFNDEF #UNDEFINE Volver a la tabla de directivas
INCLUDE
Incluye Fichero fuentes adicionales
Sintaxis:
include <<include_file>> include "<include_file>" Descripcin: El archivo especificado se lee en cdigo fuente. El efec to es igual que si el texto entero del archivo inc lude se pusiera aqu. Al ensamblar el cdigo fuente se aadir el archivo incluido. Se permiten seis niveles de anidamiento. El <include_file> puede escribirse entre comillas o entre los smbolos de mayor que y menor que (< >). Si se especifica totalmente el c amino del fic hero inc lude, slo ese camino se investigar. Si no se indic a c amino, el orden de la bsqueda es: el directorio activo ac tual, el direc torio de archivo de fuente, el directorio ejecutable de MPASM.
Ejemplo:
include ;define el archivo donde estn definidos todos los ;registros del PIC16F84 include "p16F84.inc" ;tambin se puede definir de esta forma include "c:\sys\sysdefs.inc" ;define sysdefs.inc con su camino include ;define regs.h Volver a la tabla de directivas
wanadoo.es//directivas_mpasm.htm 25/42
09/06/2011
Directivas de MPASM
LIST
Opc iones de Listado
Sintaxis:
list [<list_option>, ..., <list_option>] Descripcin: Se admite solo en una lnea , la direc tiva LIST tiene el efecto sobre el listado de salida. Por otra parte, uno de lo siguiente opciones pueden proporcionarse controlando la estruc tura del proceso de ensamblado o el archivo listado: Opcin b=nnn c =nnn f= <format> Free Fixed mm=on/off n=nnn P=<tipe> r=<radix> st=ON/OFF t=ON/OFF w=0|1|2 x=ON/OFF Por defecto 8 132 INHX8M FIXED FIXED On 60 Ningn tipo hex On Off 0 On Descripcin Espacios de tabulacin Fija la anc hura de las columnas Fija el fichero hexadec imal de salida . <format> puede ser INHX32, INHX8M, o INHX8S. Usa el analizador de formato libre. Suministra la compatibilidad hacia atrs Usa el analizador de formato fijo Imprime el mapa de memoria en un fic hero tipo listado. Fija las lneas por pgina. Fija el tipo de procesador; por ejemplo , PIC16F84 Pone por defecto el RADIX: hex, dec, oct Imprime la tabla de smbolos en un fichero tipo listado Corta las lneas de listado (oculta ) Fija el nivel de mensaje. Ver ERRORLEVEL (nivel de error) Activa o desactiva la expansin de macro
Nota: Todas las opc iones LIST estn definidas c omo nmero decimales
Ejemplo:
list p=17c42, f=INHX32, r=DEC
wanadoo.es//directivas_mpasm.htm
26/42
09/06/2011
Directivas de MPASM
Ver
NOTLIS PROCESSOR RADIX ERRORLAVEL EXPAND NOEXPAND Volver a la tabla de directivas
LOCAL
Declara la variable de la macro c omo loc al
Sintaxis:
Local <label>, <label> Descripcin: Dec lara que el elemento de datos especific ado se c onsidera en el c ontexto local de la macro. <label> puede ser idntic o a otra etiqueta dec larada fuera de la definicin de la macro; no habr ningn conflicto entre las dos. Si la mac ro es llamada recursivamente, cada llamada tendr su propia copia local.
Ejemplo:
. . len equ size equ test macro local len label len endm
10 20
;versin global ;Comprobar que una variable local ;puede crearse ahora y modificarse label size len len-20 ;local len y label ;modifica local len ;reserva buffer ; ;fin de la macro
Ver
MACRO ENDM Volver a la tabla de directivas
MACRO
Declara la definicin de macro
wanadoo.es//directivas_mpasm.htm 27/42
09/06/2011
Directivas de MPASM
Sintaxis:
<label> macro [<arg>, ..., <arg>] Descripcin: Una macro define un c onjunto de instrucc iones a las que se asigna un nombre. Posteriormente, el programa fuente del usuario puede inc luir el nombre de una mac ro 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 Instruccin_1 Instruccin_2 . . Instruccin_n endm Donde: Nombre_macro: indic a el nombre de la macro que posteriormente se emplear en el programa fuente para inc luir todas las instrucc iones que estn definidas bajo este nombre. Las directivas MACRO y ENDMACRO forman el cuerpo dentro del c ual estn incluidas todas las instrucciones deseadas. Cada vez que se emplea Nombre_macro en el programa fuente, implica insertar todas las instrucciones que c onlleve dicho nombre en el programa
Ver
ENDM LOCAL IF ELSEENDIF EXITM Volver a la tabla de directivas
__MAXRAM
Define la Posicin de RAM mayor
Sintaxis:
__maxram <expr> Descripcin:
wanadoo.es//directivas_mpasm.htm 28/42
09/06/2011
Directivas de MPASM
Las directivas __MAXRAM y __BADRAM dan juntas ac cesos a los flag de registro no implementado. __MAXRAM define el valor mximo absoluto vlido de la memoria RAM e inicializa las direcc iones del mapa de memoria a utilizar, el valor debe ser siempre superior a la mxima direcc in del banc o 0 y menor de 1000h. Este directiva esta diseada para usarla junto c on la directiva __BADRAM para proteger ciertas direcc iones de memoria. __MAXRAM puede usarse ms de una vez en un archivo de la fuente. Cada uso redefine la direcc in de memoria, se debe de tener en cuenta que c ada vez que esto oc urre, se borra el contenido de la memoria.
Ejemplo:
;definicin DE RAM para el PIC16F84 __MAXRAM H'CF' __ BADRAM H'07',H50'-H'7F',H87' movwf movwf H'07' H'87' ;Genera un warning de direccin de RAM no valida ;Genera un warning de direccin de RAM no valida
Ver
__BADRAM Volver a la tabla de directivas
MESSG
Crea mensajes definidos por el usuario
Sintaxis:
messg "<message_text>" Descripcin: Genera un mensaje informativo a ser imprimido el archivo listable. El texto del mensaje puede tener hasta 80 c arcteres. Emitiendo una direc tiva MESSG no pone el c digo de retorno de error.
Ejemplo:
mssg_macro macro
wanadoo.es//directivas_mpasm.htm 29/42
09/06/2011
Directivas de MPASM
Ver
ERROR Volver a la tabla de directivas
NOEXPAND
Termina la expansin de la Mac ro
Sintaxis:
noexpand Descripcin: Desactiva la expansin de la macro en el archivo de listado.
Ver
EXPAND Volver a la tabla de directivas
NOLIST
Desactiva el listado de salida
Sintaxis:
nolist Descripcin: Desactiva el archivo del listado de salida
Ver
LIST Volver a la tabla de directivas
wanadoo.es//directivas_mpasm.htm 30/42
09/06/2011
Directivas de MPASM
ORG
Origen de las instruc ciones del programa
Sintaxis:
[<label>] org <expr> Descripcin: El origen del programa c omienza la direcc in indicada en la <expr> de la directiva. Si se especifica una <etiqueta> se le da el valor de la <expr>. Si no hay ningn ORG especificado, la generacin del cdigo comienza en la direcc in cero.
Ejemplo:
int_1 org 0x20 ;Vector 20 va aqu org int_1+0x10 ;Vector 20 va aqu
int_2
Ver
RES FILL Volver a la tabla de directivas
PAGE
Inserta el nmero de pgina en el listado
Sintaxis:
page Descripcin: Inserta el nmero de pgina en el listado del programa
Ver
LIST TITLE SUBTITLE
wanadoo.es//directivas_mpasm.htm 31/42
09/06/2011
Directivas de MPASM
PAGESEL
Genera pgina que selecciona el cdigo
Sintaxis:
Pagesel <label> Descripcin: Para el uso general de un archivo objeto. Al linkar una instrucc in para generar la pgina que selecc iona el c digo para poner los bits de la pgina en la pgina que c ontiene las etiquetas designadas .Una nica <etiqueta> debe especific arse. Ninguna operac in puede realizarse delante de la <etiqueta>. La <etiqueta> debe haberse definido previamente. El linkador generar la pgina apropiada que selecciona el cdigo. Para los micros de 12-bits, las instrucciones de bit set/clear apropiadas en el ESTADO registran el estado generado. Para los dispositivos de 14-bits y los de 16-bits, MOVLW y MOVWF generarn las instrucc iones paramodific ar el PCLATH. Si el dispositivo contiene slo una pgina de memoria del programa, ningn cdigo se generar. Para los dispositivos de PIC18CXX, este orden no har nada.
Ejemplo:
Pagesel GotoDest goto GotoDest .... pagesel CallDest call CallDest
Ver
BANKSEL BANKISEL Volver a la tabla de directivas
< name="PROCESSOR">PROCESSOR
Fija el tipo de proc esador
Sintaxis:
processor <processor_type>
wanadoo.es//directivas_mpasm.htm 32/42
09/06/2011
Directivas de MPASM
Ejemplo:
processor 16F84
Ver
LIST Volver a la tabla de directivas
RADIX
Especific a el rango (RADIX) por defec to
Sintaxis:
radix <default_radix> Descripcin: Define el rango para las expresiones de los datos. El radix predefinido por defecto es el hexadec imal. Los valores del radix son: el hexadecimal (hex), decimal (dec), u octal (oct).
Ejemplo:
radix dec
Ver
LIST Volver a la tabla de directivas
RES
Reserva memoria
wanadoo.es//directivas_mpasm.htm
33/42
09/06/2011
Directivas de MPASM
Sintaxis:
[<label>] res <mem_units> Descripcin: Al indic ador de la posicin de memoria se le inc rementa desde la posicin actual las unidades que espec ifica <mem_units>. En el cdigo no reubicable, la <etiqueta> puede ser una direcc in de memoria de programa. En el cdigo reubic able (usando MPLINK), tambin pueden usarse RES para reservar el almacenamiento de los datos.
Ejemplo:
Buffer RES 64 ;reserva 64 palabras para almacenar
Ver
ORG FILL Volver a la tabla de directivas
SET
Define Variable en Ensamblador
Sintaxis:
<etiqueta> set <expresin> Descripcin: <etiqueta> asume el valor de la expresin de MPASM vlida especificada por <expresin>. La direc tiva SET es func ionalmente equivalente a la directiva EQU slo que los valores SET pueden ser alterado como por otra directiva SET.
Ejemplo:
area ancho largo area set set set set 0 0x12 0x14 largo * ancho
Ver
EQU
wanadoo.es//directivas_mpasm.htm 34/42
09/06/2011
Directivas de MPASM
SUBTITLE
Especific a el subttulo del programa
Sintaxis:
subtitle "<sub_text>" Descripcin: <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 lnea de cada pgina en el arc hivo de impresin.
Ejemplo:
subtitle "seccin de diagnostico"
Ver
TITLE Volver a la tabla de directivas
SPACE
Inserta lneas en blanco
Sintaxis:
space <expr> Descripcin: Insercin el nmero de lneas en blanco en el archivo de listado indicadas en <expr>.
Ejemplo:
space 3 ;Inserta tres lneas en blanco
wanadoo.es//directivas_mpasm.htm
35/42
09/06/2011
Directivas de MPASM
Ver
LIST Volver a la tabla de directivas
TITLE
Especific a el ttulo del programa
Sintaxis:
title "<title_text>" Descripcin: <title_text> es una cadena de c aracteres ASCII imprimibles que se indic a entre dobles comillas. Debe tener 60 caracteres o menos. Esta directiva establece el texto a ser usado en la lnea inicial de cada pgina en el archivo de impresin.
Ejemplo:
title "cdigo de operacin, rev 5.0"
Ver
LIST SUBTITLE Volver a la tabla de directivas
UDATA
Empieza la sec cin de datos no inicializados en el arc hivo objeto
Sintaxis:
[<label>] udata [<RAM address>] Descripcin: Para el uso al generar el arc hivo objeto. Declara el inic io de una sec cin de datos a inic ializar . Si <label> no se espec ifica, la secc in se nombra .udata. La primera direcc in se indica con a la direc cin especificada o se asignar a c ontinuacin
wanadoo.es//directivas_mpasm.htm 36/42
09/06/2011
Directivas de MPASM
de la direc cin especific a. No se puede generar ningn cdigo en este segmento. La direc tiva RES debe utilizarse para reservar espac io para los datos. Nota: Dos secciones en el mismo arc hivo fuente no pueden tener el mismo nombre.
Ejemplo:
udata Var1 Double res 1 res 2
Ver
IDATA UDATA_OVR UDATA_SHR EXTERN GLOBAL Volver a la tabla de directivas
UDATA_OVR
Comienza la sec cin de datos no inicializados superpuestos
Sintaxis:
[<label>] udata_ovr [<RAM address>] Descripcin: Para el uso al generar un archivo del objeto. Declara el princ ipio de una seccin de los datos de inicializac in superpuestos. Si no se especifica <label>, la seccin es nombrada .udata_ovr. La direcc in de arranque se indic a al princ ipio o se asignar en momento de linkar si no se especifica ninguna direc cin. El espac io dec larado por esta seccin es overlayed para todas las otras secciones del udata_ovr del mismo nombre. Es una manera ideal de dec larar las variables temporales ya que permite que las variables mltiples sean declaradas en la misma posic in de de memoria. Ningn cdigo 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 LongTemp2 res 2
;sta ser una variable en la ;misma posicin que Temp1 y Temp2 ;sta ser una variable en la posicin ;que Temp3
37/42
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
Ver
IDATA UDATA EXTERN GLOBAL UDATA_SHR Volver a la tabla de directivas
UDATA_SHR
Empieza la sec cin de datos no inicializados c ompartidos
Sintaxis:
[<label>] udata_shr [<RAM address>] Descripcin: Para el uso al generar un archivo del objeto. Declara el inicio de una seccin de los datos de uninitialized c ompartido. Si <la etiqueta> no se especific a, la sec cin es nombrada .udata_shr. La direccin de arranque se inic ializa la direc cin si no se asignar en momento del linkado cuando no se indique ninguna direccin. Esta directiva se usa para dec larar variables que se asignan en RAM que es c ompartido por todos los bancos del RAM (es decir los unbanked RAM). Ningn cdigo puede generarse en este segmento. La directiva RES debe usarse para reservar el espac io para los datos.
Ejemplo:
Temps udata_shr Temp1 res 1 Temp2 res 1 Temp3 res 1
Ver
EXTERN GLOBAL IDATA UDATA UDATA_ACS UDATA_OVR Volver a la tabla de directivas
#UNDEFINE
Anula etiqueta de sustituc in
Sintaxis:
#undefine <label>
wanadoo.es//directivas_mpasm.htm 38/42
09/06/2011
Directivas de MPASM
Descripcin: La <etiqueta> es previamente un identificador definido con la direc tiva #DEFINE. Esta debe ser una etiqueta valida para el MPASM. El identificador indicado es borrado de la tabla de smbolos.
Ejemplo:
#define length 20 . . #undefine length
Ver
#DEFINE IFDEF INCLUDE IFNDEF Volver a la tabla de directivas
VARIABLE
Declara un smbolo c omo variable
Sintaxis:
variable &t;label>[=<expr>][,<label>[=<expr>]...] Descripcin: Crea los smbolos para el uso en las expresiones de MPASM. Las variables y constantes puede intercambiarse en las expresiones. La direc tiva VARIABLE crea un smbolo que es funcionalmente equivalente a los creados por la directiva SET. La diferenc ia es que la directiva VARIABLE no requiere que los smbolos se inicialicen c uando se declaran. Note que no se pueden ac tualizar os valores de las variables dentro de un operando. Se debe utilizar lneas separadas para asignar variables, incrementos y decrementos.
Ejemplo:
variable RecLength=64 ;Poner por defecto ;RecLength constant BufLength=512 ; Init BufLength . ; RecLength may . ; be reset later . ; in RecLength=128 . ;
wanadoo.es//directivas_mpasm.htm 39/42
09/06/2011
Directivas de MPASM
constant MaxMem=RecLength+BufLength
;CalcMaxMem
Ver
CONSTANTSET Volver a la tabla de directivas
WHILE
Realiza el bucle mientras la condicin es verdadera
Sintaxis:
while <expr> endw Descripcin: Las lneas de comandos c omprendidas entre WHILE y los ENDW se ensamblan mientras el valor de la <expr> sea TRUE (verdadera). Una expresin que al ser evaluada da c ero, se considera como FALSE (falsa). Una expresin que al evaluarla es distinta de cero, se c onsidera como TRUE (verdadera). Un bucle WHILE puede c ontener un mximo de 100 lneas y repetirlo un mximo 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
Ver
ENDW IF Volver a la tabla de directivas
wanadoo.es//directivas_mpasm.htm
40/42
09/06/2011
Directivas de MPASM
upper Retorna byte superior * / % + << >> >= > < <= == != & ^ | && || = += -= Multiplica Divisin Mdulo Suma Resta Desplazamiento a la izquierda Desplazamiento a la derecha Mayor o igual Mayor que Menor que Menor o igual Igual a No igual a Bitwise AND Bitwise Or-exclusiva Bitwise Or Funcin AND lgic a Funcin lgica OR Hac er igual a Sumar a, hac er igual Restar, hac er igual
wanadoo.es//directivas_mpasm.htm
09/06/2011
Directivas de MPASM
Multiplicar, hac er igual Dividir, hac er igual Mdulo, hacer igual Desplaza a la izquierda, hacer igual Desplaza a la derecha, hacer igual AND, hac er igual OR, hac er igual OR-Exclusiva, hacer igual inc rementar decrementar
entry_index *= entry_length entry_index /= entry_length entry_index %= 8 flags <<=3 flags >>=3 flags &=ERROR_FLAG flags |= ERROR_FLAG flags ^= ERROR_FLAG i ++ i --
wanadoo.es//directivas_mpasm.htm
42/42