Sunteți pe pagina 1din 20

INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO

INVESTIGACIN:
U1 Introduccin al Lenguaje Ensamblador

D O C E N T E: Ing. Marcos Gaspar Pech Cruz. PRESENTA Angulo Estrella Jess Alberto Lara Domnguez Efran Yama May Jos Luis No. De Control 111K0030 No. De Control 111K0043 No. De Control 111K0056

Aula: J2

Grupo: B

C A R R E R A: Ingeniera en sistemas computacionales M A T E R I A: Lenguajes de Interfaz

Felipe Carrillo Puerto, Quintana Roo a 27 de Enero de 2014

Introduccin al Lenguaje Ensamblador

Contenido
1.1 Importancia de la programacin en Lenguaje Ensamblador ....................................... 3 1.2 El procesador y sus registros internos ................................................................................... 4 1.3 La memoria principal (RAM) .................................................................................................... 7 1.4 Concepto De Interrupcin. ............................................................................................................ 8 1.5 Llamadas A Servicios Del Sistema. ........................................................................................ 9 1.6 Modos De Direccionamiento. ................................................................................................. 10 Direccionamiento Directo. ................................................................................................. 11 Direccionamiento Relativo................................................................................................. 12 Direccionamiento Indirecto. .............................................................................................. 12 Direccionamiento Implcito. ............................................................................................... 13 Direccionamiento de Registro. ......................................................................................... 13 Direccionamiento Indirecto por Registro. ..................................................................... 13 1.7 Proceso de ensamblado y ligado .......................................................................................... 14 1.8 Desplegado de mensajes en el monitor ............................................................................... 15

ITS Carrillo Puerto

Lenguajes De Interfaz

2 ISC-6B

Introduccin al Lenguaje Ensamblador

UNIDAD I: INTRODUCCION AL LENGUAJE ENSAMBLADOR 1.1 Importancia de la programacin en Lenguaje Ensamblador Definicin: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de microprocesador. La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en l se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sera que los programas en ensamblador ocupan menos espacio en memoria.

Ventajas y desventajas del Lenguaje Ensamblador Ventajas 1. Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el ms cercano a la mquina la computadora lo procesa ms rpido. 2. Eficiencia de tamao.- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto nivel. 3. Flexibilidad.- En lenguaje ensamblador se pueden hacer tareas especficas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite.

ITS Carrillo Puerto

Lenguajes De Interfaz

3 ISC-6B

Introduccin al Lenguaje Ensamblador

1.2 El procesador y sus registros internos El procesador es un elemento importante del hardware de la PC. Es la unidad del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de expansin para tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio (RAM).

REGISTROS INTERNOS DEL PROCESADOR. Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son direccionables por medio de un nombre. Los bits por convencin, se numeran de derecha a izquierda, como en: ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

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 CS. El DOS almacena la direccin inicial del segmento de cdigo de un programa en el registro CS. Esta direccin de segmento, ms un valor de desplazamiento en el registro apuntador de instruccin (IP), indica la direccin de una instruccin que es buscada para su ejecucin. Registro DS. La direccin inicial de un segmento de datos de programa es almacenada en el registro DS. En trminos sencillos, esta direccin, ms un valor de desplazamiento en una instruccin, genera una referencia a la localidad de un byte especifico en el segmento de datos. Registro SS. El registro SS permite la colocacin en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de inicio del segmento de pila de un programa en el registro SS. Esta direccin de segmento, ms un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que est siendo direccionada. Registros ES. Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES est asociado

ITS Carrillo Puerto

Lenguajes De Interfaz

4 ISC-6B

Introduccin al Lenguaje Ensamblador

con el registro DI (ndice). Un programa que requiere el uso del registro ES puede inicializarlo con una direccin de segmento apropiada. Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores.

Registros de propsito general. Son nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ltimo byte de la izquierda es la parte "alta", y el ltimo byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su nombre. Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmtica. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. Tambin, algunas operaciones generan cdigo ms eficiente si se refieren al AX en lugar de a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el nico registro de propsito general que puede ser ndice para direccionamiento indexado. Tambin es comn emplear el BX para clculos.

Registro DX. El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren uso, y las operaciones de multiplicacin y divisin con cifras grandes suponen al DX y al AX trabajando juntos.

Registro de Apuntador de Instrucciones.

ITS Carrillo Puerto

Lenguajes De Interfaz

5 ISC-6B

Introduccin al Lenguaje Ensamblador

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. El IP est asociado con el registro CS en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que se est ejecutando actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP. Registros Apuntadores. Los registros SP (apuntador de la pila) Y BP (apuntador de base) estn asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila. Registro SP. El apuntador de la pila de 16 bits est asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que est siendo procesada en la pila. El sistema maneja de forma automtica estos registros. Registro BP. El BP de 16 bits facilita la referencia de parmetros, los cuales son datos y direcciones transmitidos va pila. Registros ndice. Los registros SI y DI estn disponibles para direccionamiento indexado y para sumas y restas. Registro SI. El registro ndice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI est asociado con el registro DS. Registro DI. El registro ndice destino tambin es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI est asociado con el registro ES. Registro de Banderas. Sirven para indicar el estado actual de la mquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmtica cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la accin subsecuente: OF (Overflow, desbordamiento). Indica desbordamiento de un bit de orden alto (mas a la izquierda) despus de una operacin aritmtica. DF (direccin). Designa la direccin hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.
ITS Carrillo Puerto Lenguajes De Interfaz 6 ISC-6B

Introduccin al Lenguaje Ensamblador

IF (interrupcin). Indica que una interrupcin externa, como la entrada desde el teclado, sea procesada o ignorada. TF (trampa). Permite la operacin del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo, para examinar el efecto de esa instruccin sobre los registros de memoria. SF (signo). Contiene el signo resultante de una operacin aritmtica (0 = positivo y 1 = negativo). ZF (cero). Indica el resultado de una operacin aritmtica o de comparacin (0 = resultado diferente de cero y 1 = resultado igual a cero). AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmtica especializada. PF (paridad). Indica paridad par o impar de una operacin en datos de 8 bits de bajo orden (mas a la derecha). CF (acarreo). Contiene el acarreo de orden ms alto (ms a la izquierda) despus de una operacin aritmtica; tambin lleva el contenido del ltimo bit en una operacin de corrimiento o de rotacin. Las banderas estn en el registro de banderas en las siguientes posiciones:

1.3 La memoria principal (RAM)

RAM es el acrnimo ingls de Random Access Memory (memoria de acceso aleatorio). Se trata de una memoria de semiconductor en la que se puede tanto leer como escribir informacin. Es una memoria voltil, es decir, pierde su contenido al desconectar la energa elctrica. Se utiliza normalmente como memoria temporal para almacenar resultados intermedios y datos similares no permanentes. En estas memorias se accede a cada celda (generalmente se direcciona a nivel de bytes) mediante un cableado interno, es decir, cada byte tiene un camino prefijado para entrar y salir, a diferencia de otros tipos de almacenamiento, en las
ITS Carrillo Puerto Lenguajes De Interfaz 7 ISC-6B

Introduccin al Lenguaje Ensamblador

que hay una cabeza lectograbadora que tiene que ubicarse en la posicin deseada antes de leer el dato deseado. Se dicen "de acceso aleatorio" porque los diferentes accesos son independientes entre s. Por ejemplo, si un disco rgido debe hacer dos accesos consecutivos a sectores alejados fsicamente entre s, se pierde un tiempo en mover la cabeza hasta la pista deseada (o esperar que el sector pase por debajo, si ambos estn en la misma pista), tiempo que no se pierde en la RAM. Las RAM se dividen en estticas y dinmicas. Una memoria RAM esttica mantiene su contenido inalterado mientras est alimentada. La informacin contenida en una memoria RAM dinmica se degrada con el tiempo, llegando sta a desaparecer, a pesar de estar alimentada. Para evitarlo hay que restaurar la informacin contenida en sus celdas a intervalos regulares, operacin denominada refresco. Las memorias se agrupan en mdulos, que se conectan a la placa base del computador. Segn los tipos de conectores que lleven los mdulos, se clasifican en Mdulos SIMM (Single In-line Memory Module), con 30 o 72 contactos, mdulos DIMM (Dual In-line Memory Module), con 168 contactos y mdulos RIMM (RAMBUS In-line Memory Module) con 184 contactos.

1.4 Concepto De Interrupcin.


Un procesador no puede procesar simultneamente varios trozos de informacin (procesa un trozo de informacin a la vez), un programa que est siendo ejecutado puede, gracias al pedido de interrupcin, ser momentneamente suspendido mientras se produce una interrupcin. El programa interrumpido puede continuar ejecutndose luego. Existen 256 direcciones de interrupcin diferentes. Una interrupcin se convierte en una interrupcin de hardware cuando es solicitada por uno de los componentes de hardware del equipo. En efecto, existen varios perifricos en un equipo. Estos perifricos necesitan generalmente utilizar los recursos del sistema aunque slo sea para comunicarse con el sistema mismo. Cuando un perifrico desea acceder a un recurso, enva un pedido de interrupcin al procesador para llamar su atencin. Los perifricos cuentan con un nmero de interrupcin que se denomina IRQ (Peticiones de Interrupcin. Es como si cada perifrico tirara de un "hilo" que est atado a una campana para sealarle al equipo que desea que le preste atencin.
ITS Carrillo Puerto Lenguajes De Interfaz 8 ISC-6B

Introduccin al Lenguaje Ensamblador

Este "hilo" es, de hecho, una lnea fsica que conecta cada ranura de expansin as como cada interfaz E/S a la placa madre. Para una ranura ISA de 8 bits, por ejemplo, hay 8 lneas IRQ que unen ranuras ISA de 8 bits a la placa madre (IRQ0 a IRQ7). Estos IRQ estn controlados por un "controlador de interrupcin" que se encarga de cederle la palabra al IRQ que posee la mayor prioridad. Al aparecer las ranuras de 16 bits, se agregaron IRQ 8 a 15. En consecuencia, fue necesario agregar un segundo controlador de interrupcin. Los dos grupos de interrupciones estn unidos por IRQ 2 el cual se conecta (o "produce una cascada") a IRQ 9. En cierto modo, esta cascada "inserta" IRQ 8 a 15 entre IRQ1 y 3:

Dado que la prioridad va del IRQ inferior al superior y que se insertan IRQ 8 a 15 entre IRQ 1 y 3, el orden de prioridad es el siguiente: 0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7

1.5 Llamadas A Servicios Del Sistema. Las llamadas al sistema comnmente usan una instruccin especial de la CPU que causa que el procesador transfiera el control a un cdigo privilegiado. Previamente especificado por el mismo cdigo. Esto permite al cdigo privilegiado especificar donde va a ser conectado as como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecucin del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del ingls Process Control Block), para poder continuar ejecutndose luego. El procesador entonces comienza a ejecutar las instrucciones de cdigo de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y contina su ejecucin. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecucin de la llamada al sistema y del algoritmo de planificacin de CPU. Las llamadas son peticiones a ejecucin de rutinas y proporcionan la interfaz entre el sistema operativo y un programa en ejecucin. Estas llamadas son instrucciones de lenguaje ensamblador y se presentan en los manuales que emplean los programadores de este lenguaje.
ITS Carrillo Puerto Lenguajes De Interfaz 9 ISC-6B

Introduccin al Lenguaje Ensamblador

Las llamadas al sistema para ejecucin y el control de programas, usualmente incluyen un conjunto completo de los servicios accesibles por la va del lenguaje de rdenes, tales como: RUN, EXECUTE, ABORT y planificacin relacionada con el tiempo, adems los usuarios con las llamadas del sistema pueden suspender, establecer o cambiar atributos del tiempo de ejecucin de uno o ms programas. Las llamadas del sistema para el gestor de recursos, proporcionan servicios para la asignacin, reserva y reclamacin de los recursos del sistema. Por ejemplo, existen llamadas del sistema para extender o reducir la cantidad de memoria poseda por el programa que se llama. Las llamadas del sistema pueden asignar o reservar otros tipos de objetos del sistema y despus destruir o devolver su custodia al sistema operativo. Las llamadas al sistema se pueden agrupar en cinco categoras: 1. Control de proceso (Crear, cargar, ejecutar un proceso, obtener y establecer atributos, esperar un suceso, liberar memoria, abortar y terminar proceso). 2. Manipulacin de archivos (Crear, abrir, leer, obtener y establecer atributos, cerrar y eliminar archivos). 3. Manipulacin de perifricos (Solicitar, escribir, leer, obtener y establecer atributos, liberar perifrico). 4. Manipulacin de la informacin (Obtener fecha y hora, establecer fecha y hora, obtener y establecer datos del sistema, obtener y establecer atributos). 5. Comunicaciones (Crear conexin, enviar mensajes, recibir mensajes, transferir informacin del estado y eliminar conexin.

1.6 Modos De Direccionamiento. Los llamados modos de direccionamiento son las diferentes maneras de especificar en informtica un operando dentro de una instruccin en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y / o constantes, contenida dentro de una instruccin de la mquina o en otra parte.

ITS Carrillo Puerto

Lenguajes De Interfaz

10 ISC-6B

Introduccin al Lenguaje Ensamblador

Las operaciones se hacen entre registros o registros y memoria, pero nunca entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres). Los modos de direccionamiento determinan el lugar en que reside un operando, un resultado o la siguiente instruccin a ejecutar segn el caso. Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de direccionamiento Direccionamiento Inmediato. En este modo el operando es especificado en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo de operando en vez de un campo de direccin. El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operacin especificada en la instruccin. Las instrucciones de modo inmediato son tiles para inicializar los registros en un valor constante. Cuando el campo de direccin especifica un registro del procesador, la instruccin se dice que est en el modo de registro.

Direccionamiento Directo. Es directo cuando la instruccin contiene el lugar donde se encuentra el operando. Segn el lugar donde se encuentra el operando puede ser: Direccionamiento directo a registro. Direccionamiento directo a memoria Direccin completa (p. ej. Z80 sobre 64 Kb con 16 bits) Direccin sobre una pgina del mapa de memoria; tambin se conoce como direccionamiento de pgina base.

ITS Carrillo Puerto

Lenguajes De Interfaz

11 ISC-6B

Introduccin al Lenguaje Ensamblador

Direccionamiento Relativo. La instruccin indica el desplazamiento del operando con respecto a un puntero: La direccin efectiva es calculada por la unidad de control sumando, o restando, el desplazamiento al puntero de referencia que suele estar en un registro. Dependiendo del puntero se tienen diferentes modos de direccionamiento. Direccin efectiva = Reg. Referencia + desplazamiento. Modo de direccionamiento / Registro de referencia / Clculo direccin efectiva: Relativo a contador de programa Contador de programa (CP) DE = CP + desplazamiento. Relativo a registro base Un registro base (R B) DE = RB + desplazamiento. Relativo a registro ndice Un registro ndice (R I) DE = RI + desplazamiento. Relativo a pila Registro de pila (SP) DE = SP + desplazamiento. Ventajas Las instrucciones son ms compactas. El cdigo puede cambiar de lugar en el mapa de memoria con cambiar el valor del puntero. Gran facilidad de manejo de estructuras de datos. Inconvenientes Se requiere una operacin adicional para el clculo de la direccin del operando. Direccionamiento Indirecto. La posicin indicada por la instruccin no es el operando sino la direccin de memoria en la que se encuentra, por lo que se necesita un acceso adicional a memoria.
ITS Carrillo Puerto Lenguajes De Interfaz 12 ISC-6B

Introduccin al Lenguaje Ensamblador

La direccin de memoria se puede dar mediante: Direccionamiento directo a memoria Direccionamiento relativo Es posible que se realicen mltiples niveles de indireccin. Su utilidad ms comn es la de acceso a diversas informaciones mediante tablas de punteros.

Direccionamiento Implcito. En este modo de direccionamiento no es necesario poner ninguna direccin de forma explcita, ya que en el propio cdigo de operacin se conoce la direccin del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere operar. Requiere que el programador conozca con que operandos se est trabajando. Direccionamiento de Registro. Sirve para especificar operandos que estn en registros.

Direccionamiento Indirecto por Registro. En este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la memoria. El control localiza la instruccin de la memoria y utiliza su parte de direccin para acceder a la memoria
ITS Carrillo Puerto Lenguajes De Interfaz 13 ISC-6B

Introduccin al Lenguaje Ensamblador

de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento requieren que el campo de direccin de la instruccin sea sumado al control de un registro especificado en el procesador. La direccin efectiva en este modo se obtiene del siguiente clculo: Dir. Efectiva = Dir. de la parte de la instruccin + Contenido del registro del procesador.

1.7 Proceso de ensamblado y ligado Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador que no es ms que un programa que "traduce" el programa fuente a un programa objeto. Y tercero un enlazador o linker, que genere el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que se tenga a la mano, como compilador utilizaremos el MASM (macro ensamblador de Microsoft) ya que es el ms comn, y como enlazador utilizaremos el programa link. La extensin usada para que MASM reconozca los programas fuente en ensamblador es .ASM; una vez traducido el programa fuente, el MASM crea un archivo con la extensin .OBJ, este archivo contiene un "formato intermedio" del programa, llamado as porque an no es ejecutable pero tampoco es ya un programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la combinacin de varios de estos archivos, un programa ejecutable, cuya extensin es usualmente .EXE aunque tambin puede ser .COM, dependiendo de la forma en que se ensambl.

ITS Carrillo Puerto

Lenguajes De Interfaz

14 ISC-6B

Introduccin al Lenguaje Ensamblador

1.8 Desplegado de mensajes en el monitor Para poder desplegar mensajes en lenguaje ensamblador debemos conocer la estructura del programa en ensamblador. Comentarios En Lenguaje Ensamblador. El uso de comentarios a lo largo de un programa puede mejorar su claridad, en especial en lenguaje ensamblador, donde el propsito de un conjunto de instrucciones con frecuencia no es claro. 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 lnea son comentarios. Un comentario puede contener cualquier carcter imprimible, incluyendo el espacio en blanco. Un comentario puede aparecer solo en una lnea o a continuacin de una instruccin en la misma lnea, como lo muestran los dos ejemplos siguientes: Toda esta lnea es un comentario. ADD AX, BX; Comentario en la misma lnea que la instruccin. primero

Ya que un comentario aparece solo en un listado de un programa fuente en ensamblador y no genera cdigo de mquina, puede incluir cualquier cantidad de comentarios sin afectar el tamao o la ejecucin del programa ensamblado. Otra manera de proporcionar comentarios es por medio de la directiva COMMENT. Palabras Reservadas Ciertas palabras en lenguaje ensamblador estn reservadas para sus propsitos propios, y son usadas solo bajo condiciones especiales. Por categoras, 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. Smbolos predefinidos, como @Data y @Model, que regresan informacin 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 direccin de un elemento de dato y etiqueta, que se refiere a la direccin de una instruccin. Un identificador puede usar los siguientes caracteres:
ITS Carrillo Puerto Lenguajes De Interfaz 15 ISC-6B

Introduccin al Lenguaje Ensamblador

1. Letras del alfabeto: Desde la A hasta la Z(maysculas o minsculas) 2. Dgitos: Desde el 0 al 9 (no puede ser el primer carcter) 3. Caracteres especiales: Signo de interrogacin ( ? ) Subrayado ( _ ), Signo de pesos ( $ ), Arroba ( @ ), Punto ( . ) (no puede ser el primer carcter) El primer carcter de un identificador debe ser una letra o un carcter especial, excepto punto. Ya que el ensamblador utiliza algunos smbolos especiales en palabras que inician con el smbolo @, debe evitar usarlo en sus definiciones. En consecuencia, en una instruccin tal como: ADD AX, BX: El ensamblador sabe de forma automtica que AX y BX se refieren a los registros. Sin embargo, en una instruccin como: MOV REGSAVE, AX: El ensamblador puede reconocer el nombre REGSAVE solo si se define en algn lugar del programa.

Identificador, operacin y operando pueden empezar en cualquier columna. Sin embargo, si de manera consistente se inicia en la misma columna para estas tres entradas se hace un programa ms legible. IDENTIFICADOR: Como ya se explic, el termino nombre se aplica al nombre de un elemento o directiva definida, mientras que el termino etiqueta se aplica al nombre de una instruccin. OPERACIN: La operacin, que debe ser codificada, es con mayor frecuencia usada para la definicin de reas de datos y codificacin de instrucciones. Para un elemento de datos, una operacin como DB o DW define un campo, rea de trabajo o constante. OPERANDO: El operando (si existe) proporciona informacin para la operacin que acta sobre l. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definicin siguiente de un elemento de datos llamado COUNTER, la operacin DB significa "definir byte", y el operando inicializa su contenido con un valor cero:

Para una instruccin, un operando indica en donde realizar la accin. Un operando de una instruccin puede tener una, dos o tal vez ninguna entrada. Aqu estn tres ejemplos:

ITS Carrillo Puerto

Lenguajes De Interfaz

16 ISC-6B

Introduccin al Lenguaje Ensamblador

Directivas Para Listar: Page Y Title. 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 ejecucin subsecuente del programa. PAGE. Al inicio de un programa, la directiva PAGE designa el nmero mximo de lneas para listar en una pgina y el nmero mximo de caracteres en una lnea. Su formato general es: PAGE [longitud][, ancho] El ejemplo siguiente proporciona 60 lneas por pgina y 132 caracteres por lnea: PAGE 60, 132 El nmero de lneas por pgina puede variar desde 10 hasta 255, mientras que el nmero de caracteres por lnea desde 60 hasta 132. La omisin de PAGE causa que el ensamblador tome PAGE 50, 80. TITLE. Se puede emplear la directiva TITLE para hacer que un ttulo para un programa se imprima en la lnea 2 de cada pgina en el listado del programa. Puede codificar TITLE de una vez, al inicio del programa. Su formato general es: TITLE Texto. Para el operando texto, una tcnica recomendada es utilizar el nombre del programa como se registra en el disco. Por ejemplo: TITLE Prog1 Mi primer programa en ensamblador Directiva Segment. Un programa ensamblado en formato .EXE consiste en uno o ms segmentos. Un segmento de pila define el almacn de la pila, un segmento de datos define los elementos de datos y un segmento de cdigo proporciona un cdigo 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 tamao mximo de un segmento es de 64K. El operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineacin, combinar y clase, codificadas en este formato: nombre SEGMENT alineacin combinar ' clase
17 ISC-6B

ITS Carrillo Puerto

Lenguajes De Interfaz

Introduccin al Lenguaje Ensamblador

TIPO ALINEACION. La entrada alineacin indica el lmite en el que inicia el segmento. Para el requerimiento tpico, PARA, alinea el segmento con el lmite de un prrafo, de manera que la direccin inicial es divisible entre 16, o 10H. En ausencia de un operando hace que el ensamblador por omisin tome PARA. TIPO COMBINAR. La entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados despus de ensamblar. Los tipos de combinar son STACK, COMMON, PUBLIC y la expresin AT. Por ejemplo, el segmento de la pila por lo comn es definido como: nombre SEGMENT PARA STACK

Puede utilizar PUBLIC y COMMON en donde tenga el propsito de combinar de forma separada programas ensamblados cuando los enlaza. En otros casos, donde un programa no es combinado con otros, puede omitir la opcin o codificar NONE. TIPO CLASE. La entrada clase, encerrada entre apstrofos, es utilizada para agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el segmento de cdigos, 'data' por segmento de datos y 'stack' para el segmento de la pila. El ejemplo siguiente define un segmento de pila con tipos alineacin, combinar y clase: nombre SEGMENT PARA STACK 'Stack'

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 cdigo. Para este fin, usted tiene que indicar al ensamblador el propsito de cada segmento en el programa. La directiva para este propsito es ASSEME, codificada en el segmento de cdigo como sigue: Operacin Operando. ASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .

Los operandos pueden aparecer en cualquier orden. Al igual que otras directivas, ASSUME es solo un mensaje que ayuda al ensamblador a convertir cdigo simblico a cdigo maquina; an puede tener que codificar instrucciones que fsicamente cargan direcciones en registros de segmentos en el momento de la ejecucin. PAGE 60,132
ITS Carrillo Puerto Lenguajes De Interfaz 18 ISC-6B

Introduccin al Lenguaje Ensamblador

TITLE P04ASM1 ESTRUCTURA DE UN PROGRAMA .EXE ;------------------------------------------------------------------------------STACKSG SEGMENT PARA STACK 'Stack' ... STACKSG ENDS ------------------------------------------------------------------------------DATASG SEGMENT PARA 'Data' ... DATASG ENDS ;------------------------------------------------------------------------------CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG, DS:DATASG,CS:CODESG MOV AX, DATASG ;Obtiene la direccin del segmento de datos MOV DS, AX ;Almacena direccin en DS ... MOV AX, 4C00H ;Peticion INT 21H ;Salida al DOS BEGIN ENDP CODESG ENDS END BEGIN

Directivas Simplificadas De Segmentos Los ensambladores de Microsoft y de Borland proporcionan algunas formas abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el modelo de memoria antes de definir algn segmento. 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 autnomo (esto es, un programa que no est enlazado con algn otro). El modelo TINY est destinado para uso exclusivo de programas .COM, los cuales tienen sus datos, cdigo y pila en un segmento. El modelo SMALL exige que el cdigo quepa en un segmento de 64K y los datos en otro segmento de 64K. La directiva .MODELL genera automticamente 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 cdigo son:
ITS Carrillo Puerto Lenguajes De Interfaz 19 ISC-6B

Introduccin al Lenguaje Ensamblador

.STACK [tamao] .DATA .CODE [nombre] Cada una de estas directivas hace que el ensamblador genere el enunciado SEGMENT necesario y su correspondiente ENDS. Los nombres por omisin de los segmentos (que usted no tiene que definir) son STACK, DATA y TEXT (para el segmento de cdigo).

ITS Carrillo Puerto

Lenguajes De Interfaz

20 ISC-6B

S-ar putea să vă placă și