Sunteți pe pagina 1din 82

Universidad Autnoma de Tamaulipas

Facultad de Ingeniera Arturo Narro Siller

Captulo I. Organizacin de la computadora digital.

1.1.- Introduccin.
La organizacin de una computadora digital y su arquitectura estn ntimamente relacionadas; sin embargo, son dos conceptos diferentes que muchas veces se toman como sinnimo. La organizacin de una computadora digital se refiere a las unidades lgicas que la componen (como la Unidad Central de Proceso, la Unidad de Memoria y la Unidad de Entrada/ Salida), las funciones que realizan, su operacin y la forma en que se relacionan y se comunican unas con otras. La arquitectura de las computadoras se enfoca en la forma de construir cada una de estas unidades lgicas para que realicen las funciones especificadas por su organizacin, as como la manera en que estas unidades van a comunicarse para interactuar entre ellas.

1.2.- Arquitectura.
Una computadora digital, en su forma mas simple, consta de una Unidad Central de Proceso, una Unidad de Memoria y una Unidad de Entrada/ Salida. Estas unidades estn interconectadas mediante un conjunto de lneas de comunicacin que recibe el nombre de BUS. La Unidad Central de Proceso (CPU) internamente contiene la Unidad de Control (CU), la Unidad Aritmtica/ Lgica (ALU) y varios registros. Estn arquitectura bsica se muestra en forma esquemtica en la figura. 1.1.

Figura 1.1. Arquitectura Bsica.


2

Dentro del BUS existen lneas para direccin, datos y seales de control. 1.2.1.- Unidad de Memoria. La unidad de memoria esta organizada como un conjunto de celdas, conocidas tambin como palabras, cada una de las cuales pueden almacenar un dato o una instruccin. Las celdas de la memoria tienen asociada una direccin nica. Las direcciones de memoria estn asignadas en forma secuencial empezando con la direccin 0. Pueden realizarse dos tipos de operaciones sobre la unidad de memoria. Estas operaciones son lectura de memoria y escritura a memoria. Para esto, la unidad de memoria tiene varias lneas las cuales se conecta al BUS. Un conjunto de lneas sirven para especificar la direccin de una celda, otro conjunto sirve para transferir el dato que se desea leer o escribir en esa celda y otras lneas se usan para indicar el tipo de operacin que se desea realizar. Existen, adems, otras lneas que se utilizan para controlar y sincronizar la operacin de la memoria con el resto de la computadora digital. Una operacin de lectura de la unidad de memoria permite obtener el dato o cdigo de instruccin que se encuentra almacenado en una celda particular de la memoria. Cuando se desea leer un dato o una instruccin de una celda especifica, las lneas de direccin deben tener la direccin de la celda de memoria cuyo contenido se desea obtener, la lnea de lectura se activa (indicando este tipo de operacin) y las lneas de sincronizacin controlan el inicio de la operacin. Cuando la unidad de memoria termina de realizar la operacin de lectura, coloca en las lneas de transferencia de datos una copia del contenido de la celda de memoria cuya direccin se especific mediante la lnea de direccin. El contenido de la celda de memoria no se modifica. Una operacin de escritura a la unidad de memoria permite almacenar un dato o una instruccin en una celda en particular de la unidad de memoria. El dato o instruccin que contiene la celda de memoria antes de realizar la operacin de escritura ser reemplazado con el dato o instruccin que se desea almacenar en dicha celda, perdindose el contenido original. Para realizar este tipo de operacin sobre la memoria, las lneas de direccin deben tener la direccin de la celda en la cual se desea almacenar el dato o la instruccin, que se desea guardar y las lneas de transferencia de datos deben tener el dato o instruccin que se desea guardar y la lnea de escritura se activa. Cuando se inicia la operacin mediante las lneas de sincronizacin, la unidad de memoria almacena el dato o la instruccin en la celda de memoria especificada.

1.2.2.- Unidad Central de Proceso (CPU). La funcin de la unidad central de proceso es ejecutar instrucciones para procesar datos y controlar toda la operacin de la computadora digital. Para realizar las funciones de control, la unidad central de proceso cuenta precisamente con una unidad de control (CU) que es la que se encarga de coordinar la ejecucin de las instrucciones y la transferencia de datos entre las diferentes unidades de la computadora. Para realizar las operaciones aritmticas y lgicas, la unidad central de proceso contiene la unidad aritmtica y lgica (ALU). 1.2.3.- Registros. La unidad central de proceso tambin cuenta con una serie de registros utilizados para ciertos propsitos. Un registro es una celda similar a una de las celdas de memoria y puede almacenar un dato o una instruccin, dependiendo del registro de que se trate. 1.2.4.- Unidades de Entrada/ Salida. Para que un usuario de una computadora digital pueda ver y analizar los resultados de un programa, es necesario que se enven a algn dispositivo perifrico como una pantalla de video o una impresora. Cada dispositivo perifrico debe tener asignada una direccin nica para poder identificarlo. La forma en que estos datos serian enviados al dispositivo es similar a la forma en que se guardaran en la unidad de memoria. Dentro del bus existen lneas que indican si la operacin de lectura o escritura debe ser realizar por la unidad de memoria o por la unidad de entrada/ salida.

1.3.- Interconexin de BUS.


Un BUS es una va de comunicacin que conecta a dos o ms dispositivos. Una caracterstica clave del bus es que es un medio de transmisin compartido. Mltiples dispositivos se conectan al bus y estn disponible una seal transmitida por cualquier dispositivo para la recepcin de todos los otros dispositivos conectados al bus. Si dos dispositivos transmiten durante el mismo periodo de tiempo, sus seales se transplantan y su informacin ser engaosa (basura). Por lo tanto, solo dispositivo puede transmitir con xito a la vez. 1.3.1.- Estructura de Bus. Aunque hay diferentes diseos de bus, las lneas de cualquier bus pueden clasificarse en tres grupos de funcin (fig. 1.2): datos, direccin y lneas de control. Adems existen lneas de distribucin de potencia que suministran energa a los mdulos conectados.

Figura 1.2. Buses principales de una computadora.

Las lneas de datos proporcionan un camino para mover los datos entre los mdulos del sistema. Estas lneas se llaman en conjunto, el BUS DE DATOS. El bus de datos consta de por ejemplo 8, 16, o 32 lneas separadas, a este nmero de lneas se hacen referencia como la anchura del bus de datos. Como cada lnea puede llevar slo un bit a la vez, el nmero de lneas determina el nmero de bits que pueden transferir a un tiempo. La anchura del bus de datos es un factor clave para determinar la ejecucin general del sistema. Por ejemplo, si el bus de datos es de 8 bits de ancho y cada instruccin es de 16 bits de longitud, entonces la CPU debe acceder dos veces el mdulo de memoria durante cada ciclo de instruccin. Las lneas de direccin se utilizan para designar el origen o el destino de los datos en el bus de datos. Por ejemplo, si la CPU desea leer una palabra de datos (8,16,32 bits) de la memoria, coloca la direccin de la palabra deseada en la lnea de direccin. Es claro que la anchura del bus de direcciones determina la mxima capacidad posible de memoria del sistema, aplicado la siguiente ecuacin:

Cantidad de memoria direccionable = 2N

Donde: N= Nmero de lneas del bus de direccin. Adems, por general las lneas de direccin son empleadas tambin para direccionar los puertos de E/S. Las lneas de control se utilizan para controlar el acceso y el uso de los datos y las lneas de direccin. Puesto que los datos y las lneas de direccin se comparten por todos los componentes, debe existir un medio para controlar su uso. Las seales de control transmiten tanto el comando como la informacin de temporizacin entre mdulos del sistema. Las seales de temporizacin indican la validez de los datos y de la informacin de direccin. Las seales de comando especifican las operaciones a efectuarse. Es comn que las lneas de control incluyan:

Lectura de memoria: Causa que se coloquen en el bus los datos de la localidad direccionada. Escritura a E/S: Causa que los datos que estn en el bus salgan hacia el puerto de E/S direccionando. Lectura de E/S: Causa que se coloquen en el bus los datos del puerto de E/S direccionar. Solicitud de interrupcin: Indica que una interrupcin esta pendiente. Reloj: Se utiliza para sincronizar operaciones. Reinicializar: Inicializa todos los mdulos.

En el aspecto fsico, en bus del sistema es un nmero de conductores elctricos BUS paralelos. Estos conductores son lneas de metal grabadas en una tarjeta o tablero ( tarjeta con circuito impreso).
CPU

El bus se extiende a travs de todos los componentes del sistema, cada uno de los cuales se conecta a algunos o todas las lneas del bus. Un arreglo fsico muy comn se describe en la figura 1.3. MEMORIA

E/S
6

Figura 1.3. Realizacin fsica tpica de una arquitectura de bus. 1.3.2.- Tipos de buses. Las lneas de buses pueden separarse en dos tipos genricos: dedicadas y multiplexadas. Una lnea de bus dedicada se asigna permanentemente ya sea a una funcin o a un subconjunto fsico de componentes de la computadora. Un ejemplo de dedicacin funcional es el uso de lneas de direccin y de datos separados dedicados, lo cual es comn para muchos buses. Sin embargo, la informacin de datos y de direccin puede transmitirse sobre el mismo conjunto de lneas usando una lnea de control de direccin valida. A este mtodo de usar las mismas lneas para mltiples propsitos se le conoce como multiplexeo en tiempo. La ventaja del multiplexeo en tiempo es el uso de muy pocas lneas, lo cul ahorra espacio y, casi siempre, costo. La desventaja es que se necesita circuitera ms compleja dentro de cada mdulo. Tambin hay una disminucin potencial en el desempeo ya que ciertos sucesos que comparten las mismas lneas no pueden tener lugar en paralelo. Dedicacin fsica se refiere al uso de mltiples buses, cada uno de los cules conecta solo un subconjunto de mdulos. Un ejemplo caracterstico es el uso de un bus de E S para interconectar todos los mdulos de E S; este bus se conecta al bus principal por medio de algn tipo de mdulo adaptador de E S. La ventaja potencial de la dedicacin fsica es un rendimiento alto, debido a que hay menos contencin de bus. Una desventaja, sin embargo, es el incremento en el tamao y costo del sistema. Tabla 1.1. Elementos de diseo de buses.
7

Tipo Dedicado Multiplexado Mtodo de arbitraje Centralizado Distribuido Temporizacin Sncrona Asncrona

Anchura del bus Direccin Datos Tipo de transferencia de datos Lectura Escritura Leer modificar escribir Leer despus escribir Bloque

Mtodo de arbitraje. En todos, excepto en los sistemas demasiado simples, ms de un mdulo podra necesitar control, del bus. Por ejemplo, un mdulo de E S puede necesitar leer o escribir directo a memoria, sin enviar los datos a la CPU. Puesto que solo una unidad a la vez puede transmitir con xito sobre el bus, se necesita algn mtodo de arbitraje. Los diversos mtodos pueden clasificarse como centralizados o distribuidos. En un esquema centralizado, un solo dispositivo de hardware, al que se hace referencia como controlador del bus o rbitro, es responsable de asignar tiempo en el bus. El dispositivo puede ser un mdulo separado o parte de la CPU. En un esquema distribuido, no hay un controlador central. En su lugar, cada mdulo contiene lgica de control de acceso y los mdulos actan juntos para compartir el bus. Con ambos mtodos de arbitraje, el propsito es designar a un dispositivo como maestro (o amo), ya sea la CPU o un mdulo de E S. Entonces, el maestro puede iniciar una transferencia de datos (lectura o escritura, por ejemplo) con algn otro dispositivo, el cul acta como esclavo para ste intercambio en particular. Temporizacin. La temporizacin se refiere a la forma en la que se coordinan los eventos en el bus. Con la temporizacin sncrona, la ocurrencia de los eventos en el bus est determinada por un reloj. El bus incluye una lnea de reloj sobre la cul un reloj transmite una secuencia regular de unos y ceros alternados de igual duracin. A una transmisin simple 1 0 se le conoce como un ciclo de reloj o ciclo de bus y define una ranura de tiempo. Todos los otros dispositivos en el bus pueden leer la lnea de reloj y, por consiguiente, todos los eventos inician al principio de un ciclo de reloj. Otras seales de bus pueden cambiar en el flanco de subida de la seal de reloj (con una ligera reaccin de retrazo). Con una temporizacin asncrona, la sucesin de un evento en un bus sigue y depende de la ocurrencia de un evento previo. La temporizacin sncrona es ms sencilla para implantar y probar. Sin embargo, es menos flexible que la temporizacin asncrona. Como todos los dispositivos en un bus
8

sncrono estn sujetos a una frecuencia de reloj fija, el sistema no puede tomar ventaja de avances en el desempeo del dispositivo. Con la temporizacin asncrona, una mezcla de dispositivos lentos y rpidos puede compartir un bus, usando una tecnologa antigua y nueva. Anchura del bus. La anchura del bus de datos tiene un impacto en el desempeo del sistema: entre ms amplio sea, mayor ser el nmero de bits que se transfieran a la vez. La anchura del bus de direccin tiene un impacto en la capacidad del sistema: entre ms amplio sea, ms grande ser el rango de localidades que puedan ser referenciadas. Tipos de transferencia de datos. Todos los buses soportan transferencias tanto de escritura (maestro a esclavo) como de lectura (esclavo a maestro). En el caso de un bus multiplexado de direccin datos, primero se utiliza el bus para especificar la direccin y despus para la transferencia de datos. Para una operacin de lectura, hay por lo general una espera mientras el esclavo est buscando los datos para colocarlos en el bus. Para una lectura o escritura, tambin puede haber un retraso si es necesario pasar por el arbitraje a fin de ganar el control del bus para el resto de la operacin (por ejemplo, apoderarse del bus para solicitar una lectura o una escritura, despus apoderarse l otra vez para llevar a cabo una lectura o escritura). En el caso de buses dedicados de direccin y de datos, la direccin se coloca en el bus de direccin y permanece ah mientras que los datos se colocan en el bus de datos. Para una operacin de escritura, el maestro pone los datos en el bus de datos tan pronto como la direccin se ha estabilizado y el esclavo ha tenido la oportunidad de reconocer su direccin. Para una operacin de lectura, el esclavo pone los datos sobre el bus de datos tan pronto como ha reconocido su direccin y ha buscado los datos. Tambin existen varias combinaciones de operaciones que algunos buses permiten. Una operacin de lectura modificar escritura es tan slo una lectura seguida de inmediato por una escritura a la misma direccin. La direccin slo se emite una vez al principio de la operacin. Toda la operacin como un todo es indivisible para prevenir el acceso de otros maestros potenciales de bus al elemento de datos. El propsito principal de esta capacidad es el proteger recursos de memoria compartida en un sistema de multiprogramacin. Lectura despus escritura es una operacin indivisible que consiste en una escritura seguida de inmediato por una lectura de la misma direccin. La operacin de lectura bien puede ejecutarse para propsitos de cualquier verificacin. Algunos sistemas de bus tambin soportan la transferencia de un bloque de datos. En este caso, un ciclo de direccin es seguido por n ciclos de datos. El primer tem de los

datos se transfiere a o desde la direccin especificada; los tems de datos restantes son transferidos a o desde direcciones subsecuentes.

1.4 La memoria.
La memoria es aquella parte del sistema computacional que se utiliza para el almacenamiento y la recuperacin subsiguiente de datos e instrucciones.

1.4.1.- Caractersticas de los sistemas de memoria. El tema de la memoria de la computadora se hace ms manejable si clasificamos los sistemas de memoria de acuerdo con sus caractersticas clave. Las ms importantes se listan en la tabla 1.2. Tabla 1.2. Caractersticas de los sistemas de memoria. Ubicacin CPU Interna (principal) Externa (secundaria) Capacidad Tamao de la palabra Numero de palabras Unidad de Transferencia Palabra Bloque Desempeo. Tiempo de acceso. Tiempo de ciclo. Razn de transferencia. Tipo Fsico. Semiconductor Superficie magntica. Caractersticas fsicas. Voltil / No voltil Borrable / No borrable

Iniciemos con el aspecto ms visible de la memoria: su localizacin. Hay tanto memoria interna como externa para la computadora. La memoria interna se considera equivalente con frecuencia a la memoria principal. La memoria externa consiste en dispositivos perifricos de almacenamiento, tales como disco y cinta, que son accesibles a la CPU va controladores de E S. Una caracterstica obvia de la memoria es su capacidad. Para la memoria interna, esto se expresa de manera caracterstica en trminos de bytes (un byte = 8 bits) o palabras. Las longitudes comunes de palabra son 8, 16 y 32 bits. La capacidad de la memoria externa se expresa tpicamente en trminos de bytes. Un concepto relacionado es el de la unidad de transferencia. Para la memoria interna, la unidad de transferencia es igual al nmero de lneas de datos dentro y fuera del
10

mdulo de memoria. Esto es con frecuencia igual a la longitud de palabra, pero puede no ser as. Para esclarecer ste punto, considere los tres conceptos relacionados con la memoria interna:

Palabra: Es la unidad natural de organizacin de la memoria. El tamao de la palabra es casi siempre igual al nmero de bits que se utilizan para representar un nmero y para la longitud de instruccin. Unidades direccionables: En varios sistemas, la unidad direccionable es la palabra. Sin embargo algunos sistemas permiten el direccionamiento a nivel byte. De cualquier modo, la relacin entre la longitud A de una direccin y el nmero N de unidades direccionables es 2A = N. Unidad de transferencia: Para la memoria principal, ste es el nmero de bits que se leen de o se escriben en la memoria en una sola vez. La unidad de transferencia no necesita ser igual a una palabra o una unidad direccionable. Para la memoria externa, los datos se transfieren a menudo en unidades mucho ms grandes que una palabra, se habla entonces de bloques.

Una de las distinciones ms agudas entre tipos de memoria es el mtodo de acceso a las unidades de datos. Pueden distinguirse tres tipos:

Acceso Secuencial: La memoria est organizada en unidades de datos, llamadas registros. El acceso debe hacerse en una secuencias lineal especfica. Informacin de direccionamiento almacenada se utiliza para separar los registros y auxiliar en el proceso de recuperacin. Se utiliza un mecanismo compartido de lectura escritura, y este debe ser motivo de su posicin actual a la posicin deseada, pasando y desechando cada registro intermedio. De ste modo, el tiempo para accesar un registro arbitrario es altamente variable. Las unidades de cinta, son de acceso secuencial. Acceso Directo: Al igual que en el acceso secuencial, el acceso directo implica un mecanismo compartido de lectura escritura. Sin embargo, los bloques o registros individuales tienen una direccin nica que se basa en la localizacin fsica. De nuevo, el tiempo de acceso, es variable. Las unidades de disco, son de acceso directo.

Acceso Aleatorio: Cada localidad direccionable en la memoria tiene un mecanismo nico de direccionamiento, interalambrado fsicamente. El tiempo para accesar una localidad dada es independiente de la secuencia de accesos anteriores y es constante. As, cualquier localidad puede ser seleccionada de manera aleatoria y accesarse y direccionarse en forma directa. Los sistemas de memoria principal son de acceso aleatorio. Desde el punto de vista del usuario, las dos caractersticas ms importantes de la memoria son capacidad y desempeo. Se usan tres parmetros de desempeo:

11

Tiempo de acceso: Para la memoria de acceso aleatorio, es el tiempo que le toma el efectuar una operacin de lectura o escritura, es decir, el tiempo desde el instante en que una direccin se presenta a la memoria hasta el instante en que se han almacenado los datos o estn disponibles para su uso. Para la memoria de acceso no aleatorio, el tiempo de acceso es el tiempo que le lleva el colocar al mecanismo de lectura escritura en la localidad deseada. Tiempo del ciclo de memoria: ste concepto se aplica primeramente a la memoria de acceso aleatorio y consiste en el tiempo de acceso ms cualquier tiempo adicional que se necesita , antes de que comience un segundo acceso. Razn de transferencia: sta es la razn a la cul pueden transferirse datos hacia o desde una unidad de memoria. Para la memoria de acceso aleatorio, es igual a 1 / (tiempo de ciclo). Para la memoria de acceso no aleatorio, se mantiene la siguiente relacin: TN = TA + (N/R)

Donde: TN = Tiempo promedio para leer o escribir N bits. TA = Tiempo promedio de acceso. N = Nmero de bits. R = Razn de transferencia, en bits por segundo (bps). Una variedad de tipos fsicos de memoria se han empleado. Los dos ms comunes en la actualidad, son la memoria de semiconductor, que utiliza la tecnologa LSI o VLSI, y la memoria de superficie magntica, que se utiliza para el disco y la cinta. Varias caractersticas fsicas de almacenamiento de datos son importantes. En una memoria voltil, la informacin decae en forma natural o se pierde cuando la potencia elctrica se apaga. En una memoria no voltil, la informacin una vez registrada permanece sin deterioro hasta que se cambia de manera deliberada. No se necesita potencia elctrica para retener la informacin. Las memorias de superficie magntica son no voltiles. La memoria de semiconductor puede ser voltil o no voltil. La memoria no borrable no puede ser alterada, excepto mediante la destruccin de la unidad de almacenamiento. La memoria de semiconductor de este tipo se conoce como memoria de solo lectura (ROM, read only memory). Por necesidad, una memoria prctica no borrable tambin debe ser no voltil. Para la memoria de acceso aleatorio, la organizacin es un asunto clave de diseo. Por organizacin se da a entender el arreglo fsico de los bits para formar palabras. 1.4.2.- Memoria principal de semiconductor. Tipos de memoria de semiconductor de acceso aleatorio.
12

Todos los tipos de memoria que se estudiarn son de acceso aleatorio. Es decir, las palabras individuales de la memoria se accesan en forma directa por medio de la lgica de direccionamiento interalambrada. La tabla 1.3 lista los principales tipos de memoria de semiconductor. l ms comn se conoce como memoria de acceso aleatoria (RAM, Random Access Memory), Esto es, claro esta, un error en el uso del trmino, pues todos los tipos enlistados son de acceso aleatorio. Una caracterstica que distingue a la RAM es que permite tanto leer desde la memoria como escribir con facilidad y rapidez informacin nueva en la memoria. Tanto la lectura como la escritura se logran mediante el uso de seales elctricas. La otra caracterstica distintiva de la RAM es que es voltil. Una RAM debe contar con un suministro de energa constante. Si el suministro de energa se interrumpe, los datos se pierden. Por ello, la RAM solo se puede usar como medio de almacenamiento temporal. La tecnologa de la RAM se ha dividido en dos: esttica y dinmica. Una RAM dinmica se compone de celdas que almacenan datos bajo la forma de cargas en capacitores. La presencia o ausencia de carga en un capacitor se interpreta como un 1 o un 0 binario. Como los capacitores tienen una tendencia natural a descargarse, las RAM dinmicas necesitan refrescado de cargas peridico para actualizar el almacenamiento de datos. En una RAM esttica, los valores binarios se almacenan al usar configuraciones con compuertas lgicas (flip flops). Una RAM esttica alojar los datos, siempre y cuando se le suministre energa. La RAM esttica y dinmica son voltiles. Una celda de memoria dinmica es ms simple y por ello ms pequea que una celda de memoria esttica. Por eso, una RAM dinmica es ms densa (celdas ms pequeas = ms celdas por unidad de rea) y menos costosa que la RAM esttica correspondiente. Por otra parte, la RAM dinmica requiere el apoyo de circuitos de refrescado. Por ltimo, las RAM estticas, en general, son en cierta forma ms veloces que las dinmicas.

Existen varios tipos de chips de RAM dinmica. El tipo ms antiguo que continua en uso es la DRAM FPM. (Modo de pgina rpida, Fast Page Mode) internamente, la organizacin es una matriz de bits; el hardware presenta una direccin de rengln y luego recorre las direcciones de columna. La DRAM FPM esta siendo reemplazada gradualmente por la DRAM EDO (salida de datos extendida, Extended Data Output), que permite iniciar una segunda referencia a la memoria antes de que la anterior se haya completado.

13

Este sencillo uso de conductos nos hace que una sola referencia a la memoria sea ms rpida, pero si mejora el ancho de banda de la memoria, que produce las palabras por segundo.

Tanto los chips FPM como los EDO son asncronos, lo que significa que las lneas de direccin y de datos no estn controladas por un mismo reloj. En contraste, la SDRAM (DRAM sincrnica) es un hbrido de RAM esttica y dinmica y es controlado por un solo reloj sincrnico.

La SDRAM se usa a menudo en las caches grandes y podra ser la tecnologa preferida para las memorias principales en el futuro.

Tabla 1.3. Tipos de Memorias de Semiconductor. Tipo de Memoria Memoria de acceso Aleatorio (RAM) Memoria de solo Lectura /ROM ROM Programable (PROM) ROM Programable (EPROM) Memoria Flash PROM borrable Elctricamente (EEPROM) Memoria de Lectura Principalmente Categora Memoria de Lectura/ Escritura Memoria de solo lectura Borrado Elctrico a Nivel byte No es Posible Luz UV a Nivel chip Electrnico nivel bloque Elctrico a nivel byte De Manera Electrnica No Voltil Mecanismo de Volatibilidad Escritura De manera Voltil Electrnica Mscaras

En contraposicin de la RAM, est la memoria de solo lectura (ROM, Read Only Memory). Como su nombre lo sugiere, una ROM contiene un patrn permanente de datos que no se pueden cambiar. Aunque es posible leer una ROM, en su operacin normal, no es posible escribir nuevos datos en ella.
14

Los datos de una ROM se insertan durante su fabricacin, bsicamente, exponiendo un material fotosensible a travs de una mscara que contiene un patrn de bits deseado. La nica forma de modificar el programa de una ROM es cambiar el chip. Las ROM son mucho ms econmicas que las RAM, cuando se producen en grandes cantidades, pues as el costo de elaborar una mscara se diluye. Sin embargo, estas memorias son inflexibles, por que no pueden modificarse despus de su fabricacin, no hay espacio para errores, si un bit es incorrecto, todo el lote de la ROM se debe desechar. Una alternativa menos cara es usar la PROM ( ROM Programable). Una PROM es parecida a una ROM, excepto que puede programarse (una vez) en el campo, lo que elimina el retraso por surtido. Muchas PROM contienen una matriz de diminutos fusibles. Un fusible especfico puede quemarse seleccionando su rengln y columna y aplicando despus un voltaje alto a una terminal especial del chip. Al igual que la ROM, la PROM no es voltil y solo se puede escribir en ella una vez. En la PROM el proceso de escritura se ejecuta de manera elctrica y lo puede llevar a cabo un consumidor o un distribuidor despus de la fabricacin del chip original. Se requiere equipo especial en el proceso de escritura o de programacin. Las PROM proporcionan flexibilidad as como ventajas. La ROM es conveniente para altos volmenes de produccin.

Otra variante de la memoria de solo lectura es la memoria de lectura principalmente, que es til en aplicaciones donde las operaciones de lectura son mucho ms frecuentes que las de escritura y en las que se requiere almacenamiento no voltil. Hay tres formas comunes de memoria de lectura principalmente: EPROM, EEPROM y memoria flash.

En la memoria de solo lectura programable y borrable en forma ptica (EPROM, erasable programmable read only memory) se lee y se escribe de manera elctrica, al igual que la PROM. Sin embargo, antes de efectuar una operacin de escritura, todas las celdas de almacenamiento se deben borrar hasta alcanzar el mismo estado inicial; para ello, se expone el circuito integrado (que posee una ventana de vidrio) a una radiacin ultravioleta. ste proceso de borrado se puede realizar varias veces, cada borrado quiz tarde algunos minutos en llevarse a cabo. As, la EPROM se puede alterar en mltiples ocasiones y, al igual que la ROM y la PROM, almacena los datos de manera indefinida. Para cantidades comparables de almacenamiento, la EPROM resulta m cara que la PROM; pero tiene la ventaja de la capacidad de actualizacin mltiple. La memoria de solo lectura programable y borrable elctricamente (EEPROM, electrically erasable programmable read only memory). Es unan memoria de lectura principalmente en la cul se puede escribir en cualquier momento, sin tener que borrar el
15

contenido anterior; solo el byte o los bytes diseccionados se actualizan. La EEPROM es ms cara y menos densa que la EPROM, por lo que soporta menos bits por chip. Una de las formas ms reciente de memoria de semiconductor es la memoria flash (denominada as por la velocidad a la que se puede volver a programar). Introducida por primera vez a principios de la dcada de los ochentas, la memoria flash ocupa un sitio intermedio entre la EPROM y la EEPROM, tanto en costo como en funcionalidad. Al igual que la EEPROM, la memoria flash usa una tecnologa de borrado elctrico. Una memoria flash completa se puede borrar en algunos segundos, por lo que es mucho ms veloz que la EEPROM. Adems , es posible borrar bloques de memoria en vez de un chip completo. Sin embargo, la memoria flash no proporciona borrado a nivel de byte. Como la EPROM, la memoria flash slo usa un transistor por bit y por ello logra la densidad alta (en comparacin con la EEPROM) de la EPROM.

Organizacin. El elemento bsico de una memoria semiconductora es la celda de memoria. Aunque se utilizan diversas tecnologas electrnicas, todas las celdas de memoria comparten ciertas propiedades:

Presentan dos estados estables (o semi estables), que pueden emplearse para representar el 1 y el 0 binarios.

Puede escribirse en ellas (al menos una vez) para fijar su contenido.

Pueden leerse para detectar su estado.

La figura 1.4. describe el funcionamiento de una celda de memoria. Lo ms comn es que la celda tenga tres terminales para transportar seales elctricas. La terminal de seleccin, como su nombre lo indica, selecciona la celda para la operacin de escritura o de lectura. La terminal de control indica el tipo de operacin. Para la escritura, la tercera Terminal proporciona la seal que fija el estado de la celda a 1 o a 0. En una lectura, la tercera terminal se utiliza como salida del estado de la celda. Los detalles sobre estructura interna, funcionamiento y temporizacin de la celda de memoria dependen de cada tecnologa especfica de circuitos integrados. Hasta ste momento, daremos por entendido que las celdas individuales pueden seleccionarse para operaciones de lectura y de escritura.

16

Figura 1.4. Funcionamiento de una celda de memoria.

17

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo II. El P 8086.

18

2.1 Historia de los microprocesadores Intel.


Intel inici sus operaciones siendo un fabricante de memoria para computadoras. En 1971 fue la primera compaa en lograr la integracin de suficientes transistores como para vender un microprocesador programable completo con un juego de instrucciones de 4 bits, que se volvera muy comn en calculadoras de bolsillo: El Intel 4004. Al 4004 lo sucedieron el 8008 en 1972 y en 1974 el 8080, cada vez logrando mayor capacidad. En 1978, Intel comenz a comercializar el procesador 8086, un ambicioso chip de 16 bits potencialmente capaz de ser el corazn de computadoras de propsito mltiple. El 8086 se comercializ en versiones desde 5 y hasta 10MHz. IBM adopt al hermano menor del 8086 (el 8088, un procesador con un bus de datos interno de 16 bits, pero con el bus externo de 8 bits, lo que permita aprovechar diseos y circuitos para sistemas de 8 bits) para basarse en l y lanzar la lnea de computadoras ms exitosa de la historia: el IBM PC (1981) y el IBM PC/XT (eXtended Technology) (1983). El xito de esta serie fue tal que a partir de ese momento, todos los CPUs de Intel mantuvieron una estricta poltica de compatibilidad hacia atrs - Todo CPU fabricado por Intel desde ese momento y hasta el 2001 es capaz de ejecutar cdigo compilado para cualquiera de sus predecesores. Al 8086 lo sucedi el 80286 en 1982 (en el cual se bas la IBM PC/AT, 1985). Este chip, de 24/16 bits, implement el modo protegido de ejecucin, sentando las bases para la aparicin de los verdaderos sistemas multitarea de escritorio. El 80286 apareci a 6MHz, y a lo largo de los aos lleg hasta los 12MHz. Hubo varios sistemas operativos que aprovecharon su modo protegido para ofrecer multitarea real, tales como las primeras versiones de OS/2, o Xenix. Pero el verdadero boom de la multitarea no lleg hasta el nacimiento del 80386 (1985) - Un avance tan fuerte que hoy en da es comn referirse como i386 a toda la lnea de procesadores que le siguieron (tambin es comn la referencia IA32, Intel Arquitecture of 32 bits). El 386 fue el primer procesador de Intel de 32 bits, y -magnficas noticias para los desarrolladores- utilizarlo para aplicaciones de multitarea sera ya mucho ms fcil de lo que lo fue con el 80286. El 80386 maneja velocidades de 16 a 33MHz. El 80486 apareci en 1989. Fue un cambio relativamente menor frente al 80386 Hasta su aparicin, todas las computadoras PC tenan la opcin de comprar un -bastante caro- coprocesador numrico - para las XT, el 8087. Para las AT, el 80287. Para las 386, el 80387. A partir del 80486, el coprocesador numrico, as como la memoria cach fueron integrados al CPU, trayendo como resultado un gran aumento en la velocidad percibida por los usuarios, sin cambios arquitectnicos de fondo importantes. El 486 existe en versiones desde 25 y hasta 100MHz.

19

En 1993 apareci el Pentium. Por qu ya no se llam 80586? Porque muchas empresas competidoras de Intel comenzaron a producir CPUs con el mismo nombre que los de Intel. Ante el fallo de que un nmero no puede ser tomado como marca registrada, a partir de entonces los procesadores llevan un nombre propio. Este procesador incorporaba bastantes novedades, entre ellas un coprocesador muy mejorado y un doble sistema de prefetch, lo que le permita en ciertas situaciones ejecutar dos instrucciones simultneas, con el consiguiente aumento de rendimiento (desgraciadamente, sto solo era posible bajo ciertas combinaciones muy estrictas de instrucciones, con lo que el aumento de rendimiento slo era apreciable en aplicaciones compiladas especficamente para l). El Pentium lleg desde los 60 hasta los 225MHz.

Poco despus hizo su aparicin el Pentium Pro, una versin orientada a servidores que inclua la cach de segundo nivel en el mismo encapsulado que el procesador. Desgraciadamente su elevado precio supuso un freno a su expansin.

Desde entonces, la tendencia al aparecer el Pentium II (1997), Pentium III (1999) y Pentium 4 (2000) ha sido la integracin de ms componentes, la adicin de instrucciones especficas de multimedia y a elevar la velocidad de reloj tanto como sea posible. El Pentium II lleg desde 200 hasta 450MHz. El Pentium III desde 550 a 1200 (1.2GHz). El Pentium 4 debut a 1.3GHz y actualmente (agosto del 2003) llega ya a los 3.2GHz.

Paralelamente al Pentium II dos familias de CPUs fueron anunciadas: El Celeron, que es similar a los Pentium pero con menos memoria cach y, por consiguiente, menor precio y velocidad, y el Xeon, orientado a servidores, con ms memoria cach - y claro est, mucho mayor costo.

En 2001, tras una muy larga etapa de desarrollo, fue anunciado el Itanium. Este es el primer CPU desde 1978 que produce Intel que no es compatible con la arquitectura x86 esta nueva arquitectura de 64 bits es denominada IA64. Esta nueva arquitectura no ha tenido el efecto que se vaticinaba en un principio, en parte por la carencia de software listo para ser utilizado y en parte porque la velocidad es ligeramente menor a la de la arquitectura i386. Hoy en da, la competencia se pone ms difcil an para Intel, pues AMD -compaa rival de Intel- anunci la arquitectura x86-64, que es una extensin a la i386 (compatible con todo el software ya existente) permitindole ejecutar cdigo de 64 bits.

20

2.2 Caractersticas del microprocesador 8086.


Capacidad de direccionamiento de 1 Mb de memoria. Arquitectura diseada para operar con un lenguaje ensamblador muy potente y operar con lenguajes de alto nivel. Contiene 14 registros de 16 bits con operacin simtrica. Tiene 8 muy comunes modos de direccionamiento. Operacin a nivel de bit, byte, word y block. Operaciones aritmticas binarias o decimales de 8 y 16 bits con signo o sin signo, incluyendo multiplicaciones y divisiones. Rango de frecuencia de reloj. 5 Mhz para el 8086. 8 Mhz para el 8086 2 10 Mhz para el 8086 1 Interfase compatible con sistemas multibus.

2.3.- Operacin general.


Las funciones internas del microprocesador 8086 estas divididas lgicamente en dos unidades de procesamiento. La primera es la Unidad de Interfase del Bus (BIU) y la segunda es la Unidad de Ejecucin (EU) como se muestra en la figura 2.1. Estas unidades pueden interactuar directamente pero en la mayor parte de la ejecucin operan como microprocesadores separados y asncronos. La unidad de Interfase del Bus provee las funciones relacionadas con la bsqueda de instrucciones y de cola, bsqueda de operandos, almacenamiento y reubicacin de direcciones. Esta unidad tambin provee las seales bsicas para el bus de control. El mecanismo de colocacin de instrucciones en la fila de espera o cola de instrucciones (QUEUE) permite que la unidad de interfase del bus utilice la memoria muy eficientemente. En cualquier instante hay espacio cuando menos para dos bytes en la fila de espera.

21

La unidad de interfase del bus intenta traer una palabra en el ciclo de bsqueda de la memoria, esto reduce gradualmente el tiempo muerto en el bus de memoria. La cola de instrucciones acta como buffer de instrucciones segn como lo requiera. La Unidad de Ejecucin, recibe instrucciones prebuscadas por la BIU y provee un direccionado de operandos relocalizado para la BIU. Los operandos en memoria son pasados a travs de la BIU para procesarlas por el EU, la cual pasa el resultado a la BIU para su almacenamiento.

Figura 2.1. Diagrama de bloques del microprocesador 8086.

22

2.4.- Requisitos de suministro de corriente.


Los microprocesadores 8086 y 8088 requieren de un suministro de voltaje de +5 Volts con una tolerancia de 10 %. El 8086 tiene un consumo mximo de corriente de 360 mA, mientras que el 8088 usa un mximo de 340 mA. Ambos microprocesadores funcionan en temperaturas ambientales entre 0 C y alrededor de 82 C ( 32 a 180 F respectivamente). Este rango de operacin no es lo suficientemente amplio como para permitir su uso en exteriores durante el invierno o aun en verano, pero estn disponibles las versiones de los microprocesadores 8086 y 8088 de rango de temperatura extendido. Tambin existe una versin CMOS, la cual requiere una corriente muy baja de alimentacin y posee un intervalo de temperatura extendido. El 80C88 y 80C86 son versiones CMOS que requieren solamente 10 mA de corriente de alimentacin y operan bajo condiciones extremas de temperatura de 40 C hasta 107 C.

2.5.- Caractersticas de CD.


Es imposible conectar algo a las terminales del microprocesador sin saber cual es la corriente de entrada requerida en una terminal de entrada y cual es la capacidad de corriente de salida en una terminal de salida. Este conocimiento permite al diseador seleccionar los componentes de interfase adecuados para el microprocesador sin miedo de daar algo. Caractersticas de la entrada.- Las caractersticas de entrada de estos microprocesadores son compatibles con todos los componentes estndar lgicos disponibles actualmente. Los valores de corriente de entrada son muy bajos porque las entradas son las conexiones de compuerta de transistores MOSFET y representan solamente corrientes de fuga. Caractersticas de la salida.- El nivel de voltaje 1 lgico de los 8086 y 8088 es compatible con el de la mayor parte de las familias lgicas estndar, pero el nivel lgico 0 no lo es. Los circuitos lgicos estndar tienen un voltaje 0 lgico mximo de 0.4 V y en los 8086/8088 es un mximo de 0.45 V. Por tanto, hay una diferencia de 0.05 V. Esta diferencia reduce la inmunidad al ruido de un nivel estndar de 400 a 350 mV (0.8 V 0.45 V). (La inmunidad al ruido es la diferencia entre los valores de salida y entrada correspondientes a 0 lgico). Dicha inmunidad al ruido reducida puede causar problemas con conexiones de cables largos o con demasiadas cargas. Por ello se recomienda no conectar ms de 10 cargas de cualquier tipo o combinacin de tipos a una terminal de salida sin una compuerta de reforzamiento (buffer). Si este factor de carga fuera excedido, el ruido empezara a tener efectos en problemas de temporizacin.

23

La mejor eleccin en tipos de componentes para la conexin a una terminal de salida de estos microprocesadores es un componente de la familia lgica LS, 74ALS, 74AHC. Se recomienda que si requiere un abanico de salida de ms de 10 cargas unitarias, el sistema debe contener un buffer.

2.6 Distribucin de terminales de los microprocesadores 8086 / 8088.


En la figura 2.2 se ilustran los diagramas de terminales de los microprocesadores 8086 y 8088. Al observar con cuidado, se ver que son pocas las diferencias diferencias entre estos dos microprocesadores, ambos se presenta en encapsulados de 40 terminales en doble lnea (DIP).

Figura 2.2. Distribucin de terminales de los microprocesadores (a) 8086, (b) 8088. En la figura 2.2 se ilustran los diagramas de terminales de los microprocesadores 8086 y 8088. Al observar con cuidado, se ver que son pocas las diferencias diferencias entre estos dos microprocesadores, ambos se presenta en encapsulados de 40 terminales en doble lnea (DIP). El 8086 es un microprocesador con un canal de datos externos de 16 bits y el microprocesador 8088 tiene un canal de datos externos de 8 bits. Como se ilustra, el 8086 tiene las terminales AD0-AD15, mientras que el 8088 tiene las terminales AD0-AD7, por lo que el canal de datos es la diferencia ms importante entre estos microprocesadores.

24

Pero hay una pequea diferencia en una de las seales de control. El 8086 tiene una terminal mientras que el 8088 tiene una terminal . Otra diferencia en sus terminales aparece en la terminal 34 de ambos circuitos integrados, en el 8088 es la terminal , mientras que en el 8086 es / S7.

2.7.- Organizacin de la memoria del P 8086.


El microprocesador provee 20 bits para direccionamiento a memoria. La memoria est organizada como un arreglo lineal de hasta 1 milln de bytes, diseccionndose a partir de la localidad OOOOOH hasta la localidad FFFFFH, a esto se le conoce como distribucin lgica. La memoria adems est dividida lgicamente en segmentos llamados: segmento de cdigo, segmento de datos, segmento extra datos y segmentos de stack; estos segmentos son de hasta 64 Kb cada uno. El inicio de cada uno de estos segmentos es, por lo comn, un lmite de prrafo (cualquier localidad de memoria divisible entre (16)10 o (10)16). La distribucin lgica de la memoria se presenta en la figura 2.3.

Figura 2.3. Distribucin lgica de la memoria del P 8086.

25

Fsicamente, la memoria est organizada en bancos, cuya cantidad depende directamente del nmero de lneas del bus de datos externo del microprocesador (por cada 8 lneas de datos externos, existe un banco de memoria). Entonces, para el microprocesador 8088, que tiene 8 lneas de datos externos, se tiene un solo banco de memoria, por lo que la organizacin lgica y fsica de la memoria en dicho microprocesador es prcticamente la misma. En el caso del 8086, que tiene 16 lneas de datos externas, se tienen dos bancos (cada banco tiene un tamao de 512 Kb): El banco par, tambin llamado banco bajo, que guarda las direcciones de memoria pares y el banco impar, llamado banco alto, que guarda las direcciones impares (ver figura 2.4). El microprocesador provee dos seales de habilitacin y A0 para permitir selectivamente una lectura desde o una escritura dentro de cualquiera de las localidades par o impar, o en ambas. El flujo de instrucciones es buscado desde la memoria como palabras y son direccionadas internamente por el procesador a nivel de byte si es necesario. En la figura 2.4 se muestra la organizacin fsica de la memoria de los microprocesadores 8086, 8088, 80286, 80386 y 80486. Para microprocesadores de 32 lneas de datos externas (80386DX, 80486SX y 80486DX), se tienen cuatro bancos de datos.

Figura 2.4. Sistemas de memoria fsica de diversos microprocesadores Intel.

26

2.8.- Modo mnimo y modo mximo.


Los requerimientos para soporte mnimo y mximo de los sistemas 8086. Son tan diferentes que no pueden trabajar eficientemente con nicamente 40 terminales definidas. En consecuencia, el 8086 es equipado con una terminal de opcin , la cul define la configuracin del sistema. La definicin de un cierto subconjunto de terminales depende de la condicin de la terminal de opcin. Cuando la terminal es conectada a tierra, el 8086 trabaja con las terminales 24 a la 31 en modo mximo. Un controlador del bus interpreta el estado de la informacin codificado con S0, S1, y S2 para generar un tiempo en el bus de seales de control compatibles con la arquitectura del multibus. Cuando la terminal es conectada a VCC, el 8086 genera seales de control de bus por si mismo, usando las terminales 24 a la 31. Tabla 2.1. Tabla que muestra los segmentos de memoria y los registros de segmento. Segmento de memoria Instrucciones Registro de segmento seleccionado CODIGO (CS) Stack (SS) Regla de seleccin usada segn la referencia Automticamente con todas las instrucciones prebuscadas. Todos los pushes and pops en el stack. Referencia a memoria relativa a BP, excepto referencias a memoria de datos. Referencia a datos cuando: es relativo al stack, destino de operaciones de cadena. Destino de operaciones de cadena.

Stack

Datos locales Datos Externos (Globales)

DATA (DS) EXTRA (ES)

Todas las referencias a memoria son hechas en base a un direccionamiento relativo en los registros de segmento de alta velocidad. El registro de segmento a ser seleccionado es escogido automticamente de acuerdo a las reglas de la tabla 2.1.

27

2.9.- Direccionamiento de localidades de memoria.


Dependiendo del modelo, el procesador puede acceder uno o ms bytes de memoria a la vez. Considere l nmero decimal 1,025. La representacin hexadecimal de sta cifra, 0401H, requiere de 2 bytes (o una palabra) de memoria. Consta de un byte de orden alto (ms significativo), 04, y un byte de orden bajo (menos significativo), 01. El sistema almacena en memoria estos bytes en secuencia inversa de bytes: el byte de orden bajo en la direccin baja de memoria y el byte de orden alto en la direccin alta de memoria. Por ejemplo, el procesador transferira 0401H de un registro a las localidades de memoria 5612 y 5613 como: 5611 XX 5612 01 5613 04 5614 XX

Figura 2.5. Almacenamiento de los datos en la memoria. El procesador espera que los datos numricos en la memoria estn en secuencia inversa de bytes y los procesa de acuerdo con esto. Cuando el procesador recupera la palabra de la memoria, otra vez invierte los bytes, restablecindolos de manera correcta en el registro como 0401H. Aunque sta caracterstica es enteramente automtica, tiene que estar alerta cuando programe y depure programas en lenguaje ensamblador. Al programar el lenguaje ensamblador se tiene que distinguir claramente entre la direccin y los contenidos de una localidad de memoria. En el ejemplo anterior, el contenido de la localidad 5612 es 01 y el contenido de la localidad 5613 es 04.

2.10.- Segmentos y direccionamiento.


Un segmento es un rea especial en un programa que inicia en un lmite de un prrafo, esto es, en una localidad regularmente divisible entre (16)10 o (10)16. Aunque un segmento puede estar ubicado casi en cualquier lugar de la memoria y, en modo real, puede ser hasta de 64K, solo necesita tanto espacio como el programa requiera para su ejecucin. Se puede tener cualquier nmero de segmentos, para direccionar un segmento en particular basta cambiar la direccin en el registro del segmento apropiado. Los tres segmentos principales son los segmentos de cdigo, de datos y de la pila.

28

Segmento de cdigo. El segmento de cdigo (CS) contiene las instrucciones de mquina que son ejecutadas. Por lo comn, la primera instruccin ejecutable est en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecucin del programa. Como su nombre indica, el registro de CS direcciona el segmento de cdigo. Segmento de datos El segmento de datos (DS) contiene datos, constantes y reas de trabajo definidos por el programa. El registro de DS direcciona el segmento de datos. Segmento de pila (Stack). En trminos sencillos, la pila contiene los datos y direcciones que necesita guardar temporalmente o para uso de las llamadas a subrutinas. El registro de segmento de la Pila (SS) direcciona el segmento de la pila.

2.10.1.-Lmites de los segmentos. Los registros de segmentos contienen la direccin inicial de cada segmento. Un segmento inicia en un lmite de prrafo, que es una direccin por lo comn divisible entre (16)10 o (10)16. Suponga que un segmento de datos inicia en la localidad de memoria 045F0H. Ya que en ste y todos los dems casos el ltimo dgito hexadecimal de la derecha es 0, los diseadores de computadoras decidieron que sera innecesario almacenar el dgito mencionado en el registro del segmento. As, 045F0H se almacena como 045FH, con el cero de la derecha sobrentendido. 2.10.2.- Desplazamiento de segmentos. En un programa, todas las localidades de memoria estn referidas a una direccin inicial de segmento. La distancia en bytes desde la direccin del segmento se define como el desplazamiento (offset). Un desplazamiento de dos bytes (16 bits) puede estar en el rango de 0000H hasta FFFFH, o bien, desde 0 hasta 65,535. As, el primer byte del segmento de cdigo tiene un desplazamiento 00, el segundo byte tiene un desplazamiento 01, etc., hasta el desplazamiento 65,535. Para referir cualquier direccin de memoria en un segmento, el procesador combina la direccin del segmento en un registro de segmento con un valor de desplazamiento.

29

En el ejemplo siguiente, el registro DS contiene la direccin inicial del segmento de datos en 045F[0]H y una instruccin hace referencia a una localidad con un desplazamiento de 0032H bytes dentro del segmento de datos. Por tanto, la localidad real de memoria referida por la instruccin es 04622H: Direccin del ssegmento DS: 045F[0]H Desplazamiento: 003 2 H Direccin Real: 0462 2 H

2.11.- Registros.
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. En el P8086 existen 14 registros (todos de 16 bits), como se aprecia en la figura 2.6.

Figura 2.6. Registros del Microprocesador 8086.


30

2.11.1.- 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. Como hemos dicho, un segmento se alinea en un lmite de un prrafo y su direccin en un registro de segmento supone cuatro bits 0 a su derecha. 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 del programa es almacenada en el registro DS. En trminos sencillos, esta direccin, mas un valor de desplazamiento en una instruccin, genera una referencia a la localidad de un byte especfico 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. sta direccin de segmento, ms un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que est siendo direccionada. Registro 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 esta asociada con el registro DI (ndice destino). 2.11.2.- Registro Apuntador de Instrucciones. El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. El IP esta asociado con el registro CS en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que s esta ejecutando actualmente. En el ejemplo siguiente, el registro CS contiene 25A4 [0]H y el IP contiene 412H. Para encontrar la siguiente instruccin que ser ejecutada, el procesador combina las direcciones en CS y el IP. Direccin de segmento en el registro CS: 25A40H Direccin de desplazamiento en IP :+ 412H Direccin de la siguiente instruccin : 25E52H

31

2.11.3.- Registros apuntadores. Los registros SP (apuntador de pila) y BP (apuntador base) estn asociados con el registro SS y permite al sistema accesar datos en el segmento de la pila. Registro SP.- El apuntador de la pila de 16 bits esta asociada con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo preparada en la pila. En el ejemplo siguiente, el registro SS contiene la direccin de segmento 27B3[0]H y el SP, el desplazamiento 312H. Para encontrar la palabra actual que esta siendo procesada en la pila, la computadora combina las direcciones en el SS y el SP. Direccin de segmento en el registro SS: 27B30H Desplazamiento en el registro SP : + 312H Direccin en la pila : 27E42H Registro BP.- El registro BP de 16 bits facilita la referencia de parmetros, los cuales son datos y direcciones transmitidos va la pila.

2.11.4.- Registros de propsito general. Los registros de propsito general AX, BX, CX y DX son los caballos de batalla del sistema, son nicos en el sentido de que se pueden direccionar como una palabra o como una parte de un byte. El byte de la izquierda es la parte alta, y el byte de la derecha es la parte baja. Por ejemplo, el registro CX consta de una parte alta (CH) y una parte baja (CL), y 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 refiere 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 CX.- El CX conocido como el registro contador. Puede contener un valor para controlar l nmero de veces que un ciclo se repite o un valor para corrimiento de bits o rotaciones, hacia la derecha o hacia la izquierda. El CX tambin es usado en muchos clculos.
32

Registro DX.- El DX es conocido como el registro de datos. Algunas operaciones de entrada / salida requieren su uso, y las operaciones de multiplicacin y divisin con cifras grandes suponen al DX y al AX trabajando juntos. 2.11.5.- Registros de 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 para algunas operaciones con cadenas de caracteres. En este contexto, el SI esta asociado con el registro DS. Registro DI.- El registro ndice destino tambin es requerido por algunas operaciones con cadenas de caracteres. En este contexto, DI esta asociado con el registro ES. 2.11.6.- Registro de banderas. Las banderas indican la condicin del microprocesador a la vez que controlan su funcionamiento. En la figura 2.7 se ilustran los registros de todas las versiones de los microprocesadores 8086 a 80486. Se debe tener en cuenta que las banderas son compatibles hacia arriba desde el 8086/8088 hasta el 80486. El 8086-80286 contiene un registro de banderas, FLAG (16 bits) y los 80386-80486 contienen un registro EFLAG (registro de bandera extendido, de 32 bits). Los bits de bandera cambian despus de ejecutar muchas de las instrucciones aritmticas y lgicas. Algunas de las banderas se utilizan para controlar ciertas caractersticas del microprocesador.

Figura 2.7. Registro de banderas para diversos tipos de microprocesadores.

33

De los 16 bits del registro de banderas del microprocesador 8086/8088, nueve son comunes a toda la familia de stos procesadores, y 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 de cuyas instrucciones pueden realizar pruebas para determinar la accin subsecuente. A continuacin aparece una lista con cada bit de bandera, con una breve descripcin de su funcin: C (acarreo).- Indica un acarreo despus de una suma o un prstamo despus de una resta. P(paridad).- Es un cero para una paridad impar y un uno para paridad par. La paridad es un conteo de unos expresado como un nmero par o impar. Por ejemplo, si un nmero contiene 3 bits con uno binario, tiene paridad impar. Si un nmero contiene cero bits con valor uno, se considera que tiene paridad par. A(acarreo auxiliar).- Tiene un acarreo despus de una suma o un prstamo despus de una resta entre las posiciones de los bits 3 y 4 en el resultado. ste indicador muy especializado se prueba con las instrucciones DAA y DAS para ajustar el valor de AL despus de una suma o una resta en BCD. Z(cero).- Indica el resultado de una operacin aritmtica o lgica es cero. Si Z=1, el resultado es cero y si Z=0, el resultado es diferente de cero. S(signo).- Indica el signo aritmtico del resultado despus de una suma o una resta. Si S=1, el resultado es negativo. Si S=0, el resultado es positivo. Se debe tener en cuenta que el valor del bit ms significativo del resultado se coloca en el bit de signo para cualquier instruccin que afecte a las banderas. T(trampa).- Permite la operacin del procesador el modo de un paso, los programas depuradores, como DEBUG, activan esta bandera de manera que puedan avanzar en la ejecucin de una sola instruccin a un tiempo,y as examinar el efecto de esa instruccin sobre los registros y la memoria. I(interrupcin).- Controla el funcionamiento de la terminal de la entrada INTR (interrupcin). Si I=1, se habilita la entrada INTR y si I=0, se deshabilita la entrada INTR. El estado de la bandera I se controla con las instrucciones STI (activar la bandera I) y CLI (desactivar la bandera I). D(direccin).- Controla la seleccin de incremento o decremento automtico de los registros DI o SI durante las instrucciones de cadenas o arreglos. Si D=1 hay decremento automtico en los registros y si D=0 hay incremento automtico. La bandera D se activa con la instruccin STD y se desactiva con la instruccin CLD.

34

OF(sobre flujo).- Es una condicin que ocurre cuando se suman o restan nmeros con signo. Un sobreflujo indica que el resultado ha excedido de la capacidad de la mquina. Para operaciones sin signo, no se toma en cuenta sta bandera. Las banderas ms importantes parea la programacin en ensamblador son O, S, Z y C para operaciones de comparacin y aritmtica, y D para operaciones con cadenas de caracteres.

2.12.- Tipos de programas ejecutables.


El DOS soporta a dos tipos de programas ejecutables: .COM y .EXE. Un programa .COM consta de un segmento de memoria (64Kb) que contiene cdigo, datos, y la pila. Si se necesita un pequeo programa de utilera o un programa residente en memoria (un programa que es instalado permanentemente y esta disponible mientras otros programas estn ejecutndose), se escribe un programa .COM. Un programa .EXE consta de segmentos de cdigo, datos y de la pila separados y es el mtodo usado por la mayora de los programas serios.

2.13.- La pila (stack)


Los programas .COM y .EXE, requieren un rea en el programa reservado como una pila (stack). El propsito de la pila es mantener un espacio para el almacenamiento temporal de direcciones y datos. El DOS define de manera automtica la pila para un programa .COM, mientras que para un programa .EXE se debe definir en forma explcita la pila. Cada elemento de dato en la pila es una palabra (2 bytes). El registro SS como es inicializado por el DOS , contiene la direccin del inicio de la pila. Inicialmente, el SP contiene el tamao de la pila, un valor que apunta al byte que est pasando al final de la pila. La pila difiere de otros segmentos en su mtodo de almacenar los datos: empieza en la localidad ms alta y almacena los datos hacia abajo por la memoria.
.........

SS Direccin del segmento de la pila

SP Tope de la pila

35

La instruccin PUSH (entre otras) disminuye el SP en 2 (hacia abajo), hacia la siguiente palabra almacenada de la pila y coloca (o empuja, push) un valor ah. La instruccin POP (entre otras) regresa el valor de la pila e incrementa el SP en 2 hacia arriba, hacia la siguiente palabra almacenada. El ejemplo siguiente ilustra como meter el contenido de los registros AX y BX a la pila y la subsecuente extraccin de ellos. Suponga que el AX contiene 015AH, el BX contiene 03D2H y el SS contiene 28H (Aqu no nos concierne la direccin en el SS).

1.- Al comienzo, la pila esta vaca se ve as:

.........

SS Direccin del segmento de la pila

SP=28 Tope de la pila

2.- PUSH AX.- Disminuye el SP en 2 (a 26H) y almacena el contenido del AX, 015AH, en la pila. Observe que la operacin invierte la secuencia de bytes almacenados, de modo que 015A se almacena como 5A01:

.........

5A01

SS Direccin del segmento de la pila

SP=26 Tope de la pila

36

3.- PUSH BX.- Disminuye el SP en 2 (a 24H) y almacena el contenido del BX, 03D2H en la pila:
.........

D203

5A01

SS Direccin del segmento de la pila

SP=24 Tope de la pila

4.- POP BX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la enva al registro BX e incrementa el SP en 2 (a 26H). El BX ahora contiene 13D2H, con los bytes correctamente invertidos.
.........

D203

5A01

SS Direccin del segmento de la pila

SP=26 Tope de la pila

5.- POP AX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la enva al registro AX e incrementa el SP en (a 28H). El AX ahora contiene 0154H, con los bytes correctamente invertidos:
.........

D203

5A01

SS Direccin del segmento de la pila

SP=28 Tope de la pila

37

Note que las instrucciones POP son codificadas en secuencia inversa a las instrucciones PUSH. As, en el ejemplo se guardaron AX y BX, pero se sacaron el BX y AX, en ese orden. Adems los valores sacados de la pila aun estn all, aunque el SP ya no apunta a ellos. Siempre debe asegurarse que el programa coordine los valores que guarda en la pila con los valores que saca de ella. Como ste es un requisito directo, un error puede causar que un programa no funcione. Tambin, para un programa EXE se tiene que definir una pila que sea suficientemente grande para contener todos los valores que podran ser guardados en ella.

2.14.- Modos de direccionamiento de datos.


Para explicar los modos de direccionamiento se usar la instruccin MOV ya que es la ms sencilla y flexible; proporciona el principio para la explicacin de los modos de direccionamiento de datos.

MOV operando destino, operando fuente MOV AX, BX Figura 2.8. La instruccin MOV AX, BX, para explicar el sentido del flujo de la informacin.

En la figura 2.8 se muestra la instruccin MOV y define el sentido del flujo de datos. La fuente est a la derecha y el destino a la izquierda, juntos al cdigo de operacin MOV, un cdigo de operacin le indica al microprocesador la operacin que debe ejecutar. El sentido del flujo es, al principio, una confusin porque se supone que las cosas se mueven naturalmente de izquierda a derecha, mientras que en ste caso, se mueven de derecha a izquierda. En una instruccin, siempre hay una coma (,) que separa el destino de la fuente.

38

Los siete modos de direccionamiento ms utilizados son: 1.- Direccionamiento de registros. Transfiere un byte o palabra desde el registro fuente, hasta el registro destino. Ejemplo: la instruccin MOV CX, DX copia el contenido de tamao palabra en el registro DX y lo pasa al registro CX. Es importante que para las instrucciones se utilicen registros que sean de tamao uniforme. Nunca mezcle un registro de 8 bits con uno de 16 bits porque no lo permite el conjunto de instrucciones del 8086. En la tabla 2.2 se muestran algunas versiones de instrucciones MOV entre registros. El nico tipo de instruccin MOV para registro que no se permite, es una instruccin MOV entre registros de segmento. Tambin se debe tener en cuenta que el contenido del registro de segmento de cdigo no se puede cambiar con una instruccin MOV. Tabla 2.2. Ejemplos de instrucciones que usan el direccionamiento de registros. Lenguaje Ensamblador MOV AL,BL MOV CH,CL MOV AX,CX MOV SP,BP MOV DS,AX MOV DI,SI MOV BX,ES MOV ES,DS MOV BL,BX MOV CS,AX Operacin Copia BL en AL Copia CL en CH Copia CX en AX Copia BP en SP Copia AX en DS Copia SI en DI Copia ES en BX No se permite (segmento a segmento) No se permite (tamaos mixtos) No se permite (CS no se puede usar como registro destino)

En la figura 2.9 se aprecia lo que sucede despus de que se utliza la instruccin MOV BX,CX. Por ejemplo, si CX tiene 1234H y BX tiene el valor 73CDH, el 1234H pasar a BX y se eliminar lo que contena.

DX CX BX AX

1234 (73CD) 1234

Figura 2.9. Ejecucin de la instruccin MOV BX,CX.


39

2.- Direccionamiento inmediato. Transfiere un byte o palabra de datos inmediatos hacia el registro o localidad de la memoria en el destino. Por ejemplo, la instruccin MOV AL, 22H, copia el 22H de tamao byte en el registro AL. El trmino inmediato significa que los datos siguen inmediatamente al cdigo hexadecimal de operacin en la memoria. El direccionamiento inmediato acta en un byte o palabra de datos. La instruccin inmediata MOV transfiere una copia de los datos inmediatos a un registro o a una localidad en la memoria.

En la figura 2.10 se muestra el funcionamiento de la instruccin MOV AX, 3456H en AX.

BX AX

A895 (FECD) 3456 B85634

PROGRAMA MOV AX,3456H

Figura 2.10. Ejecucin de la instruccin MOV AX,3456H.

El ensamblador simblico recibe los datos inmediatamente en varias formas. La letra H es flujo de los datos hexadecimales. Si estos datos empiezan con una letra, se empieza con un 0. Por ejemplo, para representar un F2H, se tiene que colocar un 0 primero, quedando 0F2H, se tiene que colocar un 0 primero, quedando 0F2H para que el procesador sepa que el operando es un nmero y no una etiqueta. Para los datos decimales no se coloca sufijo. Tambin se pueden poner caracteres ASCII entre apstrofos y a los datos binarios se les pone una B al final. En la tabla 2.2.1 se presenta varias instrucciones MOV con diferentes datos inmediatos. En la Fig. 2.7 se muestra que el registro AX contiene FECDH y le estamos ordenando al P que le ponga a AX el dato 3456H; el contenido de AX cambiar y en lugar de tener FECDH, tendr 3456H.

40

Tabla 2.3. Ejemplos de direccionamiento inmediato. Lenguaje Ensamblador MOV BL, 44 MOV AX, 44H MOV SI, 0 MOV CH, 100 MOV AL, A MOV AX, AB MOV CL, 11001110B Operacin Mueve 44 dcimas (2CH) al BL Mueve 44 hexadecimal a AX Mueve 0000H hacia SI Mueve 100 (64H) hacia CH Mueve ASCII (41H) hacia AL Mueve BA ASCII (4241H) hacia AX Mueve 11001110 Binario hacia CL

Cuando se utiliza el programa DEBUG y se desea enviar un dato inmediato hacia algn lugar de la memoria, es necesario agregar a la instruccin el operador PTR y uno de sus tipos: BYTE, cuando los datos a mover a la localidad de la memoria sean de 8 bits o bien WORD, cuando los datos sean de 16 bits. Lo anterior no es necesario cuando el operando destino es un registro, ya que el tamao del movimiento lo determina precisamente el tamao del registro utilizado. Si no se agrega el operador y alguno de los tipos mencionados, al ensamblar se producir un error. A continuacin se muestra un ejemplo que mueva hacia la localidad de la memoria 200H el nmero 64H. Cabe mencionar que en el programa DEBUG, todos los datos numricos se consideran como nmeros del sistema hexadecimal. MOV BYTE PTR [200],64 Se observa que el nmero de la direccin seleccionada, se coloca entre corchetes. 3.- Direccionamiento Directo.- Mueve un byte o palabra entre una localidad de memoria y un registro. Por ejemplo, la instruccin MOV CX, LIST copia el contenido tamao palabra de la localidad de memoria asociada con LIST y lo coloca en el registro CX. En la mayor parte de las instrucciones se pueden emplear el modo de direccionamiento directo. Aunque el direccionamiento directo es solo uno, podemos realizar una clasificacin en dos tipos bsicos: Direccionamiento directo que solo se aplica a una instruccin MOV entre una localidad de memoria y AL AX, y Direccionamiento por desplazamiento para casi cualquier instruccin en el conjunto de instrucciones del 8086. En cualquier caso, para

41

formar la direccin se suma el desplazamiento a la direccin del segmento de datos implcito o en un segmento alterno. a).- Direccionamiento directo. Solo se permite con una instruccin MOV que transfiere datos entre una localidad en la memoria situada dentro del segmento de datos y un registro AL (8 bits) o AX (16 bits). La instruccin MOV AL,DATO tal como se emplea en la mayor parte de los ensambladores, transfiere una copia del byte almacenado en la localidad DATO de la memoria y lo pone en el registro AL. En la figura 2.11 se ilustra algunos ejemplos de direccionamiento directo.

Figura 2.11. (a) Ejecucin de MOV AL,DATO y (b) ejecucin de MOV AX,DATO.

42

En la tabla 2.3 aparecen instrucciones con direccionamiento directo.

Tabla 2.3. Ejemplos de direccionamiento directo. Lenguaje Ensamblador MOV AL, NUMERO MOV AX, ALGO MOV NOTAS, AL MOV AH, AX Operacin Copia el contenido tamao byte de la direccin NUMERO en AL. Copia en AX el contenido tamao palabra de la direccin ALGO. Copia AL en la localidad de memoria NOTAS Copia AX en la localidad de memoria AH.

b).- Direccionamiento por desplazamiento. El direccionamiento por desplazamiento es muy semejante al direccionamiento directo, adems de ser mucho ms flexible, porque se utiliza en la mayor parte de las instrucciones. En la figura 2.12 se muestra el funcionamiento de la instruccin MOV CL, [2000H].

Figura 2.12. Ejecucin de la instruccin MOV CL,[2000H].

43

Tabla 2.4. Ejemplos de direccionamiento directo por desplazamiento.

Lenguaje Ensamblador MOV CH,CAN MOV CH,[1000] MOV ES,DATO6 MOV DATO,BP MOV NUMERO,SP

Operacin Carga en el registro CH, el contenido de la localidad de memoria CAN Carga en el registro el contenido de la localidad de memoria 1000H Carga en ES el contenido tamao palabra de la localidad de memoria DATO6 Se carga a BP en la localidad de memoria DATO Se carga SP en la localidad de memoria NUMERO

4.- Direccionamiento indirecto de registros Transfiere un byte o palabra entre un registro y una localidad de memoria direccionada por un registro ndice (DI o SI) o uno de base (BX o BP). Por ejemplo, la instruccin MOV AX,[BX] copia los datos de tamao palabra en una direccin del segmento de datos con un desplazamiento dado por BX y lo pasa al registro AX. Como ya se mencion, el direccionamiento indirecto de registros permite direccionar datos en cualquier localidad de la memoria por medio de cualquiera de los registros de base o ndice. Por ejemplo, si el registro BX contiene 1000H y se ejecuta la instruccin MOV AX, [BX], el contenido tamao palabra de la direccin con desplazamiento 1000H en el segmento de dato, se copia en el registro AX. Si el P funciona en modo real y DS = 0100 H, esta instruccin direcciona a la palabra almacenada en los bytes 2000H y 2001H de la memoria y los transfiere al registro AX, como se muestra en la figura 2.13. En la figura se aprecia que se mueve el contenido de 2000H hacia AL y el 2001H hacia AH.

44

Registros AX BX 6A 20 42 00

Memoria 6A 42 02001H 02000H

Figura 2.13. Ejecucin de MOV AX,[BX].

En la tabla 2.5 aparecen algunas instrucciones tpicas que emplean direccionamiento indirecto de registros.

Tabla 2.5. Ejemplos de modos de direccionamiento indirecto de registros.

Lenguaje Ensamblador. MOV CX, [BX] MOV [BP], DL MOV [DI], BH MOV [DI], [BX]

Operacin Se carga en CX una palabra de la localidad de la memoria seleccionada por BX Se carga el byte del registro DL en la localidad de memoria direccionada por BP. Se carga el byte del registro BH en la localidad de memoria direccionada por DI No se permiten las transferencias de memoria, excepto con instrucciones de cadena Esta instruccin no se permite, por que el registro utilizado para el direccionamiento indirecto de la memoria no se puede cambiar con la misma instruccin.

MOV DL, [DI]

La instruccin MOV BYTE PTR [DI],10H muestra con claridad que la localidad direccionada por DI es una localidad de tamao byte en la memoria.

45

5.- Direccionamiento Base ms ndice. Transfiere un byte o palabra entre un registro y la localidad de memoria direccionada por el contenido de un registro base (BX o BP) mas un registro ndice (DI o SI). Por ejemplo, la instruccin MOV [BX + DI],CL, copia el contenido de tamao byte del registro CL y lo pasa a la localidad de memoria direccionada por BX + DI en el segmento de datos. En la figura 2.14 se muestra como la instruccin MOV DX,[BX + DI] direcciona a los datos cuando el P funciona en modo real. En este ejemplo, BX = 1000H, DI = 0010H y DS = 0100H, por lo que la direccin de memoria que forman es 02010H. Esta instruccin transfiere una copia de la palabra contenida en las localidades 02010H (DL) y 02011H (DH) al registro DX. En la tabla 2.6 aparecen algunas instrucciones utilizadas para el direccionamiento base ms ndice.

Figura 2.14. Ejecucion de la instruccin MOV DX, [BX + DI].

46

Tabla 2.6. Ejemplos de modos de direccionamiento Base + Indice.

Lenguaje Ensamblador. MOV CX,[BX + DI] MOV CH,[BP + SI] MOV [BX + SI],SP

Operacin Se carga en CX el contenido palabra de la localidad de memoria direccionada por BX + DI. Se carga CH el contenido byte de la localidad de memoria direccionada por BP + SI. Se carga el contenido palabra de SP, en la localidad de memoria direccionada por BX + SI Se almacena el contenido palabra de CX en la localidad de memoria direccionada por BP + DI.

MOV [BP + DI],CX

6.- Direccionamiento Relativo por Registros. Transfiere un byte o una palabra entre un registro y una localidad en la memoria direccionada por un registro ndice o un registro base y adems un desplazamiento. Por ejemplo, MOV AX,[BX + 4] o MOV AX,ARREGLO[BX]. La primera instruccin copia una palabra de datos de una direccin en el segmento de datos, formada por el contenido de BX ms 4 y la pone en el registro AX. La segunda instruccin transfiere el contenido de la localidad de memoria asociada con ARREGLO ms el contenido de BX, hacia el registro AX. El direccionamiento relativo por registro es similar al direccioinamiento base mas ndice y el direccionamiento por desplazamiento. En el direccionamiento relativo por registros, para direccionar datos en el segmento de memoria se agrega un desplazamiento al contenido de un registro base o ndice (BP, BX, DI o SI). En la figura 2.15 se muestra el funcionamiento de la instruccin MOV AX, [BX + 1000H], en este ejemplo, BX= 0100H y DS= 0200H, por lo cual la direccin generada es la suma de DS x 10H, BX y el desplazamiento de 1000H, que es 03100H.

47

Registros AX BX A0 01 76 00

Memoria A0 76 03101H 03100H

Figura 2.15. Ejecucin de la instruccin MOV AX, [BX + 1000H].

En la tabla 2.7 se presenta algunas instrucciones en las que se utiliza el direccionamiento relativo por registro. Un desplazamiento es un nmero que se suma al registro dentro de los corchetes como en la instruccin MOV AL,[DI+2] o que se resta del registro como en la instruccin MOV AL,[SI -1]. Un desplazamiento tambin es una direccin de desplazamiento delante de los [] como en MOV AL,DATO[DI]. Ambas formas de desplazamiento pueden aparecer al mismo tiempo como en la instruccin MOV AL, DATO [DI + 3]. En todos los casos, ambas formas de desplazamientos se suman al registro base o ndice dentro de los corchetes []. Cabe mencionar que el desplazamiento DATO debe ser declarado previamente en el segmento de datos.

Tabla 2.7. Ejemplos de direccionamiento relativo por registros. Lenguaje ensamblador. MOV AX,[DI + 100H] MOV ARRAY [SI],BL MOV LIST [SI + 2],CL MOV [DI],SETS[BX] Operacin. Se transfiere a AX el contenido palabra de la localidad de memoria, direccionada por DI + 100H Se carga el contenido byte de BL en la localidad direccionada por ARRAY ms SI. Se carga el contenido byte de CL en la localidad direccionada por la suma de LIST, SI y 2. Se carga DI en el contenido de la localidad de memoria direccionada por SETS mas BX.

48

7.- Direccionamiento Relativo Base mas ndice. Transfiere un byte o una palabra entre un registro y la localidad en la memoria direccionada por el contenido de un registro Base ms uno de ndice ms un desplazamiento. Por ejemplo, MOV AX,ARREGLO[BX + DI] MOV AX,[BX + DI + 4]. Ambas instrucciones copian una palabra de datos de una localidad de memoria y la coloca en el registro AX. En la primera instruccin se emplea una direccin formada al sumar ARREGLO, BX y DI, y en la segunda al sumar BX, DI y 4. El direccionamiento relativo base mas ndice es similar al direccionamiento base mas ndice, pero adems suma un desplazamiento para formar una direccin en la memoria. El direccionamiento relativo base mas ndice es el modo de direccionamiento menos utilizado. La figura 2.16 muestra la forma en que se hace referencia a los datos si la instruccin ejecutada por el P es MOV AX,[BX + SI + 100H]. El desplazamiento 100H se suma a BX y SI para formar la direccin del desplazamiento dentro del segmento de datos. Los registros BX = 0020H, SI= 0010H y DS= 1000H, con lo que la direccin efectiva para esta instruccin es 10130H, o sea la suma de estos registros ms un desplazamiento de 100H. Este modo de direccionamiento es en extremo complejo para emplearse con frecuencia en un programa.

Registros AX BX SI A0 00 00 76 20 10

Memoria A0 76 10131H 10130H

Figura 2.16. Ejecucin de la instruccin MOV AX,[BX + SI + 100H].

En la tabla 2.8 aparecen algunas instrucciones tpicas en las que se emplea el direccionamiento relativo base ms ndice.

49

Tabla 2.8. Ejemplos de direccionamiento relativo base ms ndice.

Lenguaje Ensamblador. MOV DX,[BX + DI + 20H] MOV AX,ARCHIVO [BX + DI] MOV LISTA[BP + DI], CL MOV LISTA[BP + SI + 4], DH

Operacin. Se carga DX con el contenido de la localidad direccionada por BX + DI + 20H. Se carga AX con el contenido de la localidad direccionada por ARCHIVO + BX + DI Se carga el contenido de CL en la localidad direccionada por LISTA + BP + DI. Se carga el contenido de DH en la localidad de memoria direccionada por LISTA + BP + SI + 4.

2.15.- El operador PTR.


El operador PTR puede ser usado en variables de datos y en etiquetas de instruccin. Utiliza los especificadores de tipo BYTE y WORD para determinar un tamao en un operando ambiguo o para pasar por encima del tipo definido (DB o DW) para variables. Tambin usa los especificadores tipo NEAR, FAR y PROC para pasar por alto la distancia implicada de etiquetas. El formato general es: Tipo PTR expresin

El tipo es el nuevo atributo, tal como BYTE. La expresin es una variable o constante. A continuacin estn unos ejemplos del operador PTR.

MOV WORD PTR [120H], 25H MOV BYTE PTR [122H], 30H

Mueve el valor inmediato 25H a las localidades de memoria 120H y 121H. Mueve el valor inmediato 30H a la localidad de memoria 122H

50

2.16.- El conjunto de instrucciones.


El conjunto de instrucciones de la familia 8086/8088 incluye equivalentes de las instrucciones que se encuentran en 8085 o en casi cualquier P de 8 bits, ms algunas operaciones nuevas. Las categoras de instrucciones incluyen: transferencia de datos, aritmtica, manipulacin de bits, cadenas o arreglos, transferencia de programa y control del procesador.

Transferencia de datos. El conjunto de instrucciones del 8086 incluye instrucciones para transferencia de datos que transfieren bytes o palabras de datos entre la memoria y los registros as como entre el acumulador y los puertos de E/S. En la tabla 2.9 aparecen algunas de estas instrucciones y se describen en forma breve las caractersticas de funcionamiento de cada una.

Tabla 2.9. Instrucciones para transferencia de datos.

Instruccin IN LAHF LEA MOV OUT POP POPF PUSH PUSHF SAHF XCHG

Funcin Mete datos al acumulador desde un dispositivo de Entrada. Carga banderas en AH Carga la direccin efectiva. Mueve byte o palabra. Saca datos del acumulador a un dispositivo de Salida. Recupera una palabra de la pila. Recupera las banderas de la pila. Salvan las palabras en la pila. Salva banderas en la pila. Carga AH en las banderas. Intercambia bytes o palabras.

51

Aritmtica. La familia 8086 puede sumar, restar, multiplicar y dividir datos como bytes o palabras. El sistema suma y resta con el empleo de datos con signo o sin signo y datos BCD o ASCII. Multiplica y divide nmeros ASCII y nmeros con signo y sin signo. En la tabla 2.10 se encuentran algunas de las instrucciones aritmticas utilizadas en la familia de procesadores 8086. Tabla 2.10. Instrucciones aritmticas. Instruccin AAA AAD AAM AAS ADD ADC CBW CMP DAA DAS DEC DIV IDIV IMUL INC MUL NEG SBB SUB Funcin Ajuste ASCII para la suma. Ajuste ASCII para la divisin. Ajuste ASCII para la multiplicacin. Ajuste ASCII para resta. Suma datos entre registros o la memoria y otros registros. Suma datos con la bandera de acarreo. Convierte byte a palabra. Compara los datos. Ajuste decimal de AL despus de una suma BCD. Ajuste decimal de AL despus de una resta BCD. Decrementar. Divisin sin signo. Divisin con signo. Multiplicacin con signo. Incrementar. Multiplicacin sin signo. Cambia el signo (lo vuelve negativo) Resta con prstamo. Resta datos entre los registros y la memoria u otro registro.

Manipulacin de bits. Las instrucciones para la manipulacin de bits binarios se utilizan para controlar los datos hasta el nivel de bits en la familia de microprocesadores 8086. Estas instrucciones incluyen operaciones lgicas, corrimientos y rotaciones. En la tabla 2.11 aparece una breve descripcin de algunas instrucciones y su cdigo simblico de funcionamiento.

52

Instrucciones para cadenas. Las instrucciones para cadenas o arreglos se emplean para manipular cadenas de datos en la memoria. Cada cadena consta, ya sea, de bytes o de palabras y tiene hasta 64 K bytes de longitud. En las instrucciones para la cadena se emplean los registros SI y DI para direccionar los datos y el registro CX para contar el nmero de bytes o de palabras en que se trabaj. Las instrucciones para las cadenas ocurren una vez salvo que tengan uno de los prefijos REP, REPE/REPZ o REPN/REPNZ. Si una instruccin para cadena tiene uno de esos prefijos, se repite el nmero de veces contenido en el registro de conteo CX. En la tabla 2.12 se presentan algunas operaciones para cadena disponibles en la familia de microprocesadores 8086. Tabla 2.11. Instrucciones para manipulacin de bits. Instruccin. AND NOT OR SAR SHL/SAL SHR RCL ROL RCR ROR TEST XOR Funcin. Y (AND) lgica. Invertir (complemento a 1). O lgica. Corrimiento aritmtico a la derecha. Corrimiento a la izquierda. Corrimiento lgico a la derecha. Rotacin a la izquierda con acarreo. Rotacin a la izquierda. Rotacin a la derecha con acarreo. Rotacin a la derecha. Operacin con el AND lgico, pero solo afectando banderas. O exclusivo.

Tabla 2.12. Instrucciones para cadenas. Instruccin. CMPS LODS MOVS SCAS STOS Funcin. Comparacin entre memoria y memoria. Carga al acumulador. Mover de memoria a memoria. Comparacin entre la memoria y el acumulador. Almacenar en el acumulador.

53

Transferencia de programa. Las instrucciones para la transferencia de programa incluyen saltos, llamadas (CALL) a procedimientos y retorno de procedimientos. En la tabla 2.13 se presentan instrucciones para transferencia de programa.

Tabla 2.13. Instrucciones para transferencia de programa. Instruccin. CALL INT INT3 INTO IRET JA JAE JB JBE JC JE/JZ JG JGE JL JLE JMP JNC JNE/JNZ JNO JNP JNS JO JP JS LOOP JCXZ RET Funcin. Llama a un procedimiento (subrutina) Interrumpir. Interrupcin tipo 3. Interrumpir por sobre flujo. Retornar de una interrupcin. Brinca si en mayor. Brinca si es mayor o igual que. Brinca si es menor. Brinca si es menor o igual. Brinca si hay acarreo. Brinca si es igual o saltar si es cero. Brinca si es mayor que. Brinca si es mayor o igual. Brinca si es menor que. Brinca si es menor o igual. Brinca a otra parte del programa. Brinca si no hay acarreo. Brinca si no es igual o si no es cero. Brinca si no hay desbordamiento. Brinca si no hay paridad (impar). Brinca si no es signo positivo. Brinca si hay desbordamiento. Brinca si hay paridad (par). Brinca si tiene signo (negativo). Repite ciclo CX veces Brinca si CX es cero. Retorna de un procedimiento (subrutina).

54

Control de procesador. Las instrucciones para control del procesador habilitan y deshabilitan las interrupciones, modifican los bits de bandera y sincronizan los eventos externos. En la tabla 2.14 se presenta una lista de instrucciones de control del procesador.

Tabla 2.14. Instrucciones de control del procesador. Instruccin. CLC CLD CLI CMC LOCK NOP STC STD STI WAIT Funcin. Borrar bandera de acarreo. Habilitar incremento automtico. Deshabilitar terminal INTR. Complementa bandera de acarreo. Controla terminal LOCK en el 8086/8088. No operacin. Activa bandera de acarreo. Selecciona modo de decremento automtico. Habilitar interrupciones. Espera a que la terminal TEST = 0.

55

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo III. Operadores y Directivas En Lenguaje Ensamblador.

56

3.1.- Ensambladores y compiladores.


Primero identificaremos dos clases de lenguajes de programacin: alto nivel y bajo nivel. Los programadores que escriben en un lenguaje de alto nivel, como C y Pascal, codifican comandos poderosos, cada uno de los cual puede generar muchas instrucciones en lenguaje mquina. Por otro lado, los programadores que escriben en un lenguaje ensamblador de bajo nivel codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje de mquina. A pesar del hecho de que codificar en un lenguaje de alto nivel es ms productivo, algunas ventajas de codificar en lenguaje ensamblador son:

Proporciona ms control sobre el manejo particular de los requerimientos de hardware. Genera mdulos ejecutables ms pequeos y ms compactos. Con mayor probabilidad tiene una ejecucin ms rpida.

Una prctica comn es combinar os beneficios de ambos niveles de programacin: codificar el grueso de un proyecto en un lenguaje de alto nivel y los mdulos crticos (aquellos que provocan notables retardos) en lenguaje ensamblador. Sin importar el lenguaje de programacin que utilice, de todos modos es un lenguaje simblico que tiene que traducirse a una forma que la computadora pueda ejecutar. Un lenguaje de alto nivel utiliza un compilador para traducir el cdigo fuente a lenguaje de mquina (tcnicamente, cdigo objeto). Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traduccin. Un programa enlazador para ambos niveles, alto y bajo, completa el proceso al convertir el cdigo objeto en lenguaje ejecutable de mquina.

3.2.- 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 un punto y coma (;) y, en donde quiera que lo codifique, el ensamblador supone que todos los caracteres a la derecha en 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 muestra en dos ejemplos siguientes:
1. 2.

; Toda esta lnea es un comentario. ADD AX, BX ; Comentario en la misma lnea que la instruccin.

57

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 Tcnicamente se est en libertad de usar letras maysculas o minsculas indistintamente para las instrucciones y comentarios. Otra manera de proporcionar comentarios es por medio de la directiva COMMENT.

3.3.- Palabras reservadas.


Ciertas palabras en lenguaje ensamblador estn reservadas para sus propsitos propios, y solo son usados 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.

El uso de una palabra reservada para un propsito equivocado provoca que el ensamblador genere un mensaje de error.

3.4.- 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. Las mismas reglas se aplican tanto para los nombres como para las etiquetas. Un identificador puede utilizar los siguientes caracteres:

Letras de alfabeto: Desde la A hasta la Z.

58

Dgitos: Desde el 0 hasta el 9 (no puede ser el primer carcter). 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 el punto. Ya que el ensamblador utiliza algunos smbolos especiales en palabras que inician con el smbolo @, debe evitar usarlo en sus definiciones. El ensamblador trata las letras maysculas y minsculas como iguales. La longitud mxima de un identificador es de 31 caracteres (247 desde el MASM 6.0). Se recomienda que los nombres sean descriptivos y con significado. Los nombres de registros como AX, DI y AL, estn reservados para hacer referencia a esos mismos registros. 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 DATOS, AX el ensamblador puede reconocer el nombre, DATOS solo si se define en algn lugar del programa.

3.5.- Instrucciones.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados son:
1. 2.

Instrucciones, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto. Directivas, que indican el ensamblador que realice una accin especfica, como definir un elemento de dato.

A continuacin esta el formato general de un enunciado, en donde los corchetes indican una entrada opcional.

[Identificador]

Operacin

[operando(s)] [;comentario]

59

Un identificador (si existe), una operacin y un operando (si existe) estn separados por al menos un espacio en blanco o un carcter de tabulador. Existe un mximo de 132 caracteres en una lnea (512 desde MASM 6.0), aunque la mayora de los programadores prefiere permanecer en los 80 caracteres ya que es el nmero mximo que cabe en la pantalla. A continuacin se presentan dos ejemplos de enunciados:

Identificador Directiva: COUNT Instruccin:

Operacin DB MOV

Operando 1 AX,0

Comentario ; Nombre, operacin, operando ; Operacin, dos operandos.

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 tal como DB o DW define un campo, de rea de trabajo o constante. Para una instruccin, una operacin como MOV o ADD indica una accin a realizar.

Operando. El operando (si existe) proporciona informacin para la operacin que acta sobre el. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definicin siguiente de un elemento de datos llamado CONTADOR, la operacin DB significa "definir byte", y el operando inicializa su contenido con un valor cero:

Nombre Contador

Operacin DB

Operando 0

Comentario ; Define un byte (DB) con el valor cero

60

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:

Operacin RET INC ADD

Operando CX AX,12

Comentario ; Regresa ; Incrementa al registro CX ; Suma 12 a AX

Operando Ninguno Uno Dos

3.6.- Directivas.
El lenguaje ensamblador permite usar diferentes enunciados que permiten controlar la manera en que un programa ensambla y lista. Estos enunciados, llamados directivas, actan solo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina. Las directivas ms comunes son explicadas a continuacin: 3.6.1. Directivas para listar: PAGE y TITLE. Las directivas PAGE y TITLE ayudan a controlar el formato de un listado de un programa en ensamblador. Este es su nico fin, y no tiene 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 un enunciado PAGE causa que el ensamblador tome PAGE 50, 80. Tambin puede forzar un salto de pgina en una lnea especfica en el listado del programa, como al final de un segmento. En la lnea requerida, solo codifique PAGE sin operandos.

61

TITLE.- Se puede emplear la directiva TITLE para hacer que un ttulo para que un programa se imprima en la lnea dos de cada pagina en el listado del programa. Puede codificar TITLE de una vez, al inicio del programa. Su formato general es: TITLE texto 3.6.2. 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: NOMBRE Nombre . . . Nombre OPERACION SEGMENT OPERANDO [opciones] COMENTARIO ;inicia el segmento

ENDS

;Fin del segmento

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 operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineacin, combinar y clase, codificadas en este formato: Nombre SEGMENT alineacin combinar clase Tipo alineacin.- 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. 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 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

62

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, se utiliza para agrupar segmentos cuando se enlazan. Se utilizan la clase 'code' para el segmento de cdigos (recomendado por Microsoft), 'data' para el 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'

3.6.3. Directiva PROC El segmento de cdigo contiene el cdigo ejecutable de un programa. Tambin tiene uno o ms procedimientos, definidos con la directiva PROC. Un segmento que tiene solo un procedimiento puede aparecer como sigue: Nombre Nomsegmto Nomproc Operacin SEGMENT PROC . . . ENDP ENDS Operando PARA FAR Comentario ;un procedimiento ;dentro del segmento. ;de cdigo

Nomproc Nomsegmto

El nombre del procedimiento debe estar presente, ser nico y seguir las reglas para la formacin de nombres del lenguaje. El operando FAR en este caso esta relacionado con la ejecucin del programa. Cuando solicita la ejecucin de un programa, el cargador de programas del DOS utiliza el nombre del procedimiento como el punto de entrada para la primera instruccin a ejecutar. La directiva ENDP indica el fin de un procedimiento y contiene el mismo nombre que el enunciado PROC para permitir que el ensamblador relacione a los dos. Ya que los procedimientos deben estar por completo dentro de un segmento, ENDP define el final de un procedimiento antes que ENDS defina el final de un segmento.

63

El segmento de cdigo puede contener cualquier nmero de procedimientos usados como subrutinas cada uno de los cuales va con su caracterstico conjunto de enunciados PROC y ENDP. Cada PROC adicional por lo comn se codifica con (o por omisin) el operando NEAR.

3.6.4. Directiva ASSUME Un programa utiliza al registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y al registro CS para direccionar el segmento de cdigo. Para este fin, se tiene que indicar al ensamblador el propsito de cada segmento en el programa. La directiva para este propsito es ASSUME, codificada en el segmento de cdigo como sigue: Operacin ASSUME Operando SS:nompila, DS:nomsegdatos, CS:nomsegcodigo,...

SS: nompila significa que el ensamblador asocia el nombre del segmento de la pila con el registro SS, y de manera similar, con los otros operandos mostrados. Los operandos pueden aparecer en cualquier orden. ASSUME tambin puede contener una entrada para el ES, tal como ES:nomsegdatos; si el programa no utiliza el registro ES, se puede omitir su referencia o codificar ES: NOTHING.

Directiva END. Como ya se menciono, la directiva ENDS finaliza un segmento y la directiva ENDP finaliza un procedimiento. Una directiva END finaliza todo el programa. Su formato general es: Operacin END Operando [nomproc]

En la mayora de los programas, el operando contiene el nombre del primero o nico procedimiento (PROC) designado como FAR, donde inicia la ejecucin del programa.

64

3.7.- Definicin de Datos.


Como ya se estudi, el propsito del segmento de datos de un programa. EXE es definir constantes, reas de trabajo y reas de entrada/salida. El ensamblador permite la definicin de elementos de varias longitudes de acuerdo con el conjunto de directivas que defina datos. Por ejemplo, DB define un byte y DW define una palabra. Un elemento de datos puede contener un valor indefinido (no inicializado) o una constante, definida como una cadena de caracteres o como un valor numrico. A continuacin est el formato general para la definicin de datos: [nombre] Dn Expresin

Nombre.- Un programa que hace una referencia a un elemento de dato lo hace por medio de un nombre. Por otro lado, el nombre de un elemento es opcional. Directivas.- Las directivas que definen elementos de datos son DB (byte) y DW (palabra). Cada uno indica de manera explcita la longitud del elemento definido. Expresin.- La expresin es un operando que puede contener un signo de interrogacin para indicar un elemento no utilizado, como: FLD1 DB ? ; Elemento no inicializado

En este caso, cuando el programa inicie la ejecucin el valor inicial de FLD1 no es conocido. En la prctica, lo normal antes de usar este elemento es mover algn valor a el. Tambin puede utilizar el operando para definir una constante como: FLD2 DB 25 ; Elemento inicializado

Puede usar con libertad este valor inicializado en su programa y aun puede cambiar el contenido de FLD2. Una expresin puede contener varios valores constantes separados por comas y limitados solo por la longitud de la lnea, como sigue: FLD3 DB 11, 12, 13, 14, 15, 16,....

65

El ensamblador define estas constantes en bytes contiguos. Una referencia a FLD3 es a la primera constante de un byte (FLD3 + 0), y una referencia a FLD3 + 1 es a la segunda constante, 12. Por ejemplo la instruccin MOV AL, FLD3 + 3 Carga el valor 14 (OEH) en el registro AL. Tambin la expresin permite duplicacin de constantes en un enunciado de la forma general.

[nombre]

Dn

Contador de repeticiones DUP (expresin)...

Los ejemplos siguientes ilustran la duplicacin: DW 10 DUP (?) DB 5 DUP (14) DB 3 DUP (4 DUP (8)) ; Diez palabras, no inicializadas ;Cinco bytes con OEOEOEOEOE hexadecimal ;Doce 8

El tercer ejemplo genera cuatro copias del dgito 8 (8888) y duplica el valor tres veces, produciendo un total doce 8.

Cadenas de caracteres. Las cadenas de caracteres son usadas para datos descriptivos como nombres de personas y ttulos de pginas. La cadena esta definida dentro de apstrofos, como 'PC', o dentro de comillas, como "PC". El ensamblador traduce las cadenas de caracteres en cdigo objeto en formato ASCII normal. Extraamente, DB es el nico formato que define una cadena de caracteres que excede a dos caracteres y los almacenes en la secuencia normal de izquierda a derecha. En consecuencia, DB es el formato convencional para la definicin de datos de caracteres de cualquier longitud. Un ejemplo es: DB 'cadena de caracteres'

66

3.7.1. Directivas para la definicin de datos. Las directivas convencionales usadas para definir datos, junto con los nombres introducidos por MASM 6.0 son:

Descripcin Definir byte (s) Definir una palabra

Directivas convencionales DB DW

Directivas MASM 6.0 BYTE WORD

El programa ensamblado de la figura 3.1 proporciona ejemplos de las directivas que definen cadenas de caracteres y constantes numricas.

TITLE ; ; FLD1DB FLD2DB FLD3DB FLD4DB FLD5DB FLD6DB FLD7DB ; FLD1DW FLD2DW FLD3DW FLD4DW FLD5DW

PAGE 60, 132 PO4DEFIN (EXE) .MODEL SMALL Se definen Bytes_DB: ----------------------------------DB ? DB 32 DB 20H DB 01011001B DB 10DUP (0) DB 'Personal Computer' DB '326554' Se define words - DW DW OFFOH DW 01011001B DW FLD7DB DW 3,4,7,8,9 DW 5 DUP (0)

Define data items ----------------------------------;No se inicia ; Constante decimal ; Constante hexadecimal ; Constante binaria ; Diez ceros ; Cadena de caracteres ; Nmero como caracteres ; Constante hexadecimal ; Constante binaria ; Constante de direccin ; Tabla de cinco constantes ; Cinco ceros

Figura 3.1.- Definicin de cadenas de caracteres y valores numricos.

67

3.8.- La Directiva EQU.


La directiva EQU no define elementos de datos. En lugar de eso, define un valor que el ensamblador puede usar para sustituir en otras instrucciones. Considere el enunciado EUQ siguiente, codificado en el segmento de datos: TIMES EQU 10

El nombre en este caso TIMES, puede ser cualquier nombre aceptable por el ensamblador. Ahora, siempre que una instruccin o en otra directiva aparezca la palabra TIMES, el ensamblador la sustituye por el valor 10. Por ejemplo, el ensamblador convierte la directiva. FIELDA Su valor equivalente FIELDA DB 10 DUP (?) DB TIMES DUP (?)

Una instruccin tambin puede tener un operador con EQU, como en el siguiente : COUNTR EQU 05 . . . MOV CX,COUNTR

El ensamblador reemplaza COUNTR en el operando MOV con el valor 05, haciendo del operando un valor inmediato, como si estuviera codificado. MOV CX, 05 ; El ensamblador sustituye 05

La ventaja de EQU es que muchos enunciados pueden utilizar valores definidos por COUNTR. Si el valor ha sido cambiado, solo necesita cambiar el enunciado EQU. No necesita decirse que puede usar un valor igualado (con EQU) solo en donde una sustitucin tenga sentido para el ensamblador. Tambin se puede igualar (con EQU) nombres simblicos como el siguiente cdigo: TOTALPAY . . . TP MPY DW 0

EQU EQU

TOTALPAY MUL

68

El primer EQU hace equivalente (iguala) el alias TP al elemento definido TOTALPAY. Para cualquier instruccin que tenga el operando TP, el ensamblador lo reemplaza con la direccin TOTALPAY. El segmento EQU permite a un programa usar la palabra MPY en lugar de la instruccin simblica MUL.

3.9.- Como inicializar un programa para su ejecucin.


La figura 3.2. proporciona una estructura de un programa .EXE que muestra los segmentos de la pila, de los datos y del cdigo. Examinemos las instrucciones del programa por numero de lnea: LNEA 1 2 3 4-6 8-10 12-21 13-20 EXPLICACIN La directiva PAGE para este listado establece 60 lneas y 132 columnas por pgina. La directiva TITLE identifica el nombre del programa PO4ASM1. Las lneas 3,7,11 son comentarios que califican la declaracin de los segmentos definidos. Estos enunciados definen el segmento de pila, STACKSG(pero no su contenido). Estos enunciados definen el segmento de datos, DATASG(pero no su contenido). Estos enunciados definen el segmento de cdigo, CODESG. Estos enunciados definen el segmento del cdigo del nico procedimiento, llamado BEGIN. Este procedimiento ilustra los requisitos comunes de inicializacin y de salida para dar programa. EXE. Los dos requisitos para inicializar son (1) avisar al ensamblador que segmentos asocia con los registros de segmentos y (2) cargar el DS con la direccin de segmentos de datos. La directiva ASSUME avisa al ensamblador que asocie ciertos segmentos con ciertos registros de segmentos. Al asociar segmentos con registros de segmentos, el ensamblador puede determinar en le pila, para los elementos en el segmento de datos y para las instrucciones en el segmento de cdigo. Dos Instrucciones inicializan la direccin al segmento de datos en el registro DS: MOV DS, AX; Almacena la direccin en DS. El primer MOV carga la direccin del segmento de datos en el registro AX y el segundo MOV copia la direccin del AX al DS. Se requieren dos MOV ya que ninguna instruccin puede mover datos de forma directa de la memoria a un registro de segmento. Estas dos instrucciones hacen la peticin de terminacin del programa y regresan al DOS. El enunciado END indica al ensamblador que este es el final del programa y el operando BEGIN proporciona el punto de entrada para la ejecucin subsecuente del programa.

14

15-16

18-19 22

69

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

PAGE 60,132 TITLE PO4ASM1 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 MOV DS, AX . . . MOV AX, 4C00H INT 21H BEGIN ENDP CODESG ENDS END BEGIN

Figura 3.2.-Estructura de un programa .EXE

70

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo III. Manejo Bsico de Pantalla y Teclado.

71

4.1.- Introduccin al procesamiento de pantalla y teclado. Hasta este punto nuestros programas han definido datos ya sea en el rea de datos o como datos inmediatos en un operando de instruccin. Sin embargo, la mayora de los programas necesitan entradas desde un teclado, ratn o mdem y proporcionan salidas en un formato til en la pantalla, impresora o disco. Existen varios requisitos para especificar un dispositivo al sistema y solicitar una operacin de entrada o salida. La instruccin INT (interrupcin), para la mayora de los propsitos, maneja entrada y salida. Los dos tipos de interrupciones que se tratarn son las funciones de la INT 10H del BIOS para manejar la pantalla y las funciones de la INT 21H del DOS para mostrar salidas en pantalla y aceptar entradas desde el teclado. Estas funciones (o servicios) solicitan una accin; para identificar el tipo de operacin que la interrupcin va a realizar, inserte un nmero de funcin en el registro AH.

4.2.- La pantalla. La pantalla es una malla de posiciones direccionables, en cualquiera de las cuales se puede colocar el cursor. Por ejemplo, un monitor comn de video tiene 25 renglones (numerados del 0 hasta el 24) y 80 columnas (numeradas desde 0 hasta 79). A continuacin se muestran varios ejemplos de ubicaciones del cursor.

Ubicacin en pantalla Esquina superior izquierda Esquina superior derecha Centro de la pantalla Esquina inferior izquierda Esquina inferior derecha

Formato Decimal Formato Hexadecimal Rengln Columna Rengln Columna 00 00 00H 00H 00 79 00H 4FH 12 39 / 40 OCH 27H / 28H 24 00 18H 00H 24 79 18H 4FH

72

4.3. Funciones ms comunes del BIOS (INT 10H) para el manejo de la pantalla. 4.3.1.- Colocacin del cursor. La colocacin del cursor es un requisito comn en modo de texto, ya que su posicin determina en donde ser desplegado el siguiente caracter. (El modo grfico no permite el uso del cursor). La INT 10H es la operacin del BIOS para manejo de la pantalla, y la funcin 02H en el AH indica la operacin que coloca el cursor. Se carga el nmero de pgina (o pantalla), por lo comn 0, en el registro BH y en el DX el rengln y columna requeridos. Los contenidos de los otros registros no son importantes. Las instrucciones siguientes colocan el cursor en el rengln 05, columna 12 MOV AH ,02H MOV BH,00H MOV DH,05 MOV DL,12 INT 10H ; Peticin para colocar el cursor ; numero de pgina 0 ; rengln 05 ; columna 12

Para establecer el rengln y la columna en el DX tambin puede utilizar una instruccin mov con un valor hexadecimal inmediato, como: MOV DX, 050CH ; Rengln 05, Columna 12

4.3.2.- Limpiar la pantalla. La funcin 06H del BIOS maneja el borrado o el recorrido de la pantalla; puede limpiar todo o parte de un despliegue iniciando en cualquier localidad de la pantalla y terminando en cualquier localidad con nmero mayor. Por ejemplo, para limpiar toda la pantalla especifique el rengln : columna iniciales como 00:00H y el rengln : columna finales como 18:4FH. Carga estos registros.

AH AL BH CX DX

; Funcin 06H. ; 00H para la pantalla completa. ; Nmero del atributo. ; Rengln: columna iniciales. ; Rengln: columna finales.

73

En el ejemplo siguiente el atributo 71H establece toda la pantalla con fondo blanco (7) con primer plano azul (1). MOV AH, 06H MOV AL, 00H MOV BH, 71H MOV CH, 00H MOV CL, 00H MOV DH, 18H MOV DL, 4FH ; Funcin 06H ; Pantalla completa. ; Numero de atributo (fondo blanco, letras azules) ; Rengln inicial. ; Columna inicial. ; Rengln final. ; Columna final.

Tambin se puede codificar de la forma siguiente: MOV AX,0600H MOV BH,71H MOV CX,0000H MOV DX,184FH INT 10H

4.4. Funciones ms comunes del DOS (INT 21H) para captura de caracteres del teclado y despliegue en pantalla.

4.4.1.- Funcin 09H del DOS para despliegue en pantalla. La simplicidad de la funcin 09H del DOS, original para el despliegue, es lo que la mantiene en uso comn. Requiere la definicin de cadena de despliegue en el rea de datos. La cadena es seguida inmediatamente por un delimitador de signo de pesos ($, 024H), el cual utiliza la operacin para finalizar el despliegue. El ejemplo siguiente lo ilustra: Cadena DB 'Es una cadena','$' ; cadena de despliegue.

Puede codificar el signo de pesos inmediatamente despus de la cadena de despliegue como se mostr, como parte de la cadena en 'Nombre del cliente?$', o en la lnea siguiente como en DB '$'. Sin embargo, el resultado es que no se puede utilizar esta funcin para desplegar en la pantalla un carcter $. Coloque la funcin 09H en el registro AH, utilice LEA para cargar la direccin de la cadena de despliegue en el DX, y emita una instruccin INT 21H. La operacin despliega los caracteres de izquierda a derecha y reconoce el final de los datos al encontrar el delimitador de signo de pesos ($). El cdigo en los lenguajes ensamblador es:

74

MOV AH,09H ; Peticin para desplegar LEA DX,CADENA ; Carga la direccin de la indicacin. INT 21H ; Llama al DOS La operacin INT no cambia el contenido de los registros. Una cadena desplegada que exceda la columna de la extrema derecha de la pantalla contina de forma automtica en el siguiente rengln, recorriendo la pantalla tanto como sea necesario. Si al final de la cadena se omite el signo de pesos la operacin despliega caracteres de la memoria hasta que encuentre un signo as, si existe alguno.

4.4.2.- Uso de caracteres de control para desplegar. Una manera de hacer ms eficaz el uso de despliegues es utilizar los caracteres de control: Retorno de carro, Avance de lnea y el Tabulador. Puede codificarlos como valores ASCII o nmeros hexadecimales, as:

Carcter de control Retorno de carro Avance de lnea Tabulador

ASCII 13 10 09

HEX Efecto en el cursor 0DH Restablece a la posicin de la extrema izquierda. 0AH Avanza a la lnea siguiente. 09H Avanza a la siguiente marca de tabulador

Siempre que se desplieguen salidas o acepten entradas, utilice estos caracteres de control para el manejo de cursor. Aqu esta un ejemplo que despliega el contenido de una cadena de caracteres llamada MENSAJE, seguida por un retorno de carro y un avance de lnea para colocar el cursor en la lnea siguiente:

Mensaje

DB 09, 'UAMSZ Ingeniera', 13, 10, '$' MOV AH,09H ; Peticin de despliegue. LEA DX, MENSAJE ; Carga la direccin del titulo INT 21H ; Llama al DOS.

El uso de EQU para redefinir los caracteres de control puede hacer que un programa sea mas legible:

75

CR LF TAB Mensaje

EQU 13 ; (o EQU 0DH) EQU 10 ; (o EQU 0AH) EQU 09 ; (o EQU 09H) DB TAB, 'UAMSZ Ingeniera', CR, LF, '$'

4.4.3.- Funcin 02H del DOS para despliegue en pantalla. Puede encontrar que la funcin 02H de la INT 21H, sea til para despliegue de un solo caracter. Cargue en el DL el caracter que ser desplegado en la posicin actual del cursor, y solicite la INT 21H. Los caracteres de Tabulador, Retorno de carro y Avance de lnea actan normalmente, y la operacin avanza de manera automtica el cursor.

El cdigo en lenguaje ensamblador es: MOV AH,02H MOV DL, char INT 21h ; Peticin de desplegar un carcter ; carcter desplegado ; Llama al DOS

El ejemplo siguiente muestra como utilizar este servicio para desplegar una cadena de caracteres. La cadena a desplegar esta definida en CONAME. El programa carga la direccin de CONAME en el registro DI y su longitud en el CX. El cdigo es como sigue:
Coname DB 'Software services', 13, 10

A30:

. . . MOV AH,02H MOV CX,19 LEA DI ,CONAME MOV DL,[DI] INT21H LOOP A30

; Peticin para desplegar un carcter ; Longitud de la cadena de caracteres ; Direccin de la cadena de caracteres ; Caracteres que se despliegan. ; Llama al DOS ; Si aun no termina, repite el ciclo

76

4.4.4.- Funcin 01H de la INT 21H: Entrada del teclado con eco en pantalla. Esta operacin acepta un carcter desde un bufer del teclado o, si no esta presente alguno, espera una entrada del teclado. La expresin con eco en pantalla, significa que cuando se emplea otra funcin para desplegar el carcter capturado en la pantalla, ste aparece repetido). La operacin regresa uno de dos cdigos de estado.

AL = Un nmero distinto de cero, significa que un carcter ASCII estndar esta presente, como una letra o un nmero, que la operacin repite en la pantalla. AL =0, significa que el usuario a presionado una tecla de funcin extendida, como Inicio FI o Repag, y el AH aun tiene la funcin original.

El cdigo siguiente ilustra esta funcin: MOV AH,01H INT 21H ; Peticin de entrada del teclado ; Llama al DOS

4.4.5.- Funcin 07Hde la INT 21H: Entrada del teclado sin eco. Esta operacin funciona igual que la 01H, excepto que el carcter ingresado no se repite en la pantalla. Podra utilizar la operacin para introducir una contrasea (o password) que sea invisible o en donde no se quiere que la pantalla sea perturbada..

77

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo V. PROGRAMAS ENSAMBLADORES.

78

En este capitulo podemos observar las reglas para ensamblar, enlazar, generar archivos de referencias cruzadas y convertir programas .EXE a .COM. la versin de ensamblador de Microsoft es MASM, la de Borland es TASM y la de SRL es OPTASM, todas ellas son similares. Desde la versin 6.0 de Microsoft utiliza el comando ML, que realiza un ensamblador y enlace en un comando.

5.1.- Ensamblado un programa. Se puede utilizar una lnea de comando para solicitar un ensamblador, aunque MASM tambin proporciona indicaciones (prompts). 5.1.1.- Ensamblado un programa. El formato general para usar una lnea de comando para ensamblador es: MASM/TASM [opciones] fuente [,objeto] [,listado] [,refcrz] las opciones son explicadas posteriormente. Fuente, identifica el programa fuente. El ensamblador supone la extensin .ASM as que no necesita ingresarla. Tambin puede teclear la unidad de disco o la ruta (ambas). Objetivo, proporciona un archivo OBJ. La unidad o rutina y el nombre del archivo pueden ser los mismos o diferentes a los de la fuente Listado, provee de un archivo .LIST que contiene los cdigos fuente y objeto. La unidad o ruta y el nombre del archivo pueden ser los mismos o diferentes a los del fuente. Referz, provee un archivo generado con los smbolos para un listado de referencias cruzadas. La extensin .CRF para MASM y .XRF para TASM. La unidad y el nombre del archivo pueden ser los mismos o diferentes. Este ejemplo escribe todos los archivos. MASM D: nombre, ASM: nombre,. OBJ,D: nombre, LST: nombre. CRF El siguiente comando abreviado permite, por omisin, los valores para los archivos objeto. De listado y referencias cruzadas, todos con el mismo nombre: MASM D: nomarchivo, D:, D:, D:,

79

Este ejemplo solicita un archivo de referencias cruzadas pero no un archivo con el listado: MASM D: nomarchivo, D:,, D: 5.1.2.- Ensamblando con indicaciones. Tambin se pueden teclear los nombres del ensamblador sin lnea de comando, aunque TASM y MASM (hasta la versin 5.1) responden de manera diferente. TASM muestra el formato general para la lnea de comando y una explicacin de las opciones, mientras que MASM muestra una lista de indicaciones a las cuales hay que responder: Source filename [.ASM]: Objeto filename [source.OBJ] Source listing [NUL.LST] Cross-reference [NUL.CRF] Source filename identifica el archivo fuente. Teclee la unidad o ruta (si no es por omisin) y el nombre del archivo fuente, sin la extensin ASM. Objet filename pregunta por el archivo objeto. La indicacin supone el mismo nombre de archivo, aunque se podra cambiar. Para obtener un archivo objeto en la unidad D, teclee D: y presione Enter. Cross-reference provee de un listado de referencias cruzadas, aunque la peticin supone que no se quiere. Para obtener una en la unidad D, teclee D: y presione Enter. Para las ultimas tres peticiones, solo presione Enter si quiere aceptar los valores por omisin.

Ensamblando un programa.
Opciones de Ensamblador. Las opciones de ensamblador para MASM, TASM y OPTAS incluyen las siguientes: /A /C /D /E /H Acomoda los segmentos fuente en orden alfabtico. Crea un archivo de referencia cruzadas. MASM: Produce archivos de listado de la pasada 1 y de la pasada 2 para localizar errores. Para TASM, /Disimbolo significa define un smbolo. Acepta instrucciones del procesador 80x87 y genera un enlace a BASIC, C o FORTRAN para emular instrucciones de punto flotante. Muestra opciones de ensamblador con una breve explicacin. Ingrese /H (help, ayuda) sin nombre de archivo u otras opciones.
80

/L /ML /MU /MX /N /R /S /T /V

Crea un listado de archivo normal. Hace todos los nombres sensibles a maysculas y minsculas. Convierte todos los nombres en maysculas. Hace a los nombres pblicos y externos sensibles a maysculas y minsculas Suprime la generacin de la tabla de smbolos. Proporciona soporte para procesador matemtico. Deja los segmentos fuente en la secuencia original. (Breve) muestra diagnsticos al final del ensamblador solo si se encuentra un error. (En extenso) al final del ensamblador, muestra el numero de lneas y smbolos procesados. (no para OPTASM). /Wn Establece el nivel de mensajes de advertencia: 0= muestra solo errores crticos; 1= muestra errores crticos y advertencias graves (por omisin); 2= muestra errores crticos, advertencias graves y advertencias de consulta. /Z Muestra lneas fuente en la pantalla para errores. /ZD Incluye informacin de nmeros de lneas en archivo objeto para Code View, TurboDebugger o SYMDEB. /ZI Incluye informacin acerca de nmeros de lnea e informacin simblica en el archivo objeto para Code View, TurboDebugger o SYMDEB. Puede solicitar opciones tanto en modo de lnea e informacin de comandos. Para eticiones, por ejemplo podra codificar MASM/V [Enter], despus teclee el nombre del archivo de la manera usual. O puede teclear las opciones en cualquier lnea de peticin; por ejemplo, como: Fuente nomarch [.ASM]:/A/V nomarch o nomarch/A/V [Enter] Las opciones /A/V le indican al ensamblador que escriba segmentos en orden alfabtico y despliegue diagnsticos adicionales al final del ensamblador.

Caractersticas adicionales de Turbo Assembler. Turbo assembler le permite ensamblar varios archivos, cada uno con sus propias opciones, en una lnea de comando. Tambin puede usar los comodines del DOS (* y ?). para ensamblar todos los programas fuente en el directorio actual, teclee TASM*. Para ensamblar todos los archivos fuente PROG1.ASM., PROG2.ASM, etc., teclee TASM prog?. Puede teclear grupos (o conjuntos) de nombres de archivos, con cada grupo separado por punto y coma. El siguiente comando ensambla PROGRA y PROGB con la opcin /C y PROGC con la opcin /A: TASM/C PROGRA PROGB;/A PROGC

81

Microsoft Versin 6.x ML [opciones] nomarchs [[opciones] nomarchs]...[/opciones enlace] El ensamblador le permite ensamblar cualquier numero de programas en un modulo ejecutable. Una opcin til es ML - ?, que despliega la sintaxis completa de la lnea de comando y las opciones. Tablas. Siguiendo a n listado de ensamblador .LST estn una tabla de segmentos y grupos y una tabla de smbolos. Tabla de segmentos y grupos. Esta tabla tiene el encabezado siguiente: Name Length Aling Combine Class

La columna Name de los nombres de todos los segmentos y grupos, en orden alfabtico. La columna Length da el tamao en hexadecimal, de cada segmento. La columna Align da el tiempo de alineacin, tal como BYTE, WORD o PARA. Combine lista el tipo combinar definido, tal como STACK para una pila, NONE en donde no esta codificado tipo, PUBLIC para definiciones externas, o una direccin hexadecimal para tipos A]T. La columna Class lista los nombres de clase de segmento, como estn codificados en la instruccin SEGMENT.

82

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