Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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:
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.
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
17
18
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
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.
22
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.
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.
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.
26
Stack
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
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.
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.
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.
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.
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).
.........
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
36
3.- PUSH BX.- Disminuye el SP en 2 (a 24H) y almacena el contenido del BX, 03D2H en la pila:
.........
D203
5A01
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
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
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.
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
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.
BX AX
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
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].
43
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
En la tabla 2.5 aparecen algunas instrucciones tpicas que emplean 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.
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.
46
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.
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
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
En la tabla 2.8 aparecen algunas instrucciones tpicas en las que se emplea el direccionamiento relativo base ms ndice.
49
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.
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
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.
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
56
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.
; 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.
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:
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:
Operacin DB MOV
Operando 1 AX,0
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
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:
Operando CX AX,12
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
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
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
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:
Directivas convencionales DB DW
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
67
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.
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
70
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:
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
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
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