Directivas y Componentes Fundamentales del Ensamblador x86
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,38 KB
Directivas y Definiciones en el Ensamblador
Gestión de Segmentos
La directiva "combinación" define cómo se combinarán los segmentos con el mismo nombre. Puede asumir los siguientes valores:
public: Concatena todos los segmentos en uno solo.stack: Igual al anterior, pero con direcciones relativas al registroSS.common: Crea segmentos sobrepuestos colocando el inicio de todos en una misma dirección.memory: Indica al LINK tratar los segmentos igual que MASM conpublic.at address: Direccionamiento relativo a una dirección específica.
La directiva "clase" indica el tipo de segmento, señalados con cualquier nombre.
Fin de Código Fuente
Otra directiva importante es la que indica el final de un módulo. Al alcanzarla, el ensamblador ignorará cualquier otra declaración que siga a esta.
Asignación de Registros de Segmento
La directiva ASSUME permite indicar cuáles serán los valores por defecto que asumirán los registros de segmento.
Declaración de Símbolos y Datos
Etiquetas
Las etiquetas son declaradas con la sintaxis:
nombre:
donde nombre constituye una cadena de caracteres.
Declaración de Datos
Estos se declaran según el tipo, mediante la regla:
[nombre] directiva valor,,,
donde directiva puede ser:
DB(bytes)DW(palabras)DD(palabra doble)DQ(palabra cuádruple)DT(diez bytes)
También pueden usarse las directivas:
LABEL(crea etiquetas de instrucciones o datos).EQU(crea símbolos de igualdad).- El símbolo
=(asigna valores absolutos) para declarar símbolos.
Declaración de Estructuras
Para la declaración de estructuras de datos se emplea la directiva STRUC.
Instrucciones y Operandos
Categorías de Instrucciones
Las instrucciones incluyen:
- Movimiento
- Pila
- Matemáticos
- Ajustes
- Comparación
- Saltos (Incondicional y Condicional)
- Tipos de ciclos
- Operadores Lógicos
- Desplazamiento (Lineal y Circular)
- Procesos de control
- Banderas
- Cadenas y Carga
Los Operandos
Los operandos representan valores, registros o localidades de memoria a ser accedidas de alguna manera.
Las Expresiones
Las expresiones combinan operandos y operadores aritméticos y lógicos para calcular el valor o la dirección a acceder. Los operandos permitidos se enlistan a continuación:
Tipos de Operandos
Constantes
Pueden ser números, cadenas o expresiones que representan un valor fijo.
Directos
Aquí se debe especificar la dirección de memoria a accesar en la forma segmento:offset.
Relocalizables
Se definen por medio de un símbolo asociado a una dirección de memoria y que puede ser usado también para llamados.
Contador de Localización
Usado para indicar la actual localización en el segmento durante el ensamblado. Se representa con el símbolo $ y también es conocido como centinela.
Registros
Cuando se hace referencia a cualquiera de los registros de propósito general, apuntadores, índices, o de segmento.
Direccionamiento Relativo
- Basados: Un operador basado representa una dirección de memoria relativa a uno de los registros de base (
BPoBX). - Indexado: Un operador indexado representa una dirección de memoria relativa a uno de los registros índice (
SIoDI). - Base-indexados: Un operador base-indexado representa una dirección de memoria relativa a la combinación de los registros de base e índice.
Estructuras
Su sintaxis es variable.campo. variable es el nombre con que se declaró la estructura, y campo es el nombre del campo dentro de la estructura.
Operadores y Expresiones Avanzadas
Se cuenta con los siguientes operadores: aritméticos, de corrimiento, relacionales, de bit, de índice, de apuntador, de nombre de campo, y de propósito especial.
OFFSET expresión: Regresa el desplazamiento del operando.SHORT etiqueta: Para un salto de menos de 128 bytes.LENGTH variable: Regresa el número de elementos de la variable.SIZE variable: Regresa el tamaño en bytes alojados para la variable.SEG expresión: Regresa el valor del segmento para la expresión.
Ejemplo de uso: mov ax, SEG saludo