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 registro SS.
  • common: Crea segmentos sobrepuestos colocando el inicio de todos en una misma dirección.
  • memory: Indica al LINK tratar los segmentos igual que MASM con public.
  • 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 (BP o BX).
  • Indexado: Un operador indexado representa una dirección de memoria relativa a uno de los registros índice (SI o DI).
  • 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

Entradas relacionadas: