Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Directivas Del Asm86
Directivas Del Asm86
Sintaxis:
PARA PUBLIC
BYTE COMMON
WORD STACK
PAGE MEMORY
INPAGE AT ...
...
nombre ENDS
Se usa para definir un segmento lógico. Este segmento puede combinarse con otros en
el mismo módulo y/o con segmentos definidos en otros módulos. Estos formarán luego
los segmentos físicos en memoria, direccionados por los registros de segmento. El
programador pondrá entre las directivas SEGMENT y ENDS el código, los datos o la
pila.
Directiva ASSUME
Sintaxis:
SS Expresión SEG_nombre
ES NOTHING
...
...
...
...
Directiva GROUP
Sintaxis:
Expresión SEG_nombre
Se usa para combinar varios segmentos lógicos en un segmento físico. La suma de las
extensiones no debe superar 64 KB.
• Variables
Los dos objetos mas referidos (a excepción de los registros) son las variables y los
rótulos. Las variables son áreas de con nombre donde se almacenan valores. Los rótulos
se refieren a secciones de código a donde se puede saltar o llamar. Una variable es
definida por una sentencia de definición de datos o una directiva LABEL. Cada variable
tiene tres atributos:
• Rótulos
3. Tipo - Especifica el tipo de salto o llamado a subrutina que debe ser hecho a esa
locación. Puede ser NEAR (dentro del mismo segmento) o FAR (desde otro segmento).
• Constantes
Son números puros, sin ningún atributo. Una constante puede ser un número binario,
octal, decimal, hexadecimal, ASCII, real decimal o real hexadecimal. Se pueden evaluar
en 8 bits, 16 bits o real. Ejemplos: 11011B, 174Q, 983[D], F7DH, 'texto', 3.1416 o
.002E7 y 40490FDBR.
DEFINICION E INICIALIZACION DE VARIABLES
• Directiva DB
Sintaxis:
Cadena de caracteres
Inicialización de un byte.
• Directiva DW
Sintaxis:
Variable o expresión
• Directiva DD
Sintaxis:
Variable o expresión
• Directiva DQ
Sintaxis:
Variable o expresión
• Directiva DT
Sintaxis:
Variable o expresión
Inicialización de 10 bytes.
Ejemplos:
1 - El operador DUP se puede usar para reservar espacio de memoria sin inicializar.
PILA SEGMENT STACK ; define un segmento para la pila
...
...
Directiva RECORD
Sintaxis: (plantilla)
Sintaxis: (inicialización)
El ASM86 tiene una sentencia de inicialización de datos especial que permite construir
estructuras de datos orientadas a bits, llamadas records, que pueden tener 8 o 16 bits de
tamaño. Cada record se define con un número de campos conteniendo un cierto número
de bits por campo. Se puede almacenar información en esos campos y también acceder
a esa información. Los records son útiles cuando se desea acceder a bits específicos en
una estructura de datos. Estos pueden ser indicadores (flags) o los campos usados para
almacenar un número real.
Para utilizar un record, primero hay que definir la plantilla (template) que especifica el
tamaño del record y sus campos. Luego se usa el nombre del record en una sentencia de
inicialización de datos para asignar el almacenamiento.
Ejemplo de plantilla:
ERRORFLAGS RECORD IOERR:3=0, SYSERR:3=0, MEMERR:3
Ejemplo de inicialización:
Directiva PROC
Sintaxis:
FAR
nombre ENDP
Se usa para definir un rótulo, que normalmente comprende una serie de instrucciones y
es referido como una subrutina. las instrucciones que se encuentren fuera del par PROC
/ ENDP no serán ejecutadas en el llamado a "nombre".
Directiva LABEL
Sintaxis:
BYTE
WORD
DWORD
TBYTE
QWORD
nombre de estructura
nombre de record
La directiva LABEL crea un nombre para la locación actual del ensamblado, ya sean
datos o código. La directiva LABEL define un rótulo o variable que tendrá los atributos
que fueran tratados en definición de rótulos.
Puede ser usada para nombrar la misma posición con dos nombres diferentes.
Ejemplo:
LOWBYTE DB 0
HIGHBYTE DB 0
Se puede acceder a la palabra completa con AWORD o a cada uno de los bytes con
LOWBYTE o HIGHBYTE.
• Contador de locaciones
El contador de locaciones sigue el desplazamiento actual dentro del segmento actual que
está siendo ensamblado. este valor, simbolizado por el carácter $ puede ser usado en
ciertos contextos (por ejemplo: expresiones o instrucciones). Este símbolo representa un
rótulo NEAR.
Directiva ORG
Sintaxis:
ORG expresión
Ejemplo:
Sintaxis:
EVEN
El código o los datos que siguen a la directiva serán alineados en límite de palabras,
logrando mayor velocidad en el 8086. El ensamblador colocará una instrucción de no
operación NOP (90H) si es necesario.
Directiva PURGE
Sintaxis:
PURGE nombre
Directiva PUBLIC
Sintaxis:
Sintaxis:
Directiva END
Sintaxis:
END [rótulo]
Directiva NAME
Sintaxis:
OPERADORES Y EXPRESIONES
• Expresiones de direccionamiento
ADD DX,COUNT ; DX se suma al valor contenido en COUNT
• Operadores aritméticos
• Operadores relacionales
EQ igual
NE no es igual
LT menor
LE menor o igual
GT mayor
GE mayor o igual
Sintaxis:
CS: variable
CS: variable
CS: variable
CS: variable
1 - Tiene precedencia sobre la sentencia ASSUME pero sólo para esa línea de programa.
Ejemplos:
1-
DATA SEGMENT
ABYTE DB 0
DATA ENDS
CODE SEGMENT
CODE ENDS
2-
• Operador PTR
Sintaxis:
BYTE
WORD
DWORD
QWORD
TBYTE
NEAR
FAR
Ejemplos:
• Operador SHORT
• Operador SEG
• Operador OFFSET
Toma el valor del desplazamiento (desde el comienzo del segmento) que tiene la
variable. En definitiva: es la dirección relativa.
• Operador TYPE
• Operador LENGTH
• Operador SIZE
Devuelve un valor acorde a la cantidad de bytes asignados a esa variable.
Ej.: AWORDARRAY DW 150 DUP (0) ; SIZE = LENGTH * TYPE = 150 * 2 = 300
Directiva EQU
Sintaxis:
...
MOV COUNT, 10 ; CX = 10
...
MOVER AX, BX