Directivas Ensamblador
Directivas Ensamblador
Directivas Ensamblador
htm
[<label>] data
´<text_string>µ[,µ<text_string>µ,...]
DB Declare Datos de un Byte [<label>] db<expr>[,<expr>,...,<ex
db<expr>[,<expr>,...,<expr>]
pr>]
[<label>] db
´<text_string>µ[,µ<text_string>µ,...]
DE Defina los Datos de EEPROM [<label>] de <expr>[,<expr>,...,<expr
<expr>[,<expr>,...,<expr>]
>]
[<label>] de
´<text_string>µ[,µ<text_string>µ,...]
#DEFINE Defina una Etiqueta de Substitución de Texto define <name> [<value>]
[<label>] dt
´<text_string>µ[,µ<text_string>µ,...]
DW Declare Datos de un Word [<label>] dw<expr>[,<expr>,...,<exp
dw<expr>[,<expr>,...,<expr>]
r>]
[<label>] dw
´<text_string>µ[,µ<text_string>µ,...]
ELSE Empieza el bloque alternativo de un IF Else
END Fin de bloque de programa End
ENDC Acaba un Bloque Constante Automático Endc
ENDIF Fin del bloque de condiciones
condiciones ensambladas Endif
ENDM Fin de la definición de una Macro Endm
ENDW Fin de un bucle de While Endw
EQU Define una constante para el ensamblador
ensamblador <label>equ<expr>
<label>equ<expr>
ERROR Manda un mensaje de error error ´<text_string>µ
ERRORLEVEL Sitúa el nivel del error errorlevel 0|1|2| <+|-><message
<+|-><message
number>
EXITM Salida de una Macro Exitm
EXPAND Expande una lista de Macro expand
EXTERN Declara una etiqueta externa extern<label>[
extern<label>[ ,<label>]
FILL Llena la memoria [<label>] fill <expr>, <count>
GLOBAL Exporta una etiqueta definida global <label>[ ,<label>]
IDATA Comienza una sección de identificadores
identificadores (ID) [<name>] idata [<address>]
[<address>]
_ _ IDLOCS
IDLOCS Especifica donde están colocados los _ _idlocs<expr>
_idlocs<expr>
Identificadores (ID)
IF Empieza un bloque de código condicional if <expr>
IFDEF Ejecutar si el símbolo ha sido definido ifdef<label>
IFNDEF Ejecutar si el símbolo no ha sido definido ifndef<label>
#INCLUDE Incluye Ficheros fuentes adiccionales include <<include_file>>
|´<include_file>µ
LIST Opciones listado list [<list_option>,...,<list_option>]
[<list_option>,...,<list_option>]
LOCAL Declara una Macro Variable como local local <label>[,<label>]
<label>[,<label>]
MACRO Declara la Definición del Macro <label> macro [<arg>,...,<arg>]
[<arg>,...,<arg>]
_ _ MAXRAM
MAXRAM Especifique la dirección del RAM máxima _ _maxram<expr>
MESSG Crea Mensajes definidos por el usuario messg ´<message_text>µ
´<message_text>µ
NOEXPAND Termina la Expansión del Macro Noexpand
NOLIST Termina el Listado del Rendimiento Nolist
ORG Pone el Origen del Programa <label>org<expr>
<label>org<ex pr>
PAGE Inserta el número de página del listado Page
PAGESEL Genere el código de selección de la página de pagesel<label>
ROM
PROCESSOR El Tipo del Procesador
Procesador fijo processor <processsor_type>
<processsor_type>
RADIX Especifique Radix Predefinido radix <default_radix>
RES Reserve la Memoria [<label>] res <mem_units>
<mem_units>
SET Defina Variable de ensamblador
ensamblador <label> set <expr>
SPACE Inserta líneas en blanco space <expr>
ELSE Empieza el bloque alternativo de un IF Else
END Fin de bloque de programa End
ENDC Acaba un Bloque Constante Automático Endc
ENDIF Fin del bloque de condiciones
condiciones ensambladas Endif
ENDM Fin de la definición de una Macro Endm
ENDW Fin de un bucle de While Endw
EQU Define una constante para el ensamblador
ensamblador <label>equ<expr>
<label>equ<expr>
ERROR Manda un mensaje de error error ´<text_string>µ
ERRORLEVEL Sitúa el nivel del error errorlevel 0|1|2| <+|-><message
<+|-><message
number>
EXITM Salida de una Macro Exitm
EXPAND Expande una lista de Macro expand
EXTERN Declara una etiqueta externa extern<label>[
extern<label>[ ,<label>]
FILL Llena la memoria [<label>] fill <expr>, <count>
GLOBAL Exporta una etiqueta definida global <label>[ ,<label>]
IDATA Comienza una sección de identificadores
identificadores (ID) [<name>] idata [<address>]
[<address>]
_ _ IDLOCS
IDLOCS Especifica donde están colocados los _ _idlocs<expr>
_idlocs<expr>
Identificadores (ID)
IF Empieza un bloque de código condicional if <expr>
IFDEF Ejecutar si el símbolo ha sido definido ifdef<label>
IFNDEF Ejecutar si el símbolo no ha sido definido ifndef<label>
#INCLUDE Incluye Ficheros fuentes adiccionales include <<include_file>>
|´<include_file>µ
LIST Opciones listado list [<list_option>,...,<list_option>]
[<list_option>,...,<list_option>]
LOCAL Declara una Macro Variable como local local <label>[,<label>]
<label>[,<label>]
MACRO Declara la Definición del Macro <label> macro [<arg>,...,<arg>]
[<arg>,...,<arg>]
_ _ MAXRAM
MAXRAM Especifique la dirección del RAM máxima _ _maxram<expr>
MESSG Crea Mensajes definidos por el usuario messg ´<message_text>µ
´<message_text>µ
NOEXPAND Termina la Expansión del Macro Noexpand
NOLIST Termina el Listado del Rendimiento Nolist
ORG Pone el Origen del Programa <label>org<expr>
<label>org<ex pr>
PAGE Inserta el número de página del listado Page
PAGESEL Genere el código de selección de la página de pagesel<label>
ROM
PROCESSOR El Tipo del Procesador
Procesador fijo processor <processsor_type>
<processsor_type>
RADIX Especifique Radix Predefinido radix <default_radix>
RES Reserve la Memoria [<label>] res <mem_units>
<mem_units>
SET Defina Variable de ensamblador
ensamblador <label> set <expr>
SPACE Inserta líneas en blanco space <expr>
SUBTITLE Especifique el Subtítulo del Programa
Programa subtitle ´<sub_text>µ
En las siguientes líneas nos dedicaremos a la descripción detallada del directivas utilizadas
por MPASM.
Sintaxis
Descripción
Ejemplo
_ _
_ BADRAM
BADRAM .±Identifica las posiciones de RAM invalidas
Sintaxis
Descripción
Las directivas _ _
_ MAXRAM
MAXRAM y _ BADRAM juntas acceden a los flag de los
registros no implementados.
_ _
_ BADRAM
BADRAM define las
las posiciones de las direcciones RAM inválidas.
Ejemplo
__ MAXRAM
MAXRAM H¶CF¶
__ BADRAM H¶07¶,H50¶-H¶7F¶,H87¶
Mirar también en:
_ _
_ MAXRAM
MAXRAM
Sintaxis
bankisel<etiqueta>
Descripción
Se usa para generar el archivo objeto. Esta directiva es una instrucción para
el linkador
linkador para que seleccione
seleccione el banco de memoria
memoria adecuado para acceder
directamente a la <etiqueta> especificada. La <etiqueta> debe ser especificada sola.
No puede realizarse ninguna operación delante de la <etiqueta>. La <etiqueta>debe
estar definida previamente.
El linkador generará el banco apropiado que selecciona el código. En esencia para
los dispositivos de 14 bits, la instrucción genera el set/c lear del bit apropiado en el
IRP de registro de STATUS. Para los dispositivos de 16-bits, MOVLB o MOVLR
son las que lo generan. Si el usuario puede especificar la dirección indirecta
completamente sin estas instrucciones, no se genera ningún código.
RelocatableObjects.´
Ejemplo
movlw Var1
movwf FSR
bankisel Var1
...
movwf INDF
Mirar también en
PAGESEL BANKSEL
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.
Ejemplo:
banksel Var1
movwf Var1
BANKISEL PAGESEL
Sintaxis
cblock [<expresión>]
<etiqueta>[:<increment>][,<etiqueta>[:<increment>]]
endc
Descripción
Pueden darse los nombres múltiples en una línea, separada por las comas.
Ejemplo
endc
cblock 0x30
Queue: QUEUE-SIZE
QueueHeadmQueueTail
Double1:2, Double2:2
endc
Mirartambiénen
ENDC
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.
Ejemplo
goto START
UDATA _ OVR UDATA _ SHR
Nota: Dos secciones del mismo archivo fuente no pueden tener el mismo nombre.
Fija los bit de configuración del procesador con el valor descrito por la expresión
Antes de utilizar esta directiva, debe declararse med iante la directiva LIST o la
directiva PROCESSOR. Si esta directiva se usa en la familia de los PIC17CXX, el
archivo Hexadecimal debe ponerse en formato INHX32 utilizando la directiva
LIST.
Ejemplo
INCLUDE <P12ce519.INC>
Sintaxis
constant<label>=<expr> [...,<label>=<expr>]
Descripción
Crea los símbolos para el uso de las expresiones del MPASM. No pueden ponerse a
cero las constantes una vez se ha inicializado, y la expresión deber ser totalmente
admitida en el momento de la asignación. Esta es la diferencia principal entre las
constantes (CONSTANT) y aquellas que se definen co mo variables (VARIABLE) o
aquellas creadas por la directiva SET. Por otra parte pueden usarse constantes y
variables intercambiables en las expresiones.
Ejemplo
; RecLength
constantBufLength=512 ; InitBufLength
. ; RecLength may
. ; be reset later
. ; inRecLength=128
. ;
constantMaxMem=RecLength+BufLength ;CalcMaxMem
Mirar también en:
SET VARIABLE
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
datastart_of_program ; etiquetarecolocable
DW DB DE DT IDATA
Volver a la tabla de directivas
Sintaxis
[<etiqueta>] db<expr>[,<expr>,...,<expr>]
Descripción
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
DATA DW DE DT IDATA
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¶
DATA DB DT DW
Sintaxis
Descripción
Esta directiva define una cadena de substitución de texto. Dondequiera que <string>
se encuentre en el ensamblador, se sustituirá por <string>.
Usando la directiva sin <string> genera una de finición de tipo <name> para ser
Esta directiva emula el ANSI 'C ' standardcomo #define. Define símbolos con este
método no está disponible para ser usado por el MPLAB.
Ejemplo 1
Ejemplo 2
#define longitud 20
DT ± Define Tabla
Sintaxis
Descripción
Ejemplo
dt ³mensaje´,0x10,.15
rtlw 0x10
Mirar también en
DATA DB DE DW
Sintaxis
Descripción
Reserva memoria de programa para los datos, inicializando estas posiciones con
valores específicos. Se guardan los valores en po siciones de memoria sucesivas y se
incrementa en uno el contador. Las expresiones pueden ser literales y se guardan
como se ha descrito en la directiva DATA.
Al generar el archivo objeto, esta directiva también puede usarse para declarar los
valores de los datos inicializados. Mirar la directiva IDATA para más información.
Ejemplo
dw diagbase-1
Mirar también en
DATA DB IDATA
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
if rate < 50
dw lento
else
dw rapido
endif
endm
IF ENDIF
Sintaxis
End
Descripción
Esta directiva indica el final del programa y es obligatoria. Si se detecta el fin de fichero y
no se ha encontrado la directiva END se produce error. Todas las líneas po steriores a la
línea en la que se encuentra esta directiva, se ignoran y no se ensamblan.
Ejemplo
bcf STATUS,RP0
movlw b¶00000010¶
movwf PORTB
end
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
endc
CBLOCK
Sintaxis
endif
Descripción
IF ELSE
Sintaxis
endm
Descripción
Termina una definición del macro que comienza con la directiva MACRO.
Ejemplo
bsf STATUS,RP0
clrf PORTB
bcf STATUS,RP0
movlw b¶00000010¶
movwf PORTB
endm
Mirar también en
MACRO EXITM
Sintaxis
endw
Descripción
Ejemplo:
Mirar también en
WHILE
Sintaxis
Ejemplo
SET
Sintaxis
error ³<text_string>´
Descripción
Ejemplo
MESSG
Sintaxis
Descripción
Tipos de mensajes que están impreso en el archivo listable y el archivo de erro res.
Se pone Afecta
0 mensajes, advertencias, e impresión de errores
1 Se imprimen advertencias y errores
2 Imprime errores
-<msgnum> Inhibe impresión del mensaje <msgnum>
+<msgnum> Habilita impresión del mensaje <msgnum>
Ejemplo:
errorlevel 1, -202
LIST
exitm
Descripción
Ejemplo
exitm
else
endif
endm
MACRO ENDM
Sintaxis
expand
Descripción
MACRO NOEXPAND
Sintaxis
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.
Ejemplo
externFunction
...
callFunction
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:
DW ORG DATA
Sintaxis
Descripción
Para el uso al generar un archivo del objeto. Declara nombres del símbolo que son
udata
Var1 res 1
Var2 res 1
code
AddThree
globalAddThree
addlw 3
return
Sintaxis
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.
Ejemplo:
idata
LimitLdw 0
LimitHdw D¶300¶
Gain dw D¶5¶
Flags db 0
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.
Ejemplo
_ _idlocs H¶1234¶
Sintaxis
if <expr>
Descripción
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
movlw 0x0a
movwf io_1
else
movlw 0x01a
movwf io_2
endif
Mirar también en
ELSE ENDIF
Sintaxis
ifdef ³<label>´
Descripción
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
else
endif
Sintaxis
ifndef ³<label>´
Descripción
Ejemplo
; *******************************
; doble microcontrolador
;********************************
#DEFINE PIC674
ifdef PIC674
LIST p = 12ce674
INCLUDE <P12ce674.INC>
else
LIST p=12ce519
INCLUDE <P12ce519.INC>
endif
else
endif
Sintaxis
include<<include_file>>
include ³<include_file>´
Descripción
Ejemplo
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:
Nota: Todas las opciones LIST están de finidas como número decimales
Ejemplo:
EXPAND NOEXPAND
Sintaxis
Descripción
Ejemplo
<maincodesegment>
Mirar también en
MACRO ENDM
Sintaxis
Descripción
Ejemplo:
Nombre_macro MACRO
Instrucción_1
Instrucción_2
«««««..
«««««..
Instrucción_n
ENDM
Donde:
Mirar también en
_ _MAXRAM <expr>
Descripción
Las directivas _ _MAXRAM y _ _BADRAM dan juntas accesos a los flag de registro no
implementado.
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
__ MAXRAM H¶CF¶
__ BADRAM H¶07¶,H50¶-H¶7F¶,H87¶
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
endm
Mirar también en
ERROR
Sintaxis
noexpand
Descripción
Mirar también en
EXPAND
Sintaxis
nolist
Descripción
Mirar también en
LIST
Sintaxis
[<label>] org<expr>
Descripción
Ejemplo
; Vector 20 va aquí
; Vector 20 va aquí
Mirar también en
RES FILL
Sintaxis:
page
Descripción
Sintaxis:
Pagesel <label>
Descripción
Para el uso general de un archivo objeto. Al linkar una instrucción para generar la
página que selecciona el código para poner los bits de la página en la página que
contiene las etiquetas designadas .Una única <et iqueta> debe especificarse. Ninguna
operadión puede realizarse delante de la < etiqueta>. La <etiqueta> debe haberse
definido previamente. El linkador generará la página apropiada que selecciona el
código. Para los micros de 12-bits, las instrucciones set/clear de pedazo apropiadas
en el ESTADO registran el estado generado. Para los dispositivos de 14-bits y los
de 16-bits, MOVLW y MOVWF generarán las instrucciones para modificar el
PCLATH. Si el dispositivo contiene sólo una pág ina de memoria del programa,
ningún código se generará.
Para los dispositivos de PIC18CXX, este orden no hará nada.Para más información,
refiérase a Capítulo 6.
Ejemplo
Pagesel GotoDest
goto GotoDest
....
pagesel CallDest
call CallDest
Mirar también en
BANKSEL BANKISEL
Sintaxis:
processor<processor_type>
Descripción
Ejemplo
processor 16F84
LIST
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).
radix dec
LIST
Sintaxis:
Ejemplo:
ORG FILL
Sintaxis:
<etiqueta>set<expresión>
Descripción
sólo que los valores SET puede ser alterado como por otra directiva SET.
Ejemplo:
area set 0
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:
TITLE
Sintaxis:
space <expr>
Descripción
Ejemplo
LIST
Volver a la tabla de directivas
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:
LIST SUBTITLE
Sintaxis
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 directiva RES debe utilizarse para reservar espacio para los datos.
Nota.- Dos secciones en el mismo archivo fuente no pueden tener el mismo nombre.
Ejemplo:
udata
Var1 res 1
Double res 2
Sintaxis
Descripción
Para el uso al generar un archivo del objeto. Declara el principio de una sección de
los datos de inicialización superpuestos. Si no se especifica <label> , la sección es
nombrada .udata_ovr . La dirección de arranque se indica al principio o se asignará
en momento de linkar si no se especifica ninguna dirección. El espacio dec larado
por esta sección es overlayed para todas las otras secciones del udata_ovr del
mismo nombre. Es una manera ideal de declarar las variables temporales ya que
permite que las variables múltiples sean declaradas en la misma posición de de
memoria. Ningún código puede genere en este segmento. La directiva RES debe
usarse para reservar el espacio para los datos.
Ejemplo
Tempsudata_ovr
Temp1 res 1
Temp2 res 1
Temp3 res 1
Tempsudata_ovr
;que Temp3
Sintaxis
Descripción
Para el uso al generar un archivo del objeto. Declara el inicio de una sección de
Ejemplo
Tempsudata_shr
Temp1 res 1
Temp2 res 1
Temp3 res 1
Mirar también en
Sintaxis
#undefine<label>
Descripción
Ejemplo
#define length 20
#undefinelength
Mirar también en
Sintaxis
variable <label>[=<expr>][,<label>[=<expr>]...]
Descripción
Crea los símbolos para el uso en las expresiones de MPASM. Las variables y
constantes
Ejemplo
Mirar también en
CONSTANT SET
Sintaxis
while <expr>
:
:
endw
Descripción
Ejemplo
variable i
i=0
movlw i
i += 1
endw
endm
start
test_mac 5
end
Mirar también en
ENDW IF
Operadores Aritméticos y de Procedencia
Operador Ejemplo
$ Retorna contador de programa goto $+3
( Paréntesis izquierdo 1 +(d*4)
) Paréntesis derecho (longitud+1) * 256
! Operador NOT (completo lógico) If ! (a = = b)
- Negación (2ºs complemento) -1 * longitud
~ Complemento flags = ~flags
high Retorna byte alto movlw high CTR_Tabla
low Retorna byte bajo movlw low CTR_Tabla
* Multiplica a=b*c
/ División a= b/c
% Módulo entri_len = tot_len % 16
+ Suma tot_len = entru_len * 8 +1
- Resta entry_len = (tot 1)/8
<< Desplazamiento a la izquierda flags<<flags<< 1
>> Desplazamiento a la derecha flags>>flags>> 1
>= Mayor o igual If entry_idx>= num_entries
> Mayor que If entry_idx>num_entries
< Menor que If entry_idx<num_entries
<= Menor o igual If entry_idx<= num_entries
== Igual a If entry_idx = num_entries
!= No igual a If entry_idx != num_entries
& Bitwise AND flags = flags & ERROR_BIT
^ Bitwise Or-exclusiva flags = flags ^ ERROR_BIT
| Bitwise Or flags = flags | ERROR_BIT
&& Función AND lógica If (len = = 511) && (b = = c)
|| Función lógica OR If (len = = 511) || (b = = c)
= Hacer igual a entry_index = 0