Sie sind auf Seite 1von 64

1 INTRODUCCIÓN AL

LENGUAJE ENSAMBLADOR
Ing. Alejandro Castañeda Pacheco
LEGUAJE DE PROGRAMACIÓN
• Es un lenguaje diseñado para describir el conjunto de
acciones consecutivas que un equipo debe ejecutar.
• Consiste en un conjunto de reglas sintácticas y semánticas
que definen su estructura y el significado de sus elementos,
respectivamente.
• Alto nivel
• Permite al programador escribir las instrucciones de un programa
utilizando palabras o expresiones sintácticas muy similares al inglés.
• Logran la independencia del tipo de máquina
• Se aproximan al lenguaje natural
• Bajo nivel
• Proporciona un conjunto de instrucciones aritmeticológicas sin la
capacidad de encapsular dichas instrucciones en funciones que
no estén ya contempladas en la arquitectura del hardware.
(nemotécnicas).
• Lenguajes de medio nivel
• C
1.1 IMPORTANCIA DE LA
PROGRAMACIÓN EN
LENGUAJE ENSAMBLADOR.
• Radica principalmente que se trabaja directamente con el
microprocesador.

• Ocupan menos espacio en memoria.


PROCESADOR
• Circuitos que configura la unidad central de procesamiento o CPU.
• Placa de silicio de distinto tipo integrado por múltiples transistores en
conexión entre sí. Un microprocesador típico se compone de registros,
unidades de control, unidad aritmético-lógica y otras.
• Características

• Dificultad de entendimiento
• Difícil de ser portable
• Al ser programado directamente sobre Hardware, son
generalmente más rápidos y consumen menos recursos
del sistema (memoria RAM y ROM).
• Con el lenguaje ensamblador se tiene un control muy
preciso de las tareas realizadas por un Microprocesador
• Puede controlar el tiempo en que tarda una Rutina en
ejecutarse, e impedir que se interrumpa durante su
ejecución
• Consiste en una serie de Instrucciones que corresponden al
flujo de órdenes ejecutables que pueden ser cargadas en
la Memoria de un sistema basado en Microprocesador.
• MOV al, 061h
1.2 EL PROCESADOR Y SUS
REGISTROS INTERNOS
• Registros del procesador
• Se emplean para controlar instrucciones en ejecución, manejar
direccionamiento de memoria y proporcionar capacidad aritmética.
• Los registros son direccionales por medio de un nombre. Los bits por
convención, se numeran de derecha a izquierda.
• Manejan direccionamiento de memoria y proporciona capacidad
aritmética.
• Los registros son direccionables por medio de un nombre.
• Los registros internos del procesador se puede clasificar en 6 tipos
diferentes
• Registros de segmento
• Registros de propósito general
• Registros de apuntadores
• Registros de banderas
• Registros de Puntero de instrucción
• Registros de Pila
REGISTROS DE SEGMENTO

• Un registro de segmento tiene 16 bits de longitud y facilita un área de


memoria para direccionamiento conocida como el segmento actual

Registro de segmento Descripción


cs Segmento de código (Instrucciones IP)
ds Segmento de datos (Ref. a localidad de un byte especifico en segmento de datos)
Segmento de pila (Permite la colocación en memoria de una pila, para almacenamiento
ss
temporal de direcciones y datos)
Apuntador de segmento extra (Cadena de caracteres requiere manejar el
es
direccionamiento de memoria)
fs Apuntador de segmento extra (80386 y posteriores.)
gs Apuntador de segmento extra (80386 y posteriores.)
REGISTROS DE PROPÓSITO
GENERAL
• Los registros de propósito general AX, BX, CX y DX . Son únicos en el sentido
de que se puede direccionarlos como una palabra o como una parte de
un byte.
• Registro AX.
• Utilizado para operaciones que implican entrada/salida y la mayor parte de
la aritmética.
• Multiplicar , dividir y traducir suponen el uso del AX.
• Registro BX.
• Registro base ya que es el único registro de propósito general que puede
ser índice para direccionamiento indexado.
• Registro DX.
• Registro de datos. Alguna operaciones de entrada/salida requieren uso, y
las operaciones de multiplicación y división con cifras grandes suponen al
DX y al AX trabajando juntos.
• ECX Contador en las operaciones de cadena y
bucles.
• ESI Puntero fuente en las operaciones de cadena
y puntero a datos en el segmento DS.
• EDI Puntero destino en las operaciones de
cadena y puntero a datos en el segmento ES.
• ESP Puntero de pila.
• EBP Puntero a los datos alojados en la pila.
REGISTROS DE APUNTADORES
• Los registros SP (apuntador de la pila) Y BP (apuntador de base) están
asociados con el registro SS y permiten al sistema accesar datos en el
segmento de la pila.
• Registro SP.
• Proporciona un valor de desplazamiento que se refiere a la palabra actual
que esta siendo procesada en la pila.

• Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales


son datos y direcciones transmitidos vía pila
REGISTROS DE BANDERAS
• Proveen una manera de obtener información acerca de del estado actual
de la máquina y el resultado de procesamiento de una instrucción.

Bandera Bit Nombre


CF 0 Bandera de acarreo (carry flag)
PF 2 Bandera de paridad (parity flag)
AF 4 Bandera de acarreo auxiliar (adjust flag)
ZF 6 Bandera de cero (zero flag)
SF 7 Bandera de signo (sign flag)
DF 10 Bandera de dirección (direction flag)
OF 11 Bandera de desbordamiento (overflow flag)
• Bandera de acarreo
• se activa cuando se produce acarreo en una suma o multiplicación, o un
"préstamo" en una resta entre números sin signo.
• Bandera de paridad
• Se usa para indicar si el resultado, en un registro, de una operación
matemática es válido. Se usa para indicar si el resultado, en un registro, de
una operación matemática es válido.

• Bandera de acarreo auxiliar


• Utiliza en operaciones matemáticas con números decimales codificados en
binario (BCD). Se activa si hay acarreo presente.
• Bandera de cero
• Se activa si el resultado de una operación aritmético lógica es cero

• Bandera de signo
• Muestra el bit más significativo del resultado de una operación, el cual
denota el signo del número

• Bandera de dirección
• Controla la selección de autoincremento (D=0) o autodecremento (D=1),
sólo se utiliza con las instrucciones para el manejo de cadenas de
caracteres.
• Bandera de desbordamiento
• Se utiliza en la aritmética de enteros con signo cuando un número
sobrepasa la capacidad de representación del registro
REGISTROS DE PILA
• Se usan como complemento al registro y son:

• SP- Stack Pointer: Traduce como puntero de pila y es el que se reserva el


procesador para uso propio en instrucciones de manipulado de pila.

-BP- Base pointer: Se usa como registro auxiliar.
1.3 LA MEMORIA PRINCIPAL (RAM)
• O de acceso aleatorio "Random Access Memory" y se
traduce como "Memoria de Acceso Aleatorio“.

• Característica
• Se trata de una memoria volátil, es decir, que pierde sus
datos cuando deja de recibir energía.
• Hay dos tipos básicos de memoria RAM

• RAM dinámica (DRAM)


• RAM estática (SRAM)
• Memorias
• Estáticas
• Mantienen su contenido inalterado siempre y cuando exista una fuente de
energía

• Dinamicas
• Implican una "lectura destructiva", es decir, que la información se pierde al
leerla y para evitarlo se deben restaurar dichos datos con una operación de
"refresco".
• Tamaño
• MegaBytes
• GigaBytes

• Brinda
• Simultaneidad de vario programas
• Incremento en la velocidad de conexión o de funcionamiento del
ordenador.
• La placa base y su chipset pueden limitar el máximo de
memoria RAM que puedes instalar en tu sistema
1.4 EL CONCEPTO DE
INTERRUPCIONES (IRQ)

• Situación especial que suspende la ejecución de un programa de


modo que el sistema pueda realizar una acción para tratarla.

• Ejemplo
• Cuando un periférico requiere la atención del procesador para
realizar una operación de E/S.
• Ciclo del procesamiento

• Terminar la ejecución de la instrucción máquina en curso.

• Descarga el valor de contador de programa, IP, en la pila, de manera que en la


CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la
última instrucción.

• La CPU salta a la dirección donde está almacenada la rutina de servicio de


interrupción (ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como
objetivo atender al dispositivo que generó la interrupción.

• Una vez que la rutina de la interrupción termina, el procesador restaura el


estado que había guardado en la pila en el paso 2 y retorna al programa que
se estaba usando anteriormente.
• TIPOS
• Interna
• Una interrupción interna ocurre como resultado de la
ejecución de una instrucción INT o una operación de
división que cause desbordamiento, ejecución en modo
de un paso o
• Externa
• Petición para una interrupción externa al programa que
se esta ejecutando y que no son provocadas por
culminación de operaciones en dispositivos de E/S
• CLASIFICACIÓN

• Interrupciones del programa


• Son aquellas que se producen cuan la CPU detecta una condición
extraordinaria durante la ejecución de una instrucción
• Ejemplo

• Desbordamiento de pila
• Direccionamiento invalido
• Instrucción invalida
• Violación de protección

• Casi siempre obliga a la cancelación del programa que lo produjo (Finalización


anormal)
• Interrupción de llamada al supervisor

• SVC (SUPERVISOR CALL) es una forma de permitir la comunicación entro los


programas y el sistema operativo, para que ciertas acciones que por su naturaleza
están reservadas debido a que implican el manejo de recursos y operaciones cuyo
acceso no esta permitido a los programas de usuario.

• Ejemplo
• Inicio de las operaciones de Entrada/Salida
• Asignación de memoria y otros recursos
• Lectura o escritura de disco
• Mostrar por pantalla
• Implica que una o mas instrucciones especiales serán ejecutas por el SO.
• Interrupciones de falla de maquina

• Ocurre cuando los circuitos especiales detectan condiciones de error de los


componentes del hardware.
• Ejemplo
• Sector del disco
• Cd rayado
• Fuente de poder dañada
• Interrupciones de entrada/salida
• Lo dispositivos periféricos pueden operar en forma independiente del
procesador central que controla las operaciones del mismo, permitiendo que
un dispositivo particular controle las operaciones que esta realizando por
completo. Si existe error o no notifica al SO permitiendo tomar acciones sobre el
mismo.
• Ejemplo

• La impresora termina de imprimir


• Un Disco termino de desfragmentar

• Si ocurre esta se suspende la ejecución del programa que esta en la CPU para
atender la interrupción producida y reinicia la ejecución del programa que fue
interrumpido.
• Interrupciones Síncronas
• Son aquellas provocadas por la ejecución de una instrucción de programa
en el CPU, siendo éstas de una naturaleza tal, que necesitan de atención
especial; debido a los requerimientos necesarios para su tratamiento y los
resultados que se producen durante el mismo.
• Como estas son interrupciones internas al programa que se está
ejecutando, los únicos tipos de interrupciones que pueden ser provocadas
por esta causa son:

• Interrupciones de programa.
• Interrupciones de llamada al supervisor.
• Interrupciones Asíncronas

• Son provocadas por eventos externos al programa que se ejecuta, y su


objetivo es notificar al sistema operativo de algún cambio en el ambiente
de operatividad del sistema, permitiéndose la interacción del operador de
la máquina para que pueda tomar decisiones e informar acciones que no
pueden ser tomadas automáticamente por el sistema operativo.
• Dentro de las interrupciones asíncronas se pueden distinguir tres grupos
diferentes:
• Interrupciones por falla de máquina.
• Interrupciones de Entrada/Salida.
• Interrupciones Externas.
• Enmascaramiento de las interrupciones

• Inhibe las fallas o interrupciones de manera temporal.


• Mecanismos para el Tratamiento de Interrupciones
• El núcleo del sistema operativo debe proveer las rutinas especiales
para el manejo de interrupciones.

1. Al momento de producirse una interrupción, debe quedar almacenada


en un registro especial, la identificación del tipo de interrupción que se ha
presentado.
2. Se debe salvar el estado que tenía el CPU cuando se produjo la
interrupción, es decir salvar el contador de programa y los registros e
indicadores en un área reservada de memoria.
3. Se hace una transferencia incondicional al punto de entrada de la rutina
manejadora de interrupciones.
• Los pasos 1 al 3 son ejecutados automáticamente por el mecanismo de hardware
encargado de manejar las interrupciones.

4. Una vez en la rutina manejadora de interrupciones, se determinará el origen de la


interrupción, utilizando la información almacenada en el registro especial
mencionado en el paso 1. Identificada la condición de interrupción presente, se
procederán a tomar las acciones correspondientes.

5. Se mantienen enmascaradas las interrupciones con prioridad igual o menor que


aquella que se está procesando.

6. Al finalizar de ejecutarse la rutina manejadora de interrupciones, eventualmente


continuará ejecutándose el programa que estaba corriendo cuando se produjo la
interrupción, restableciendo los valores del contador de programa, registros e
indicadores, desde el área de memoria donde habían sido salvados cuando se
presentó la interrupción. Si hubiese interrupciones pendientes por atender, estas
deberán ser tratadas, antes de dar control nuevamente al programa que inicialmente
fue interrumpido.
1.5 LLAMADAS A SERVICIOS DEL
SISTEMA
• Método o función que puede invocar un proceso para solicitar un
cierto servicio al sistema operativo. Dado que el acceso a ciertos
recursos del sistema requieren la ejecución de código en modo
privilegiado, el sistema operativo ofrece un conjunto de métodos o
funciones que el programa puede emplear para acceder a dichos
recursos.
• El sistema operativo actúa como intermediario, ofreciendo una
interfaz de programación (API) que el programa puede usar en
cualquier momento para solicitar recursos gestionados por el sistema
operativo.
• EJEMPLO

• Time:
• Permite obtener la fecha y hora del sistema.

• Write:
• Se emplea para escribir un dato en un cierto dispositivo de salida, tales como una
pantalla o un disco magnético.

• Read:
• Es usada para leer de un dispositivo de entrada, tales como un teclado o un disco
magnético.

• Open:
• Es usada para obtener un descriptor de un fichero del sistema, ese fichero suele
pasarse a write.
• LLAMADAS AL SISTEMA (Categorías)

• Control de proceso (Crear, cargar, ejecutar un proceso, obtener y


establecer atributos, esperar un suceso, liberar memoria, abortar y terminar
proceso).
• Manipulación de archivos (Crear, abrir, leer, obtener y establecer atributos,
cerrar y eliminar archivos).
• Manipulación de periféricos (Solicitar, escribir, leer, obtener y establecer
atributos, liberar periférico).
• Manipulación de la información (Obtener fecha y
hora, establecer fecha y hora, obtener y establecer
datos del sistema, obtener y establecer atributos).

• Comunicaciones (Crear conexión, enviar mensajes,


recibir mensajes, transferir información del estado y
eliminar conexión.
1.6 MODOS DE
DIRECCIONAMIENTO
• Son las diferentes formas de transformación del campo de
operando de la instrucción en la dirección del operando.
• Determinan el lugar en que reside un operando, un
resultado o la siguiente instrucción a ejecutar según el
caso.
• Especifica la forma de interpretar la información contenida
en cada campo de operando para localizar, en base a
esta información, el operando.
• Los ordenadores utilizan técnicas de direccionamiento con
fines de:

• Versatilidad de programación al usuario proporcionando


facilidades tales como índices, direccionamientos
indirectos, etc., esta versatilidad nos servirá para manejar
estructuras de datos complejas como vectores,
matrices, etc.

• Reducir el número de bits del campo de operando.


Registro
Implícito
Pila
Inmediato
Esquema de los modos
de direccionamiento

Contador del
programa

Apuntador de
pila

Base
(Desplazamiento)
Absoluto
Directo Registro general
Relativo a registro
(indexados)
Indirecto Índice
Auto-incremental
Auto indexados
Auto-
decremental
• Direccionamiento implícito
• También llamado inherente, el operando se especifica en la misma
definición de la instrucción. Se usa para hacer referencia a operandos de
dos tipos:
• Registros: En el caso de que el código de operación se refiera en particular a un
registro.
• Típico de las organizaciones de un solo acumulador.
• Operandos en la pila: En el caso de que la operación se realice siempre sobre el
dato situado en la cima de pila.
• La mayoría de las instrucciones de los ordenadores con organización de pila. Estas
operaciones llevan implícitos los operandos que son los elementos de la cima de
pila.
• Direccionamiento inmediato (o literal)
• El campo de operando contiene él mismo, sin transformación alguna, la
información sobre la que hay que operar. Este modo es útil para inicializar
registros o palabras de memoria con un valor constante.
• Direccionamiento directo por registro
• En el registro del procesador se dice que el operando está especificado con
direccionamiento directo por registro, en tal caso, el operando reside en uno de los
registros del procesador que es seleccionado por un campo de registro de k bits en
la instrucción.
• Este modo es típico de los ordenadores con organización de registros de uso
general.
• Las ventajas de este modo son:
• El acceso a los registros es muy rápido, por tanto el direccionamiento por registro
debe usarse en las variables que se usen con más frecuencia para evitar accesos a
memoria que son más lentos, un ejemplo muy típico del uso de este
direccionamiento son los índices de los bucles.
• El número de bits necesarios para especificar un registro es mucho más pequeño
que el necesario para especificar una dirección de memoria, esto es debido a que
el número de registros del procesador es muy pequeño comparado con el número
de direcciones de memoria.
• Direccionamiento directo (o absoluto)
• El campo de dirección no necesita transformación alguna para dar la
dirección efectiva, es decir la función que transforma el campo de
operando en la dirección efectiva es la identidad. Esto significa que el
campo de operando es ya la dirección efectiva.
• Este direccionamiento sólo se usa en ordenadores pequeños en que el
programa siempre se sitúa en la misma zona, es decir que el código de los
programas no dependa de su situación en memoria. En ordenadores más
grandes, este modo está reservado para acceder a direcciones del sistema,
que normalmente se refieren a operaciones de entrada y salida, ya que
estas direcciones no dependen del programa.
• Direccionamiento indirecto
• En este modo el campo de operando de la instrucción indica la localización
de la dirección efectiva del operando. El modo de direccionamiento
indirecto puede adquirir diferentes formas según cuál sea el lugar donde se
encuentre la dirección del operando.
• Este direccionamiento es útil cuando se trabaja con apuntadores ya que los
apuntadores son variables que contienen las direcciones de los operandos,
no los operandos mismos
• Direccionamiento relativo
• Hay algunos modos de direccionamiento en que se hace uso de una propiedad
muy generalizada de los programas denominada localidad de referencia, esta
propiedad consiste en que las direcciones referenciadas por los programas no
suelen alejarse mucho unas de otras y, por tanto, suelen estar concentradas en una
parte de la memoria. Estas consideraciones nos llevan a la conclusión de que no es
necesario utilizar todos los bits de la dirección de memoria en el campo de
operando, basta utilizar los bits precisos para cubrir la parte de memoria donde
estén incluidas las direcciones a las que el programa hace referencia.
• Hay varios direccionamientos basados en esta técnica que reciben diferentes
nombres dependiendo de cuál sea el registro en el que radica la dirección tomada
como referencia. Todos ellos podrían catalogarse como direccionamientos relativos
a un registro.
• Direccionamiento por base y desplazamiento

• Este modo de direccionamiento se fundamenta en la propiedad de localidad de


referencia mencionada anteriormente. La dirección que se toma como referencia
de la zona de memoria en la que están localizados los datos se deposita en un
registro denominado registro base y el campo de operando indica la diferencia
entre el registro base y la dirección del operando.
• Normalmente se toma como referencia (registro base) la dirección de comienzo de
la zona de memoria ocupada por un programa. Por tanto, la dirección efectiva del
operando se calculará sumando el contenido del registro base con el campo de
operando.
• Este modo de direccionamiento se usa en ordenadores que pueden mantener en
memoria varios programas ya que, de esta forma, los diferentes registros base
pueden contener las direcciones de comienzo de cada uno de los programas. Esto
es muy útil porque facilita la relocalización de los programas: para situar el
programa en una zona de memoria diferente bastará con cambiar el contenido de
su registro base, no será necesario cambiar ninguno de los campos de operando.
• Direccionamiento indexado

• En este modo de direccionamiento, la dirección del operando también se calcula


sumando un registro de la CPU al campo de operando, este registro es un registro
específico para este uso llamado registro índice. En los ordenadores con
organización de registros generales, el registro índice puede ser cualquiera de los
registros de la CPU.

• También sirve para acceder de forma relativa a elementos de vectores cercanos a


uno dado, para ello, se carga la dirección del elemento de referencia en el registro
índice y después se accede mediante direccionamiento indexado, con el
desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo también es
aplicable a pilas, en que, algunas veces, hay que acceder a datos cercanos, por
encima o por debajo, al dato señalado por algún apuntador.
• Direccionamiento autoincremental o postincremental

• En este modo, la dirección del operando se encuentra en un registro y éste


es incrementado, después de acceder al operando, en el tamaño del
mismo.
• Este modo es útil para manejar vectores y matrices como se veía en el
apartado anterior. También se puede utilizar para extraer datos de pilas
(que crezcan hacia direcciones bajas) ya que, si el registro sobre el que se
aplica este modo es el apuntador de pila, después de la operación el
apuntador señalará al siguiente elemento de la pila.
1.7 PROCESO DE ENSAMBLADO Y
LIGADO
• Dentro de los requerimientos para poder crear un programa se
requieren:

• Editor para crear el programa fuente.

• Un compilador que no es más que un programa que "traduce" el


programa fuente a un programa objeto.

• Un enlazador o linker, que genere el programa ejecutable a partir


del programa objeto.
1.8 DESPLEGADO DE MENSAJES
EN EL MONITOR
• Todos los gráficos y el texto que se muestran en el monitor se escriben en la
RAM de visualización de video, para después enviarlos al monitor mediante
el controlador de video.
• El controlador de video es en sí un microprocesador de propósito especial,
que libera a la CPU principal del trabajo de controlar el hardware de video.
• Para poder desplegar mensajes en lenguaje ensamblador debemos
conocer la estructura del programa en ensamblador. primero
• Comentarios En Lenguaje Ensamblador.
• Un comentario empieza con punto y coma (;) y, en donde
quiera que lo codifique, el ensamblador supone que todos
los caracteres a la derecha de esa línea son comentarios.
• Un comentario puede aparecer solo en una línea o a
continuación de una instrucción en la misma línea, como lo
muestran los dos ejemplos siguientes:
• ;Toda esta línea es un comentario.
• ADD AX, BX; Comentario en la misma línea que la instrucción
• Palabras Reservadas
• Ciertas palabras en lenguaje ensamblador están reservadas para sus
propósitos propios, y son usadas solo bajo condiciones especiales. Por
categorías, las palabras reservadas incluyen:
• Instrucciones, como MOV y ADD, que son operaciones que la computadora
puede ejecutar.
• Directivas como END o SEGMENT, que se emplean para proporcionar
comandos al ensamblador.
• Operadores, como FAR y SIZE, que se utilizan en expresiones.
• Símbolos predefinidos, como @Data y @Model, que regresan información a su
programa.
• Identificadores.
• Un identificador es un nombre que se aplica a elementos
en el programa. Los dos tipos de identificadores son:
nombre, que se refiere a la dirección de un elemento de
dato y etiqueta, que se refiere a la dirección de una
instrucción.
• Directivas Para Listar:
• La directiva PAGE y TITLE ayudan a controlar el formato de un listado de un
programa en ensamblador. Este es su único fin, y no tienen efecto sobre la
ejecución subsecuente del programa.
• La directiva PAGE designa el número máximo de líneas para listar en una
página y el número máximo de caracteres en una línea.
• PAGE [longitud][, ancho]
• La directiva TITLE se emplea para hacer que un título para un programa se
imprima en la línea 2 de cada página en el listado del programa.
• Su formato general es: TITLE Texto.
• Por ejemplo: TITLE Programa
• Directiva Segment.
• Un programa ensamblado en formato .EXE consiste en uno o más
segmentos. Un segmento de pila define el almacén de la pila, un segmento
de datos define los elementos de datos y un segmento de código
proporciona un código ejecutable. Las directivas para definir un segmento,
SEGMENT y ENDS tienen el formato siguiente:
• El enunciado SEGMENT define el inicio de un segmento. El nombre del
segmento debe estar presente, ser único y cumplir las convenciones para
nombres del lenguaje.
• EL enunciado ENDS indica el final del segmento y contiene el mismo nombre
del enunciado SEGMENT. El tamaño máximo de un segmento es de 64K.
• TIPO ALINEACION. La entrada alineación indica el límite en el que inicia el
segmento. Para el requerimiento típico, PARA, alinea el segmento con el
límite de un párrafo, de manera que la dirección inicial es divisible entre 16,
o 10H.
• TIPO COMBINAR. La entrada combinar indica si se combina el segmento
con otros segmentos cuando son enlazados después de ensamblar. Los
tipos de combinar son STACK, COMMON, PUBLIC y la expresión AT
• TIPO CLASE. La entrada clase, encerrada entre apóstrofos, es utilizada para
agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el
segmento de códigos, 'data' por segmento de datos y 'stack' para el
segmento de la pila.
• Directiva Assume.
• Un programa utiliza el registro SS para direccionar la pila, al registro DS para
direccionar el segmento de datos y el registro CS para direccionar el
segmento de código. Indica al ensamblador el propósito de cada
segmento en el programa.
• Directivas Simplificadas De Segmentos

• Los ensambladores de Microsoft y de Borland proporcionan algunas formas


abreviadas para definir segmentos.
• El formato general (incluyendo el punto inicial) es: .MODEL modelo de memoria
• El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE.
• Los requisitos para cada modelo son: Puede utilizar cualquiera de estos modelos
para un programa autónomo (esto es, un programa que no esté enlazado con
algún otro).
• El modelo TINY está destinado para uso exclusivo de programas .COM
• El modelo SMALL exige que el código quepa en un segmento de 64K y los datos en
otro segmento de 64K.
• La directiva .MODELL genera automáticamente el enunciado ASSUME necesario.
Los formatos generales (incluyendo el punto inicial) para las directivas que define los
segmentos de la pila, de datos y de código son
• .STACK [tamaño] .DATA .CODE [nombre]

Das könnte Ihnen auch gefallen