Beruflich Dokumente
Kultur Dokumente
• De modo similar a DB, se pueden definir otros tipos de variables en lenguaje ensamblador.
Lo único que varía es el tamaño de los datos y el nombre de la directiva:
DB (Define Byte) Reservar datos de tamaño byte (8 bits)
DW (Define Word) Reservar datos de tipo palabra (16 bits)
DD (Define Doubleword) Reservar datos de tipo doble palabra (32 bits)
DQ (Define Quadword) Reservar datos de tipo quádruple palabra (64 bits)
DT (Define Terabyte) Reservar datos de tipo terabyte (80 bits o 10 bytes)
Directiva SEGMENT
Sintaxis:
nombre SEGMENT [alineamiento] [combinación] ['clase']
...
...
...
nombre ENDS
• Las directivas SEGMENT y ENDS marcan el principio y el final del segmento cuyo nombre se
especifica.
• Un segmento es un bloque de sentencias que puede contener definiciones de variables y/o
instrucciones.
• El parámetro 'alineamiento' es opcional, e indica cómo se alineará el segmento en la memoria,
y sus posibles valores son los siguientes:
¾ BYTE : Ninguno. El segmento puede empezar en cualquier posición.
¾ WORD : El segmento empieza en una frontera de palabra. La dirección de comienzo es
múltiplo de 2.
¾ PARA : El segmento empieza en una frontera de párrafo. La dirección de comienzo es
múltiplo de 16. Es el valor por defecto.
¾ PAGE : El segmento empieza en una frontera de página. La dirección de comienzo es
múltiplo de 256.
• El parámetro 'combinación' es también opcional, y se utiliza para combinar segmentos que
tengan el mismo nombre ('nombre' se refiere al indicado en el parámetro 'clase', no el nombre
del propio segmento). Sus posibles valores son los siguientes:
¾ PUBLIC : El segmento se concatenará a otros del mismo 'nombre' en la fase de
montaje (link).
¾ COMMON : El segmento, y todos los del mismo 'nombre', empezarán en la misma
dirección, solapándose entre sí.
AT <expresión> : El segmento se ubicará en la dirección cuyo segmento es<expresión>.
Esta dirección no se usa para forzar la carga del segmento en una dirección fija. Lo que sí
se permite es definir variables dentro del mismo segmento. Se usa normalmente para
referenciar zonas de memoria, como los vectores de interrupción o la memoria ROM.
¾ STACK : Define el segmento como segmento de pila (stack).
¾ MEMORY : El segmento se ubicará en una dirección superior a la de los otros
segmentos. Sólo puede haber un segmento de este tipo.
CONSTANTES NUMERICAS
Las constantes numéricas son usadas para definir valores aritméticos y direcciones de memoria. Las
constantes no están definidas entre comillas, pero van seguidas por un especificador de base opcional,
tal como H en el valor hexadecimal 12H. Para la mayoría de las directivas de definición de datos, el
ensamblador convierte constantes numéricas definidas a hexadecimal y almacena los bytes generados
en código objeto en orden inverso de derecha a izquierda. A continuación están los diferentes formatos
numéricos.
DECIMAL
[NOMBRE DEL AUTOR]
DIRECTIVAS Y CARACTERES EN LENGUAJE ENSAMBLADOR
El formato decimal permite definir con los dígitos decimales 0 a 9, seguidos de manera opcional por el
especificador de base D, tal como 125 o 125D.
Aunque el ensamblador permite que usted defina valores en formato decimal, como una conveniencia
al codificar, el convierte sus valores decimales a código objeto binario y los representa en hexadecimal.
Por ejemplo, una definición del decimal 125 se convierte en 7D hexadecimal.
HEXADECIMAL
El formato hexadecimal permite definir con los dígitos hexadecimales 0 a F, seguidos por el especificador
de base H, que se puede usar para definir valores binarios. Ya que el ensamblador espera que una
referencia que empiece con una letra es un nombre simbólico, el primer digito de una constante
hexadecimal debe ser 0 a 9.
Ejemplos son 2EH y 0FD8H, que el ensamblador almacena como 2E y D80F, respectivamente.
Note que los bytes en el segundo ejemplo son almacenados en orden inverso.
BINARIO
El formato binario permite definir con los dígitos binarios 0 y 1, seguidos por el especificador de base B.
El uso normal del formato binario es para distinguir valores en las instrucciones de manejo de bits AND,
OR, XOR y TEST.
Ya que el ensamblador convierte todos los valores numéricos a binario (y los representa en
hexadecimal), las definiciones de 12, C hex y 1100 binario generan el mismo valor: 00001100 binario o
0C hex, dependiendo de como vea el contenido del byte.
Como las letras D y B actúan tanto como especificadores de base como dígitos hexadecimales, pueden
causar alguna confusión. Como solución MASM 6.0 introdujo el uso de la T (por ten, diez) y la Y (por
binary, binario) como especificadores de base para decimal y binario, respectivamente.
REAL
El ensamblador convierte un valor real dado, una constante decimal o hexadecimal seguida por el
especificador de base R, en formato de punto flotante para uso con un coprocesador matemático.
Asegúrese de distinguir entre el uso de las contantes numéricas y de caracteres. Una constante de
carácter definida como DB’12’ genera dos caracteres ASCII, representados como 3132 hex.
Una constante numérica definida como 12 genera un numero binario, representado como 0C hex.