Sei sulla pagina 1di 66

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

UNIDAD I: FUNDAMENTOS 1.1 Introduccin.


El ensamblador es un variante legible para el ser humano del lenguaje de maquina o que usan las computadoras para ejecutar programas. Al mismo tiempo es la mejor manera que se tiene para comunicarse con la PC y con el lenguaje de programacin que se utilice. Si antes de adentrarnos en el estudio del hardware analizamos lo que es ensamblador, se tendr un panorama mas amplio de como funciona la PC. Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede realizar fsicamente. El ensamblador resulta indispensable cuando se desea escribir programas que controlen la entrada/salida de la PC, agregar nuevas interfaces de entrada/salida, escribir rutinas optimizadas de un procedimiento en especial, escribir rutinas que aprovechen y maximicen el uso del hardware, y en general realizar cualquier tarea que no puedan llevar acabo los dems lenguajes de programacin.

El programador de lenguaje ensamblador debe conocer perfectamente el sistema fsico (Hardware) de la mquina con que trabaja, pues aunque empleen nemotcnicos, etiquetas, etc., stas sirven para indicar una posicin de memoria determinada, un registro o cualquier otra parte de la mquina. Por eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel, es decir ligado con el hardware concreto de una determinada mquina. Aqu radica la diferencia importante con los lenguajes ms complejos, llamados de alto nivel, ya que en stos el programador no tiene porque reconocer el hardware de la mquina. Trabaja con variables, constantes e instrucciones simblicas, y es el traductor quien las transforma en las direcciones apropiadas.

1.1.1 Uso y aplicaciones del lenguaje ensamblador.


Ventajas del lenguaje Ensamblador. Aunque cualquier lenguaje de programacin ofrece facilidades para realizar determinadas tareas, ninguno proporciona un control absoluto cobre la PC, ni informacin fundamental de lo que sucede mientras el programa se ejecuta. Si nunca se ha trabajado con el ensamblador, se preguntaran por

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

que no usar otros Pascal o C u otro lenguaje que domine. Existen varias razones que justifican el uso del ensamblador en lugar de otros lenguajes como por ejemplo: 1. El ensamblador brinda la oportunidad de conocer ms a fondo la operacin de la PC. Esto permite implementar software o hardware de una manera ms consciente, en vez de seguir una receta fija. 2. Se conserva el control total de lo deber hacer la PC, siempre y cuando sta sea fsicamente capaz de hacerlo. 3. Los programas en ensamblador son ms rpidos, ms compactos y tienen mayor capacidad que los creados en otros lenguajes. 4. Se pueden optimizar los programas tanto en tamao como en velocidad de ejecucin. A continuacin se presenta una tabla que indica los tamaos de los archivos (fuente, objeto y finalmente el ejecutable) creados por distintos compiladores. No se esta comparando las velocidades de ejecucin, aun que si tomamos en cuenta el tamao del programa ejecutable (Cuya extensin es .EXE), es obvio que mientras ms grande sea este, su ejecucin ser ms tardada debido al tiempo necesario para cargarlo. La tabla siguiente presenta el tamao de los programa muestra que se usaron en tres diferentes lenguajes: BASIC, Clipper y Ensamblador. EL PROGRAMA MUESTRA DESPLEGAR LA SIGIUIENTE CADENA: HOLA QUE TAL!. Lenguaje Basic Clipper Ensamblador Fuente 27 bytes 22 bytes 162 bytes Objeto 651 bytes 572 bytes 169 bytes Ejecutable (.EXE) 12814 bytes 159178 bytes 543 bytes

El programa en lenguaje ensamblador se detalla a continuacin. PROGRAMA:

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Los lenguajes de alto nivel fueron diseados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseado para una computadora especifica, o, de manera ms correcta, para una familia especifica de microprocesadores. A continuacin se listan los requisitos para aprender el lenguaje ensamblador de la PC: Una copia del sistema operativo MS-DOS o PC-DOS y estar familiarizados con su uso. Una copia de un programa ensamblador. Las versiones de Microsoft son conocidas como MASM y QuickAssembler: TASM es de Borland y OPTASM es de System.

Desventajas Del Lenguaje Ensamblador Ahora que hemos visto las diferencias entre lenguajes, a continuacin sealaremos los problemas de trabajar con el ensamblador. Una instruccin mal interpretada o un error de lgica en el programa, pueden crear un caos, a tal grado de que ser necesario apagar y prender la PC. El segundo problema es que la insuficiencia de conocimientos sobre el funcionamiento interno de la PC puede causar efectos impredecibles. Es necesario ajustarse a una convencin respecto al uso de interrupciones. Por ltimo debe tenerse presente que el programa puede volverse ms complejo conforme se le agregan rutinas o funciones adicionales. Uso del lenguaje Ensamblador:

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Mejora la eficiencia de una rutina que se ha transformado en cuello de botella Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que no son soportadas por los lenguajes de alto nivel Escribir manejadores de dispositivos para comunicarse directamente con hardware especial tales como tarjetas de red Manipulacion directa del hardware Al escribir virus de computadoras, bootloaders, ciertos driver de dispositivos

1.1.2 Escalabilidad de los microprocesadores.


La escalabilidad En telecomunicaciones y en ingeniera informtica, es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida. El microprocesador Es un circuito integrado que contiene algunos o todos los elementos hardware, y el de CPU, que es un concepto lgico. Una CPU puede estar soportada por uno o varios microprocesadores, y un microprocesador puede soportar una o varias CPU. Un ncleo suele referirse a una porcin del procesador que realiza todas las actividades de una CPU real. Es uno de los logros ms sobresalientes del siglo XX. Hace un cuarto de siglo tal afirmacin habra parecido absurda. Pero cada ao, el microprocesador se acerca ms al centro de nuestras vidas, ninguna otra invencin en la historia se ha diseminado tan aprisa por todo el mundo. Hoy existen casi 15,000 millones de microchips de alguna clase en uso (el equivalente de dos computadoras poderosas para cada hombre, mujer y nio del planeta). Unidad de Control. Todos los recursos de la computadora son administrados desde la unidad de control, cuya funcin es coordinar todas las actividades de la computadora. Unidad aritmtica-lgica (ALU). Cuando la unidad de control encuentra una instruccin que involucra aritmtica o lgica, le pasa el control al segundo componente de la CPU.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El microprocesador ejecuta instrucciones almacenadas como nmeros binarios organizados secuencialmente en la memoria principal. La ejecucin de las instrucciones se puede realizar en varias fases: 1. PreFetch, pre lectura de la instruccin desde la memoria principal. 2. Fetch, envo de la instruccin al decodificador 3. Decodificacin de la instruccin, es decir, determinar qu instruccin es y por tanto qu se debe hacer. 4. Lectura de operandos (si los hay). 5. Ejecucin, lanzamiento de las mquinas de estado que llevan a cabo el procesamiento. 6. Escritura de los resultados en la memoria principal o en los registros. Arquitectura

Un microprocesador escalar solamente puede manejar una instruccin que a su vez maneja solo un objeto de datos ala vez. Un microprocesador sper escalar puede procesar tambin solo un objeto de datos por instruccin, pero puede paralelizar este proceso por su diseo, ejecutando varias instrucciones ala vez.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.1.3 Tipos de lenguajes ensambladores.


Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos clasificarlos de acuerdo a caractersticas. As podemos clasificarlos en: Ensambladores Cruzados (Cross-Assembler). Se denominan as los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrn las computadoras donde va a ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios fsicos (discos, impresoras, pantallas, etc.), y de programacin que ofrecen las mquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas.

Ensambladores Residentes. Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecucin, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se haca en cross-assembler, y sin necesidad de programas simuladores. Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, tambin ocupar memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Es el indicado para desarrollos de pequeos sistemas de control y sencillos automatismo empleando microprocesadores. La ventaja de estos ensambladores es que permiten ejecutar inmediatamente el programa; la desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el programa fuente y el programa objeto.

Macroensambladores.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definicin y manipulacin de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes.

Microensambladores. Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intrprete de las mismas interpretaba de igual forma un determinado cdigo de operacin. El programa que indica al intrprete de instrucciones de la UCP cmo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama microensamblador. Existen procesadores que permiten la modificacin de sus microprogramas, para lo cual se utilizan microensambladores. Ensambladores de una fase. Estos ensambladores leen una lnea del programa fuente y la traducen directamente para producir una instruccin en lenguaje mquina o la ejecuta si se trata de una pseudoinstruccin. Tambin va construyendo la tabla de smbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc. Debido a su forma de traduccin, estos ensambladores obligan a definir los smbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado smbolo en una instruccin, se conozca la direccin de dicho smbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado.

Ensambladores de dos fases. Los ensambladores de dos fases se denominan as debido a que realizan la traduccin en dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de smbolos; de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir traduciendo totalmente,

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

puesto que conocen la totalidad de los smbolos utilizados y las posiciones que se les ha asignado. Estos ensambladores son los ms utilizados en la actualidad.

1.1.4 Clasificacin de Memorias.


Diferentes Tipos De Memorias Las memorias han evolucionado mucho desde los comienzos del mundo de la computacin. Conviene recordar los tipos de memorias de semiconductores empleadas como memoria principal y unas ligeras pinceladas sobre cada una de ellas para enmarcar las memorias flash dentro de su contexto. Organizando estos tipos de memoria conviene destacar tres categoras si las clasificamos en funcin de las operaciones que podemos realizar sobre ellas, es decir, memorias de slo lectura, memorias de sobre todo lectura y memorias de lectura escritura. Memorias de slo lectura o ROM : Se usan principalmente en microprogramacin de sistemas. Los fabricantes las suelen emplear cuando producen componentes de forma masiva. Es una memoria solamente de lectura es totalmente inalterable sin esta memoria la maquina no arrancara. La memoria principal es la convencional que va de 0 a 640 kb. Cuando la mquina arranca comienza a trabajar el disco y realiza un testeo, para lo cual necesita memoria, esta memoria es la convencional (ROM) y est dentro del mother (en el bios). Apenas arranca utiliza 300 kb, sigue testeando y llega a mas o menos 540 kb donde se planta. A medida de que comenzaron a haber soft con ms necesidad de memoria apareci la llamada memoria expandida que iba de 640 kb a 1024 kb. Una vez que se utilizaba toda la memoria convencional se utilizaba la expandida que utiliza la memoria RAM. A medida que pasa el tiempo los 1024 kb eran escasos y se creo la memoria extendida que va de 1024 kb a infinito que es la memoria RAM pura. o PROM: (Programmable Read Only Memory): El proceso de escritura es elctrico. Se puede grabar posteriormente a la fabricacin del chip, a diferencia de las anteriores que se graba durante la fabricacin. Permite una nica grabacin y es ms cara que la ROM. Es una memoria digital donde el valor de cada bit depende del estado de un fusible (o antifusible), que puede ser quemado una sola vez. Por esto la memoria puede ser programada (pueden ser escritos los datos) una sola vez a travs de un dispositivo especial, un programador PROM. Estas memorias

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

son utilizadas para grabar datos permanentes en cantidades menores a las ROMs, o cuando los datos deben cambiar en muchos o todos los casos. Pequeas PROM han venido utilizndose como generadores de funciones, normalmente en conjuncin con un multiplexor. A veces se preferan a las ROM porque son bipolares, habitulamente Schottky, consiguiendo mayores velocidades. Una PROM comn se encuentra con todos los bits en valor 1 como valor por defecto de fbrica; el quemado de cada fusible, cambia el valor del correspondiente bit a 0. La programacin se realiza aplicando pulsos de altos voltajes que no se encuentran durante operaciones normales (12 a 21 voltios). El trmino Read-only (slo lectura) se refiere a que, a diferencia de otras memorias, los datos no pueden ser cambiados (al menos por el usuario final). Memorias de sobre todo lectura o EPROM (EPROM son las siglas de Erasable Programmable Read-Only Memory (ROM borrable programable). Es un tipo de chip de memoria ROM inventado por el ingeniero Dov Frohman que retiene los datos cuando la fuente de energa se apaga. En otras palabras, es no voltil. Est formada por celdas de FAMOS (Floating Gate Avalanche-Injection Metal-Oxide Semiconductor) o transistores de puerta flotante. Cada uno de ellos viene de fbrica sin carga, por lo que es ledo como un 1 (por eso una EPROM sin grabar se lee como FF en todas sus celdas). Se programan mediante un dispositivo electrnico que proporciona voltajes superiores a los normalmente utilizados en los circuitos electrnicos. Las celdas que reciben carga se leen entonces como un 0. Una vez programada, una EPROM se puede borrar solamente mediante exposicin a una fuerte luz ultravioleta. Esto es debido a que los fotones de la luz excitan a los electrones de las celdas provocando que se descarguen. Las EPROMs se reconocen fcilmente por una ventana transparente en la parte alta del encapsulado, a travs de la cual se puede ver el chip de silicio y que admite la luz ultravioleta durante el borrado. o EEPRO Mson las siglas de electrically-erasable programmable read-only memory (ROM programable y borrable elctricamente), en espaol o castellano se suele referir al hablar como E PROM y en ingls E-Squared-PROM. Es un tipo de memoria ROM que puede ser programado, borrado y reprogramado elctricamente, a diferencia de la EPROM que ha de borrarse mediante rayos ultravioletas. Aunque una EEPROM puede ser leda un nmero ilimitado de veces, slo puede ser borrada y reprogramada entre 100.000 y 1.000.000 de veces. Estos dispositivos suelen comunicarse mediante protocolos como I C, SPI y Microwire. En otras ocasiones se integra dentro de chips como microcontroladores y DSPs para lograr una mayor rapidez. La memoria flash es una forma avanzada

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

de EEPROM creadas por Dr. Fujio Masuoka mientras trabajaba para Toshiba in 1984 y fueron presentadas en la Reunion de Aparatos Electrnicos de la IEEE de 1984. Intel vio el potencial de la invencin y en 1988 lanzo el primer chip comercial del tipo NOR. o MEMORIA FLASH: Est basada en las memorias EEPROM pero permite el borrado bloque a bloque y es ms barata y densa. La memoria flash es una forma evolucionada de la memoria EEPROM que permite que mltiples posiciones de memoria sean escritas o borradas en una misma operacin de programacin mediante impulsos elctricos, frente a las anteriores que slo permite escribir o borrar una nica celda cada vez. Por ello, flash permite funcionar a velocidades muy superiores cuando los sistemas emplean lectura y escritura en diferentes puntos de esta memoria al mismo tiempo. Flash, como tipo de EEPROM que es, contiene un array de celdas con un transistor evolucionado con dos puertas en cada interseccin. Tradicionalmente slo almacenan un bit de informacin. Las nuevas memorias flash, llamadas tambin dispositivos de celdas multi-nivel, pueden almacenar ms de un bit por celda variando el nmero de electrones que almacenan. Estas memorias estn basada en el transistor FAMOS (Floating Gate Avalanche-Injection Metal Oxide Semiconductor) que es, esencialmente un transistor NMOS con un conductor (basado en un xido metlico) adicional entre la puerta de control (CG Control Gate) y los terminales fuente/drenador contenidos en otra puerta (FG Floating Gate) o bien que rodea a FG y es quien contiene los electrones que almacenan la informacin. o Memoria flash de tipo NOR: Cuando los electrones se encuentran en FG, modifican (prcticamente anulan) el campo elctrico que generara CG en caso de estar activo. De esta forma, dependiendo de si la celda est a 1 a 0, el campo elctrico de la celda existe o no. Entonces, cuando se lee la celda poniendo un determinado voltaje en CG, la corriente elctrica fluye o no en funcin del voltaje almacenado en la celda. La presencia/ausencia de corriente se detecta e interpreta como un 1 un 0, reproduciendo as el dato almacenado. En los dispositivos de celda multinivel, se detecta la intensidad de la corriente para controlar el nmero de electrones almacenados en FG e interpretarlos adecuadamente. Para programar una celda de tipo NOR (asignar un valor determinado) se permite el paso de la corriente desde el terminal fuente al terminal sumidero, entonces se coloca en CG un voltaje alto para absorber los electrones y retenerlos en el campo elctrico que genera. Este proceso se llama hotelectron injection. Para borrar (poner a 1, el estado natural del transistor) el contenido de una celda, expulsar estos electrones, se emplea la tcnica de Fowler-Nordheim tunnelling, un proceso de tunelado mecnico cuntico. Esto es, aplicar un voltaje inverso bastante alto al empleado para

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

atraer a los electrones, convirtiendo al transistor en una pistola de electrones que permite, abriendo el terminal sumidero, que los electrones abandonen el mismo. Este proceso es el que provoca el deterioro de las celdas, al aplicar sobre un conductor tan delgado un voltaje tan alto. Cabe destacar que las memorias flash estn subdividas en bloques (en ocasiones llamados sectores) y por lo tanto, para el borrado, se limpian bloques enteros para agilizar el proceso, ya que es la parte ms lenta del proceso. Por esta razn, las memorias flash son mucho ms rpidas que las EEPROM convencionales, ya que borran byte a byte. No obstante, para reescribir un dato es necesario limpiar el bloque primero para reescribir su contenido despus. o Memorias flash de tipo NAND: Basadas en puertas lgicas NAND funcionan de forma ligeramente diferente: usan un tnel de inyeccin para la escritura y para el borrado un tnel de soltado. Las memorias basadas en NAND tienen, adems de la evidente base en otro tipo de puertas, un coste bastante inferior, unas diez veces de ms resistencia a las operaciones pero slo permiten acceso secuencial (ms orientado a dispositivos de almacenamiento masivo), frente a las memorias flash basadas en NOR que permiten lectura de acceso aleatorio. Sin embargo, han sido las NAND las que han permitido la expansin de este tipo de memoria, ya que el mecanismo de borrado es ms sencillo (aunque tambin se borre por bloques) lo que ha proporcionado una base ms rentable para la creacin de dispositivos de tipo tarjeta de memoria. Comparacin de memorias flash basadas en NOR y NAND Para comparar estos tipos de memoria se consideran los diferentes aspectos de las memorias tradicionalmente valorados. La densidad de almacenamiento de los chips es actualmente bastante mayor en las memorias NAND. El coste de NOR es mucho mayor. El acceso NOR es aleatorio para lectura y orientado a bloques para su modificacin. Sin embargo, NAND ofrece tan solo acceso directo para los bloques y lectura secuencial dentro de los mismos. En la escritura de NOR podemos llegar a modificar un solo bit. Esto destaca con la limitada reprogramacin de las NAND que deben modificar bloques o palabras completas. La velocidad de lectura es muy superior en NOR (50100 ns) frente a NAND (10 s de la bsqueda de la pgina + 50 ns por byte). La velocidad de escritura para NOR es de 5 s por byte frente a 200 s por pgina en NAND. La velocidad de borrado para NOR es de 1 s por bloque de 64 KB frente a los 2 ms por bloque de 16 KB en NAND. La fiabilidad de los dispositivos basados en NOR es realmente muy alta, es relativamente inmune a la corrupcin de datos y tampoco tiene bloques errneos frente a la escasa fiabilidad de los sistemas NAND que requieren correccin de datos y existe la posibilidad de que queden bloques marcados como errneos e inservibles. En resumen, los sistemas basados en NAND son ms baratos y rpidos pero carecen de una fiabilidad que los haga eficiente, lo que demuestra la necesidad imperiosa de un buen sistema de archivos. Dependiendo de qu sea lo que se busque, merecer la pena decantarse por uno u otro tipo.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Memorias de Lectura/Escritura (RAM) o MEMORIA RAM o Memoria e acceso Aleatorio ( Random Acces Memory ).Esta memoria es como un escritorio al igual que los escritorios tienen cajones donde ordenan la informacin, cuanto mas grande sea el escritorio (plano de apoyo) mas cajones voy a tener de tal suerte que el micro va a perder menos tiempo en buscar y ordenar la informacin La importancia de esta memoria es tan grande que si esta ausente la PC NO ARRANCA, Acta como si estuviera muerta no hay sonido ni cursor en la pantalla ni luces que se enciendan o apaguen. Para que sirve: Almacena las instrucciones que debe ejecutar el micro en cada momento Este es el lugar fsico donde debe trabajar el procesador cuando abrimos un programa sus instrucciones se copian automticamente en la memoria, y cuando cerremos el programa todo se borrara ( volatizara ) Tambin copia los trabajos que estamos haciendo en ese programa En la Ram se copian programas que coordinan el funcionamiento de la Pc: La primera parte de la Ram esta reservada para guardar las instrucciones de los dispositivos electrnicos. En este lugar no se puede guardar nada ya que lo utiliza el sistema para saber como manejar los dispositivos. o DRAM (Dynamic Random Access Memory): Los datos se almacenan como en la carga de un condensador. Tiende a descargarse y, por lo tanto, es necesario un proceso de refresco peridico. Son ms simples y baratas que las SRAM. Este tipo de memoria se utilizan des los aos 80 hasta ahora en toda las computadoras Esta memoria tiene una desventaja hay que estimularla (Refresco) permanentemente porque se olvida de todo. Como se estimula: requiere un procesador que ordene el envi de cargas elctricas, a este tipo de memorias se lo conoce como memoria estticas Otras de las desventajas de esta memoria es que es lenta y la ventaja es que es barata. Obviamente al tener estas desventajas se le incorporaron distintas tecnologas para mejorarlas. o FPM DRAM. La ventaja de este memoria consiste en pedir permiso una sola vez u llevarse varios datos consecutivos esto comenz a usarse principios de os aos noventa y dio buenos resultados a estos mdulos se los denominaron SIMM FPM DRAM y pueden tener 30 o 72 pines y se la utiliza en las Pentium I lo que logro con esta tecnologa es agilizar el proceso de lectura, estas memorias ya no se utilizan mas. o EDO DRAM Estas memorias aparecieron en el 95, y se hicieron muy populares ya que estaban presentes en todas las Pentium I MMX y tenia la posibilidad de localizar un dato mientras transfera otro de diferencia de las anteriores que mientras transfera un dato se bloqueaba. Estas EDO SIMM eran de 72 pines

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

o RDRAM. Es una memoria muy costosa y de compleja fabricacin y la utilizan procesador Pentim IV para arriba corre a velocidades de 800 Mhz sus mdulos se denominan Rimm de 141 pines y con un anho de 16 bits, para llenar un banco de memoria de 64 bits hay que instalar 4 memorias, es posible que estas memoria sean retiradas del mercado por ser tan costosas o SDRAM: Esta Memoria entro en el mercado en los aos 97, y mejoro la velocidad siendo su ritmo de trabajo igual a la velocidad de Bus (FSB) es decir que tienen la capacidad de trabajar a la misma velocidad de mother al que se conectan. Es tos mdulos de 168 Pines son conocidos como DIMM SDRAM PC 66 y 100, 133, obviamente si instalo una de 133, en un mother de 100 va a funcionar a 100Mhz. o DDR SDRAM: En este caso se consigui que pudiera realizar dos transferencia en una pulsacin o tic-tac de reloj, esta memoria pude alcanzar velocidades de 200 a 266Mhz, Tiene una ventaja mas trabaja en sincrona con el bus del mother si este acelera la memoria tambin pero tiene una desventaja son muy caras. Se conoce como DIMM DDR SDRAM PC 1600 Y PC 2100. o SRAM (Static Random Access Memory): Los datos se almacenan formando biestables, por lo que no require refresco. Igual que DRAM es voltil. Son ms rpidas que las DRAM y ms caras. o MEMORIA CACH o SRAM: La memoria cach trabaja igual que la memoria virtual, tenemos cach en el procesador, en los discos y en el mother y nos guarda direcciones de memoria. Si ejecutamos un programa en principio, lo cerramos y luego los volvemos a ejecutar, la memoria cach nos guarda la ubicacin (direccin) en el disco, cuando lo ejecut, y lo que hicimos con el programa. Es mucho ms rpida cuando ya usamos un programa Existen 3 tipos de memoria cach: Cache L1: Esta dividido en dos bloques uno contiene las instrucciones y otro los datos y cuando se habla de su capacidad de almacenamiento se dice que es de 216 Kb .

El cache L1 se encuentra dentro del interior del procesador y funciona a la misma velocidad que el micro con capacidades que van desde 28 hasta 264Kb

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Cache L2 interno y externo: La primeras memoria cach estaban ubicadas en el mother luego se construyeron en el procesador, pero no dentro del dado del procesador por lo que es mas lento que el cach L1, mientras que el externo lo encontramos el mother. La computadoras que tienen las tres tecnologas de cach van a ser mas rpidas. Cache L3: Algunos micro soportan un nivel de cach mas el L3 que esta localizado en el mother. EL AMD 6k-3 soporta este cach.

1.1.5 Unidades de entrada / salida.


En computacin, entrada/salida, tambin abreviado E/S o I/O (del original en ingls input/output), es la coleccin de interfaces que usan las distintas unidades funcionales (subsistemas) de un sistema de procesamiento de informacin para comunicarse unas con otras, o las seales (informacin) enviadas a travs de esas interfaces. Las entradas son las seales recibidas por la unidad, mientras que las salidas son las seales enviadas por sta. Para diferenciar los dispositivos tenemos dos enfoques posibles, el primero de ellos se centra en el modo de almacenar la informacin (clasificando los dispositivos como de bloque o de carcter) 1 y el segundo enfoque se centra en el destinatario de la comunicacin (usuario, maquina, comunicadores)2 Un dispositivo de bloque almacena la informacin en bloques de tamao fijo. Al ser el bloque la unidad bsica de almacenamiento, todas las escrituras o lecturas se realizan mediante mltiplos de un bloque. Es decir escribo 3 o 4 bloques, pero nunca 3,5 bloques. El tamao de los bloques suele variar entre 512 Bytes hasta 32.768 Bytes. Un disco duro entrara dentro de esta definicin. A diferencia de un dispositivo de bloque un dispositivo de carcter, no maneja bloques fijo de informacin sino que enva o recibe un flujo de caracteres. Dentro de esta clase podemos encontrar impresoras o interfaces de red. Entre cada categora y dispositivo, hay grandes diferencias:

velocidad de transferencia de datos: varios rdenes de magnitud para transferir los datos, segn las necesidades de cada dispositivo aplicacin: la funcionalidad para la que esta diseado un dispositivo tiene influencia sobre el software por ende lo tendr sobre el sistema operativo. complejidad de control: cada dispositivo tiene una complejidad asociada, no es lo mismo controlar un ratn que gestionar un disco duro.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

unidad de transferencia: datos transferidos como un flujo de bytes/caracteres o en bloques de tamao fijo representacin de datos: cada dispositivo puede usar su propia codificacin de datos condiciones de error: el porqu del error, su manera de notificarlo as como sus consecuencias difiere ampliamente entre los dispositivos

Algunos dispositivos de entrada y salida:

Entrada: o Teclado o Ratn o Joystick o Lpiz ptico o Micrfono o Webcam o Escner o Escner de cdigo de barras Salida: o Monitor o Altavoz o Auriculares o Impresora o Plotter o Proyector Entrada/salida: o Unidades de almacenamiento o CD o DVD o Mdem o Fax o Memory cards o USB o Router o Pantalla tctil o Dispositivos hpticos

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.2 EL MICROPROCESADOR
Con la aparicin de las computadoras personales (PC) y la reduccin en el costo delas mismas, el microprocesador se convirti en uno de los dispositivos electrnicos mas importantes en la historia de la electrnica. Bsicamente, un microprocesador es un circuito electrnico de muy alta escala de integracin, capaz de realizar una infinidad de tareas de forma repetitiva a velocidades muy altas. Esto se logra por medio de la lgica dictada por un conjunto de instrucciones que el microprocesador interpreta y ejecuta y que recibe el nombre de programa. Desde su aparicin en 1971 el microprocesador ha sufrido una gran cantidad de cambios, todos ellos hacia el lado de aumentar su capacidad y velocidad de procesamiento. Para poder utilizar todo el potencial que encierra un microprocesador, es necesario conocer y comprender su lenguaje natural, esto es: el lenguaje ensamblador. Una de las primeras computadoras digitales fue la maquina llamada ENIAC (integrador y computador numrico electrnico). ENIAC media mas de 18 pies de alto y tenia 18 pies de largo. Contena aproximadamente 18,000 tubos de vaco, pesaba mas de 30 toneladas, y requera 1500 pies cuadrados de espacio. Mientras ENIAC estaba en construccin el doctor John Von Neuman, hizo un escrito en colaboracin con A. W. Burks y H. H. Goldstein que definira la arquitectura usada por las prximas computadoras hasta el da de hoy. Ahora llamado concepto de programa almacenado, Von Neuman sugiri que en vez de reiniciar la computadora por cada nueva tarea, el programa de instrucciones deba ser almacenado en una unidad de memoria al igual que los datos. La computadora resultante seria entonces programable por software en vez de programable por hardware. Al principio, la CPU de una computadora fue construida usando muchos circuitos lgicos y tarjetas de circuito. Hoy, toda esta circuitera ha sido reducida a un pequesimo chip de silicio, o circuito integrado, llamado el microprocesador. La computadora entera incluyendo el microprocesador, la memoria e I/O, es llamada una microcomputadora. Los microprocesadores Intel se derivan de un chip cuyo numero de parte fue 8086. Versiones subsecuentes de este chip han sido numeradas 80286,

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

80386 y 80486. El termino 80x86 es de esta forma usado para describir a la familia de microprocesadores Intel compatibles. La temporizacin bsica de la computadora es controlada por un oscilador de onda cuadrada o circuito generador de reloj. Esa seal es usada para sincronizar todas las actividades dentro de la computadora, determina que tan rpido las instrucciones del programa pueden ser ledos de la memoria y ejecutados. El CPU contiene muchos registros de datos (flip-flops conectados en serie uno con otro). Algunos son de propsito general y son usados para almacenar temporalmente informacin. Otros son para un propsito especial. El acumulador por ejemplo, es reservado para realizar operaciones matemticas complejas como multiplicar y dividir. En los microprocesadores 8086 todos los datos destinados a los dispositivos de I/O deben pasar a travs de este registro. El ciclo bsico de procesamiento comienza con una lectura de memoria o extraccin. El registro apuntador de instrucciones (IP) (tambin llamado el contador del programa) contiene la direccin de la celda de memoria que ser seleccionada. En computacin, apunta a la instruccin del programa que ser ledo. Por ejemplo IP esta almacenando la direccin 672,356, y el equivalente binario de esta direccin es sacado a travs de las lneas del sistema de bus de direcciones y enrutado hacia la unidad de memoria. La unidad de memoria consiste en un gran nmero de localidades de almacenamiento, cada una con su propia direccin nica. Debido a que el CPU puede acceder aleatoriamente a cualquier localidad de esta memoria, el termino memoria de acceso aleatorio (RAM) es usado continuamente. En este ejemplo, asumimos que cada localidad de memoria es de 8 bits de ancho, referido como un byte. Esta organizacin de memoria es tpica para la mayora de los microprocesadores el da de hoy. Una importante caracterstica de la RAM es su volatilidad. Debido a esto, una porcin de la unidad de memoria es construida usando chips de memoria de solo lectura (ROM). El programa almacenado en una ROM es permanente y por lo tanto no hay perdidas cuando la energa esta ausente. Como su nombre implica los datos almacenados en una ROM solo pueden ser leidos no escritos. Un programa especial es requerido para escribir datos dentro de la ROM (BIOS). El circuito selector/decodificador de la direccin de la unidad de memoria examina el numero binario y las lneas de direccin y selecciona la localidad de memoria respectiva a ser accesada. El trabajo del decodificador de instrucciones es reconocer y activar los circuitos apropiados en el CPU necesitadas para llevar cada instruccin nueva al mismo tiempo que es leda de la memoria. La lista de todas estas instrucciones reconocidas por el decodificador es llamada el set de instrucciones.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El lenguaje ensamblador es muy poderoso. Los recursos completos del procesador y la computadora estn disponibles para el programador, sin restricciones. Y debido a que las instrucciones creadas son nativas del procesador, un programa en lenguaje ensamblador se ejecuta ms rpido que cualquier otro tipo de programa. Aun as muchos programadores huyen del lenguaje ensamblador. Esto es debido a que los programas en lenguaje ensamblador trabajan directamente con el procesador, y es posible escribir programas que descompongan a la computadora.

Terminales Del Microprocesador


En esta seccin se realizara una breve descripcin del conjunto de terminales del microprocesador mas representativo de la familia 80x86. El microprocesador 8086 puede trabajar en dos modos diferentes: el modo mnimo y el modo mximo. En el modo mximo el microprocesador puede trabajar en forma conjunta con un microprocesador de datos numrico 8087 y algunos otros circuitos perifricos. En el modo mnimo el microprocesador trabaja de forma mas autnoma al no depender de circuitos auxiliares, pero esto a su vez le resta flexibilidad. En cualquiera de los dos modos, las terminales del microprocesador se pueden agrupar de la siguiente forma: o o o o o Alimentacin Reloj Control y estado Direcciones Datos

El 8086 cuenta con tres terminales de alimentacin: tierra (GND) en las terminales 1 y 20 y Vcc=5V en la terminal 40. En la terminal 19 se conecta la seal de reloj, la cual debe provenir de un generador de reloj externo al microprocesador. El 8086 cuenta con 20 lneas de direcciones (al igual que el 8088). Estas lneas son llamadas A0 a A19 y proporcionan un rango de direccionamiento de 1MB. Para los datos, el 8086 comparte las 16 lneas mas bajas de sus lneas de direcciones, las cuales son llamadas AD0 a AD15. Esto se logra gracias a un canal de datos y direcciones multiplexado.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

En cuanto a las seales de control y estado tenemos las siguientes:

La terminal MX/MN controla el cambio de modo del microprocesador. Las seales S0 a S7 son seales de estado, estas indican diferentes situaciones acerca del estado del microprocesador. La seal RD en la terminal 32 indica una operacin de lectura. En la terminal 22 se encuentra la seal READY. Esta senal es utilizada por los diferentes dispositivos de E/S para indicarle al microprocesador si se encuentran listos para una transferencia. La seal RESET en la terminal 21 es utilizada para reinicializar el microprocesador. La seal NMI en la terminal 17 es una seal de interrupcin no enmascarable, lo cual significa que no puede ser manipulada por medio de software. La seal INTR en la terminal 18 es tambin una seal de interrupcin, la diferencia radica en que esta seal si puede ser controlada por software. Las interrupciones se estudian mas adelante. La terminal TEST se utiliza para sincronizar al 8086 con otros microprocesadores en una configuracin en paralelo. Las terminales RQ/GT y LOCK se utilizan para controlar el trabajo en paralelo de dos o ms microprocesadores. La seal WR es utilizada por el microprocesador cuando este requiere realizar alguna operacin de escritura con la memoria o los dispositivos de E/S. Las seales HOLD y HLDA son utilizadas para controlar el acceso al bus del sistema.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Diagrama De Componentes Internos Del Microprocesador

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.2.1 Buses
En Arquitectura de computadores, el bus es un sistema digital que transfiere datos entre los componentes de un computador o entre computadores. Estn formados por cables o pistas en un circuito impreso, dispositivos como resistencias y condensadores adems de circuitos integrados. En los primeros computadores electrnicos, todos los buses eran de tipo paralelo, de manera que la comunicacin entre las partes de computador se haca por medio de cintas o muchas pistas en el circuito impreso, en los cuales cada conductor tiene una funcin fija y la conexin es sencilla requiriendo nicamente puertos de entrada y de salida para cada dispositivo. La tendencia en los ltimos aos es el uso de buses seriales como el USB, Firewire para comunicaciones con perifricos y el reemplazo de buses paralelos para conectar toda clase de dispositivos, incluyendo el microprocesador con el chipset en la propia placa base. Son conexiones con lgica compleja que requieren en algunos casos gran poder de computo en los propios dispositivos, pero que poseen grandes ventajas frente al bus paralelo que es menos inteligente. Existen diversas especificaciones de bus que definen un conjunto de caractersticas mecnicas como conectores, cables y tarjetas, adems de protocolos elctricos y de seales. Funcionamiento La funcin del Bus es la de permitir la conexin lgica entre distintos subsistemas de un sistema digital, enviando datos entre dispositivos de distintos rdenes: desde dentro de los mismos circuitos integrados, hasta equipos digitales completos que forman parte de supercomputadoras. La mayora de los buses estn basados en conductores metlicos por los cuales se trasmiten seales elctricas que son enviadas y recibidas con la ayuda de integrados que poseen una interfaz del bus dado y se encargan de manejar las seales y entregarlas como datos tiles. Las seales digitales que se trasmiten son de datos, de direcciones o seales de control. Los buses definen su capacidad de acuerdo a la frecuencia mxima de envo y al ancho de los datos. Por lo general estos valores son inversamente proporcionales: si se tiene una alta frecuencia, el ancho de datos debe ser pequeo. Esto se debe a que la interferencia entre las seales (crosstalk) y la dificultad de sincronizarlas, crecen con la frecuencia, de manera que un bus con pocas seales es menos susceptible a esos problemas y puede funcionar a alta velocidad.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Todos los buses de computador tienen funciones especiales como las interrupciones y las DMA que permiten que un dispositivo periferico acceda a una CPU o a la memoria usando el mnimo de recursos. Primera Generacin Bus Backplane del PDP-11 junto con algunas tarjetas. Los primeros computadores tenan 2 sistemas de buses, uno para la memoria y otro para los dems dispositivos. La CPU tena que acceder a dos sistemas con instrucciones para cada uno, protocolos y sincronizaciones diferentes. La empresa DEC noto que el uso de dos buses no era necesaria si se combinaban las direcciones de memoria con los de los perifricos en un solo espacio de memoria (mapeo), de manera que la arquitectura se simplificaba ahorrando costos de fabricacin en equipos fabricados en masa, como eran los primeros minicomputadores. Los primeros microcomputadores se basaban en la conexin de varias tarjetas de circuito impreso a un bus Backplane pasivo que serva de eje al sistema. En ese bus se conectaba la tarjeta de CPU que realiza las funciones de arbitro de las comunicaciones con las dems tarjetas de dispositivo conectadas; las tarjetas incluan la memoria, controladoras de diskette y disco, adaptadores de vdeo. La CPU escriba o lea los datos apuntando a la direccin que tuviera el dispositivo buscado en el espacio nico de direcciones haciendo que la informacin fluyera a travs del bus principal. Entre las implementaciones mas conocidas, estn los buses Bus S-100 y el Bus ISA usados en varios microcomputadores de los 70s y 80s. En ambos, el bus era simplemente una extensin del bus del procesador de manera que funcionaba a la misma frecuencia. Por ejemplo en los sistemas con procesador Intel 80286 el bus ISA tenia 6 u 8 Mhz de frecuencia dependiendo del procesador.[1] Segunda generacin Jerarqua de diversos buses en un equipo moderno: SATA, FSB, AGP, USB entre otros. El hecho de que el bus fuera pasivo y que usara la CPU como control, representaba varios problemas para la ampliacin y modernizacin de cualquier sistema con esa arquitectura. Adems que la CPU utilizaba una parte considerable de su potencia en controlar el bus. Desde que los procesadores empezaron a funcionar con frecuencias mas altas, se hizo necesario jerarquizar los buses de acuerdo a su frecuencia: se creo el concepto de bus de sistema (conexin entre el procesador y la RAM) y de buses de expansin, haciendo necesario el uso de un Chipset para conectar todo el sistema.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El bus ISA utilizado como backplane en el PC IBM original paso de ser un bus de sistema a uno de expansin, dejando su arbitraje a un integrado del chipset e implementando un bus a una frecuencia mas alta para conectar la memoria con el procesador. En cambio el bus Nubus era independiente desde su creacin, tenia un controlador propio y presentaba una interfaz estndar al resto del sistema, permitiendo su inclusin en diferentes arquitecturas. Fue usado en diversos equipos, incluyendo algunos de Apple y se caracterizaba por tener un ancho de 32 bits y algunas capacidades Plug and play (autoconfiguracin), que lo hacan muy verstil y adelantado a su tiempo. Entre otros ejemplos de estos buses autnomos, estn el AGP y el bus PCI.es algo q sirve para trasladar informacin Tercera generacin Los buses de tercera generacin se caracterizan por tener conexiones punto a punto, a diferencia de los buses arriba nombrados en los que se comparten seales de reloj, y otras partes del bus. Esto se logra reduciendo fuertemente el nmero de conexiones que presenta cada dispositivo usando interfaces seriales. Entonces cada dispositivo puede negociar las caractersticas de enlace al inicio de la conexin y en algunos casos de manera dinmica, al igual que sucede en las redes de comunicaciones. Entre los ejemplos mas notables, estn los buses PCI-Express, el Infiniband y el Hyper Transport.

TIPOS DE BUS Existen dos grandes tipos clasificados por el mtodo de envi de la informacin: bus paralelo o serial. Hay diferencias en el desempeo y hasta hace unos aos se consideraba que el uso apropiado dependa de la longitud fsica de la conexin: para cortas distancias el bus paralelo, para largas el serial. Bus paralelo Es un bus en el cual los datos son enviados por bytes al mismo tiempo, con la ayuda de varias lineas que tienen funciones fijas. La cantidad de datos enviada es bastante grande con una frecuencia moderada y es igual al ancho de los datos por la frecuencia de funcionamiento. En los computadores ha sido usado de manera intensiva, desde el bus del procesador, los buses de discos duros, tarjetas de expansin y de vdeo, hasta las impresoras.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Diagrama de un Bus Backplane como extensin del bus de procesador. El Front Side Bus de los procesadores Intel es un bus de este tipo y como cualquier bus presenta unas funciones en lneas dedicadas: Las Lneas de Direccin son las encargadas de indicar la posicin de memoria o el dispositivo con el que se desea establecer comunicacin. Las Lineas de Control son las encargadas de enviar seales de arbitraje entre los dispositivos. Entre las ms importantes estn las lineas de interrupcin, DMA y los indicadores de estado. Las Lneas de Datos trasmiten los bits, de manera que por lo general un bus tiene un ancho que es potencia de 2. Un bus paralelo tiene conexiones fsicas complejas, pero la lgica es sencilla, que lo hace til en sistemas con poco poder de computo. En los primeros microcomputadores, el bus era simplemente la extensin del bus del procesador y los dems integrados escuchan las lneas de direcciones, en espera de recibir instrucciones. En el PC IBM original, el diseo del bus fue determinante a la hora de elegir un procesador con I/O de 8 bits (Intel 8088), sobre uno de 16 (el 8086), porque era posible usar hardware diseado para otros procesadores, abaratando el producto. Bus serie En este los datos son enviados, bit a bit y se reconstruyen por medio de registros o rutinas de software. Est formado por pocos conductores y su ancho de banda depende de la frecuencia. Es usado desde hace menos de 10 aos en buses para discos duros, tarjetas de expansin y para el bus del procesador.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.2.2 Registros
Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15, 14, 13. 3, 2, 1, 0).

Descripcin de componentes a) Registros Generales (AX, BX, CX, DX)


Existen 4 registros denominados AX, BX, CX y DX que en realidad tienen asignados usos caractersticos, aunque pueden ser utilizados a discrecin para cualquier cosa que necesitemos. AX es denominado acumulador; suele contener uno de los operandos que intervienen en las operaciones aritmticas y lgicas, y despus de esta, el resultado de la operacin. En general las instrucciones que trabajan con este registro (o su mitad inferior) tienen un micro cdigo mas simple que la misma instruccin ejecutada con otro registro. BX es el registro base, suele contener la direccin de inicio de una tabla de valores. Es utilizado para calcular direcciones relativas de datos en la memoria. CX es denominado contador. Las instrucciones de bucle (LOOP) utilizan este registro como contador. Su funcin principal es la de almacenar el numero de veces que un ciclo de instrucciones debe repetirse. DX es un registro de datos, multiuso. Se utiliza en operaciones de multiplicacin y divisin junto con AX. En operaciones de entrada/salida de puertos IN/OUT, su mitad inferior DL, contiene el numero de puerto. Por lo general se utiliza para acceder a las variables almacenadas en la memoria. Aunque estos cuatro registros son de 16 bits (como los 10 restantes), en caso necesario pueden ser utilizados en dos mitades (nibbles), "High" y "Low", de 8 bits, con lo que puede considerarse que existen 12 registros de uso general (no simultaneos), los anteriores y sus mitades: AH; AL; BH; BL; CH; CL; DH y DL.

b) Registros de Apuntadores (SP, BP)

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El puntero de pila SP ("Stack Pointer"), seala el desplazamiento del final de la pila dentro del segmento de pila SS. En caso necesario la pila puede crecer a partir de este punto, de forma que por ejemplo, una nueva invocacin de funcin creara un nuevo registro de activacin que comenzara en este punto. El puntero base BP ("Base pointer") seala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinmicas. El 8086 tambin cuenta con dos registros apuntadores SP y BP. Estos registros reciben dichos nombre por que su funcin principal es la de apuntar a alguna direccin de memoria especifica.

c) Registros ndices (SI, DI).


Existen dos registros denominados "de ndice", en razn de su utilizacin muy particular; el ndice fuente SI ("Source index") y el ndice destino DI ("Destination index"). Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas instrucciones especficamente pensadas para transferir datos (dentro de un rango de posiciones de memoria), desde un punto inicial de un segmento de datos, a otro. SI y DI estn estrechamente ligados con operaciones de cadenas de datos. SI (ndice Fuente) Proporciona la direccin inicial para que una cadena sea manipulada. DI (ndice Destino) Proporciona la direccin de destino donde por lo general una cadena ser almacenada despus de alguna operacin de transferencia.

d) Registros de Segmentos (SS, CS, DS, ES)


Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria). Utilizndolos en conjuncin con otros registros que sealan las direcciones concretas dentro de estos segmentos (los desplazamientos), permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits). Segmento de cdigo CS ("Code segment"). Seala la direccin del segmento de cdigo del programa que se esta ejecutando. Contiene la direccin base del lugar donde inicia el programa almacenado en memoria.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Segmento de datos DS ("Data segment"). Seala la direccin del segmento de datos del programa en ejecucion. Contiene la direccin base del lugar del rea de memoria donde fueron almacenadas las variables del programa. Segmento de pila SS ("Stack segment"). Seala la direccin del segmento donde esta la pila del programa. Contiene la direccin base del lugar donde inicia el rea de memoria reservada para la pila. Segmento extra ES ("Extra segment"). Es un segmento auxiliar a los anteriores, se utiliza para senalar espacio extra en alguno de los segmentos o para almacenar momentneamente direcciones intermedias. Este registro por lo general contiene la misma direccin que el registro DS. Nota: Puede ocurrir que programas pequenos utilicen el mismo segmento para el codigo, los datos y la pila.

e) Registro apuntador de instrucciones (IP).


Existen registros destinados a contener direcciones; estas direcciones son desplazamientos dentro de los segmentos indicados por los registros de segmento. El primero, denominado indistintamente puntero de instruccin IP ("Instruccin pointer") y contador de programa PC ("Program counter"), indica el desplazamiento (dentro del segmento de cdigo CS) de la prxima instruccin a ejecutar. IP (Apuntador de instrucciones) Este registro contiene la direccin de desplazamiento del lugar de memoria donde esta la siguiente instruccin que ser ejecutada por el microprocesador.

f) Registro de Estado (banderas)


Existe un registro especial, el registro de estado (FLAGS), en el que 9 de los 18 bits actan como semforos (indicadores del estado del procesador y del resultado de determinadas operaciones). Por ejemplo, si despus de una suma aritmtica hay o no desbordamiento del bit mas significativo. Cada bits individual puede estar "activo" (1) o "inactivo" (0), y tiene un identificador que termina en F ("Flag").

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El registro de banderas (Flags), tiene como funcin principal almacenar el estad individual de las diferentes condiciones que son manejadas por el microprocesador. Estas condiciones por lo general cambian de estado despus de cualquier operacin aritmtica o lgica:

CF (Acarreo) Esta bandera indica el acarreo o prstamo despus de una suma o resta. OF (Sobreflujo) Esta bandera indica cuando el resultado de una suma o resta de nmeros con signo sobrepasa la capacidad de almacenamiento de los registros. SF (Signo) Esta bandera indica si el resultado de una operacin es positivo o negativo. SF=0 es positivo, SF=1 es negativo. DF (Direccin) Indica el sentido en el que los datos sern transferidos en operaciones de manipulacin de cadenas. DF=1 es de derecha a izquierda y DF=0 es de izquierda a derecha. ZF (Cero) Indica si el resultado de una operacin aritmtica o lgica fue cero o diferente de cero. ZF=0 es diferente y ZF=1 es cero. IF (interrupcin) Activa y desactiva la terminal INTR del microprocesador. PF (paridad) Indica la paridad de un numero. Si PF=0 la paridad es impar y si PF=1 la paridad es par. AF (Acarreo auxiliar) Indica si despus de una operacin de suma o resta ha ocurrido un acarreo de los bits 3 al 4. TF (Trampa) Esta bandera controla la ejecucin paso por paso de un programa con fines de depuracin. g) Cola de Instrucciones La cola de instrucciones es una pila de tipo FIFO (primero en entrar, primero en salir) donde las instrucciones son almacenadas antes de que la unidad de ejecucion las ejecute. h) Unidad de control de la unidad de ejecucin La Unidad de Control CU ("Control Unit") funciona como arbitro del funcionamiento del procesador. Se encarga de coordinar que todos los elementos funcionen de forma armonica. La Unidad de Control, responsable de que todas estas operaciones se ejecuten correctamente, es en realidad el poder ejecutivo de la UCP. i) Buses internos (datos, direcciones)

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Los buses internos son un conjunto de lneas paralelas (conductores) que interconectan las diferentes partes del microprocesador. Existen dos tipos principales: el bus de datos y el bus de direcciones. El bus de datos es el encargado de transportar los datos entre las distintas partes del microprocesador; por otro lado, el bus de direcciones se encarga de transportar las direcciones para que los datos puedan ser introducidos o extrados de la memoria o dispositivos de entrada y salida. j) Unidad aritmtica lgica Como su propio nombre indica, la unidad Aritmetico-Logica ALU ("Arithmetic and Logic Unit "), es responsable de realizar ciertas operaciones aritmticas y lgicas. En cuanto a las primeras, ya hemos indicado que los primeros procesadores solo eran capaces de realizar operaciones de aritmtica bsica con nmeros enteros, y que las operaciones con nmeros fraccionarios deban hacerse mediante artificios software. Esto haba motivado la aparicin de procesadores especficos para estas operaciones, los denominados coprocesadores matemticos. A partir de la introduccin del Intel 80486 el coprocesador matemtico fue incluido en el procesador. La unidad aritmtica de los procesadores actuales no solo puede realizar las operaciones aritmticas bsicas con nmeros enteros o fraccionarios, tambin ejecuta operaciones como raz cuadrada y funciones trascendentes como calculo del seno, coseno, tangente, arco tangente, logaritmos y exponenciacin. Por su parte, la unidad lgica es la responsable de realizar operaciones lgicas como AND, OR, XOR, etc.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.2.3 Modos de direccionamiento.


FUNCIONAMIENTO INTERNO (EJECUCIN DE UN PROGRAMA) Para que un microprocesador ejecute un programa es necesario que este haya sido ensamblado, enlazado y cargado en memoria. Una vez que el programa se encuentra en la memoria, el microprocesador ejecuta los siguientes pasos:
1 2 3 4

5
6

7
8

Extrae de la memoria la instruccin que va a ejecutar y la coloca en el registro interno de instrucciones. Cambia el registro apuntador de instrucciones (IP) de modo que seale a la siguiente instruccin del programa. Determina el tipo de instruccin que acaba de extraer. Verifica si la instruccin requiere datos de la memoria y, si es as, determina donde estn situados. Extrae los datos, si los hay, y los carga en los registros internos del CPU. Ejecuta la instruccin. Almacena los resultados en el lugar apropiado. Regresa al paso 1 para ejecutar la instruccin siguiente.

Este procedimiento lo lleva a cabo el microprocesador millones de veces por segundo. MANEJO DE MEMORIA SEGMENTACIN El microprocesador 8086, cuenta externamente con 20 lneas de direcciones, con lo cual puede direccionar hasta 1 MB (00000h--FFFFFh) de localidades de memoria. En los das en los que este microprocesador fue diseado, alcanzar 1MB de direcciones de memoria era algo extraordinario, solo que exista un problema: internamente todos los registros del microprocesador tienen una longitud de 16 bits, con lo cual solo se pueden direccionar 64 KB de localidades de memoria. Resulta obvio que con este diseo se desperdicia una gran cantidad de espacio de almacenamiento; la solucin a este problema fue la segmentacin. La segmentacin consiste en dividir la memoria de la computadora en segmentos. Un segmento es un grupo de localidades con una longitud mnima de 16 bytes y mxima de 64KB.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

La mayora de los programas diseados en lenguaje ensamblador y en cualquier otro lenguaje definen cuatro segmentos. El segmento de cdigo, el segmento de datos, el segmento extra y el segmento de pila. A cada uno de estos segmentos se le asigna una direccin inicial y esta es almacenada en los registros de segmento correspondiente, CS para el cdigo, DS para los datos, ES para el segmento extra y SS para la pila. DIRECCIN FSICA Para que el microprocesador pueda acceder a cualquier localidad de memoria dentro del rango de 1MB, debe colocar la direccin de dicha localidad en el formato de 20 bits. Para lograr esto, el microprocesador realiza una operacin conocida como clculo de direccin real o fsica. Esta operacin toma el contenido de dos registros de 16 bits y obtiene una direccin de 20 bits. La formula que utiliza el microprocesador es la siguiente: Dir. Fsica = Dir. Segmento * 10h + Dir. Desplazamiento Por ejemplo: si el microprocesador quiere acceder a la variable X almacenada en memoria, necesita conocer su direccin desplazamiento. La direccin segmento para las variables es proporcionada por el registro DS. Para este caso, supongamos que X tiene el desplazamiento 0100h dentro del segmento de datos y que DS tiene la direccin segmento 1000h, la direccin fsica de la variable X dentro del espacio de 1Mb ser: Dir. Fsica = 1000h * 10h +0100h Dir. Fsica = 10000h + 0100h Dir. Fsica = 10100h (direccin en formato de 20 bits).

DIRECCIN EFECTIVA (DESPLAZAMIENTO) La direccin efectiva (desplazamiento) se refiere a la direccin de una localidad de memoria con respecto a la direccin inicial de un segmento. Las direcciones efectivas solo pueden tomar valores entre 0000h y FFFFh, esto es porque los segmentos estn limitados a un espacio de 64 Kb de memoria.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

En el ejemplo anterior, la direccin real de la variable X fue de 10100h, y su direccin efectiva o de desplazamiento fue de 100h con respecto al segmento de datos que comienza en la direccin 10000h.

DIRECCIONAMIENTO DE LOS DATOS El campo de operacin de una instruccin especifica la operacin que se va a ejecutar. Esta operacin debe realizarse sobre algunos datos almacenados en registros de computadora o en palabras de memoria. La manera en que eligen los operados durante la ejecucin del programa depende del modo de direccionamiento de la instruccin. El modo de direccionamiento especifica una regla para interpretar o modificar el campo de direccin de la instruccin antes de que se haga la referencia real al operando. Las computadoras utilizan tcnicas de modo de direccionamiento para acomodar una o las dos siguientes consideraciones:
1

Proporcionar al usuario versatilidad de programacin al ofrecer facilidades como apuntadores a memoria, contadores para control de ciclo, indexacin de datos y reubicacin de datos. Reducir la cantidad de bits en el campo de direccionamiento de la instruccin. La disponibilidad de los modos de direccionamiento proporciona al programador con experiencia en lenguaje ensamblador la flexibilidad para escribir programas mas eficientes en relacin con la cantidad de instrucciones y el tiempo de ejecucin.

2 3

Para comprender los diferentes modos de direccionamiento que se presentaran en esta seccin, es imperativo entender el ciclo de operacin bsico de la computadora. La unidad de control de una computadora esta diseada para recorrer un ciclo de instrucciones que se divide en tres fases principales:
1 Bsqueda de la instruccin de la memoria. 2 Decodificar la instruccin. 3 Ejecutar la instruccin.

Hay un registro en la computadora llamado contador de programa o PC, que lleva un registro de las instrucciones del programa almacenado en la memoria. PC contiene la direccin de la siguiente instruccin que se va a ejecutar y se incrementa cada vez que se recupera una instruccin de la memoria. La decodificacin realizada en el paso 2 determina la operacin que se va a ejecutar, el modo de direccionamiento de la instruccin y la posicin de los operandos.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Despus la computadora ejecuta la instruccin y regresa al paso 1 para hacer la bsqueda de la siguiente instruccin en secuencia. En algunas computadoras el modo de direccionamiento de la instruccin se especifica con un cdigo binario distinto, como se hace con el cdigo de operacin. Otras computadoras utilizan un cdigo binario nico que representa la operacin y el modo de la instruccin. Pueden definirse instrucciones con diversos modos de direccionamiento y, en ocasiones, se combinan dos o mas modos de direccionamiento en una instruccin. Aunque la mayora de los modos de direccionamiento modifican el campo de direccin de la instruccin, hay dos modos que no necesitan el campo de direccin. Son los modos implcito e inmediato. En la mayora de las instrucciones en lenguaje ensamblador, se hace referencia a datos que se encuentran almacenados en diferentes medios, por ejemplo: registros, localidades de memoria, variables, etc. Para que el microprocesador ejecute correctamente las instrucciones y entregue los resultados esperados, es necesario que se indique la fuente o el origen de los datos con los que va a trabajar, a esto se le conoce como direccionamiento de datos. En los microprocesadores 80x86 existen cuatro formas de indicar el origen de los datos y se llaman modos de direccionamiento. Para explicar estos cuatro modos, tomaremos como ejemplo la instruccin mas utilizada en los programas en ensamblador, la instruccin MOV. La instruccin MOV permite transferir (copiar) informacin entre dos operandos; estos operandos pueden ser registros, variables o datos directos colocados por el programador. El formato de la instruccin MOV es el siguiente: Mov Oper1,Oper2 Esta instruccin copia el contenido de Oper2 en Oper1.

IMPLCITO

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

En este modo se especifican los operandos en forma implcita en la definicin de la instruccin. Por ejemplo, la instruccin "complementar acumulador" es una instruccin de modo implcito porque el operando en el registro de acumulador esta implcito en la definicin de la instruccin. De hecho todas las instrucciones de referencia a registro que utilizan un acumulador son instrucciones de modo implcito. Las instrucciones de direccin cero en una computadora organizada con pila son instrucciones de modo implcito porque esta implcito que los operandos estn en la parte superior de la pila. Depende solamente de la instruccin, es decir, la instruccin no lleva parmetros. Particularmente en instrucciones que no accesan memoria, o bien que tienen una forma especifica de accesarla. Ejemplos: PUSHF, POPF, NOP DIRECCIONAMIENTO INMEDIATO En este modo, los datos son proporcionados directamente como parte de la instruccin. En este modo se especifica el operando en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo operando, en lugar de un campo de direccin. Un campo de operando contiene el operando real que se va a usar junto con la operacin especificada en la instruccin. Las instrucciones de modo inmediato son tiles para inicializar registros en un valor constante. Se menciono antes que el campo de direccion de una instruccion puede especificar una palabra de memoria o un registro de procesador. Cuando el campo de direccin especifica un registro de procesador se dice que la instruccion esta en modo de registro. Ejemplo: MOV AX, 34h ; Copia en AX el numero 34h hexadecimal MOV CX, 10 ; Copia en CX el numero 10 en decimal

DIRECTO En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en memoria y su direccin la proporciona en forma directa el campo de direccin de la instruccin. En una instruccin de tipo brinco el campo de direccin especifica la direccin de transferencia de control del programa real.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Este modo se conoce como directo, debido a que en el segundo operando se indica la direccion de desplazamiento donde se encuentran los datos de origen. Ejemplo: MOV AX, [1000h] ; Copia en AX lo que se encuentre almacenado en ; DS:1000h DIRECCIONAMIENTO POR REGISTRO En este modo, los operandos estn en registros que residen dentro de la CPU. Se selecciona el registro particular de un campo de registro en la instruccin. Un campo k bits puede especificar cualquiera de 2 a la k registros. En este modo de direccionamiento, el segundo operando es un registro, el cual contiene los datos con los que el microprocesador ejecutara la instruccin. Ejemplo: MOV AX, BX ;Copia en AX el contenido del registro BX

REGISTRO INDIRECTO Direccionamiento indirecto por registro: Finalmente, en el modo indirecto por registro, el segundo operando es un registro, el cual contiene la direccion desplazamiento correspondiente a los datos para la instruccin. Ejemplo: MOV AX, [BX] ; Copia en AX el dato que se encuentre en la localidad de ; Memoria DS: [BX] Los parentesis cuadrados sirven para indicar al ensamblador que el numero no se refiere a un dato, si no que se refiere a la localidad de memoria. En este modo la instruccion especifica un registro en la CPU cuyo contenido proporciona la direccin del operando en la memoria. En otras palabras, el registro seleccionado contiene la direccin del

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

operando en lugar del operando mismo. Antes de utilizar una instruccion de modo indirecto por registro, el programador debe asegurarse de que la direccion de memoria del operando esta colocada en el registro del procesador con una instruccion previa. Entonces una referencia al registro es equivalente a especificar una direccion de memoria. La ventaja de una instruccion de modo de registro indirecto es que el campo de direccion de la instruccion utiliza menos bits para seleccionar un registro de los que necesitaria para especificar una direccion de memoria en forma directa.

REGISTRO INDIRECTO En este modo, el campo de direccin de la instruccin proporciona la direccin en que se almacena la direccin efectiva en la memoria. El control recupera la instruccin de la memoria y utiliza su parte de direccin para accesar la memoria una vez ms con el fin de leer la direccin efectiva. Unos cuantos modos de direccionamiento requieren que el campo de direccin de la instruccin se sume al contenido de un registro especfico en la CPU. En estos modos la direccin efectiva se obtiene del clculo siguiente: Direccin efectiva = Parte de la instruccin + El contenido de registro CPU. EL registro de CPU utilizado en el calculo puede ser el contador de programa, un registro de ndice o un registro base. En cualquier caso tenemos un modo de direccionamiento diferente que se utiliza para una aplicacin distinta.

REGISTRO RELATIVO En este modo el operando se especifica como un desplazamiento de 8 bits con signo, relativo al PC. Ej. JNC START. Si C=0, entonces el PC se carga con PC + el valor de START.

REGISTRO BASE INDEXADO En este modo el contenido de un registro ndice se suma a la parte de direccin de la instruccin para obtener la direccin efectiva. El registro ndice es un registro CPU especial que contiene un valor ndice. Un campo de direccin de la instruccin define la direccin inicial del arreglo de datos en la memoria. Cada operando del arreglo se almacena en la memoria en relacin con la direccin inicial.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

La distancia entre la direccin inicial y la direccin del operando es el valor del ndice almacenado en el registro de ndice. Cualquier operando en el arreglo puede accesarse con la misma instruccin siempre y cuando el registro ndice contenga el valor de ndice correcto. El registro ndice puede incrementarse para facilitar el acceso a operandos consecutivos. Ntese que si una instruccin de tipo ndice no incluye un campo de direccin en su formato, la instruccin se convierte al modo de operacin de indirecto por registro. Algunas computadoras dedican un registro de CPU para que funcione exclusivamente como un registro ndice. De manera implcita este registro participa cuando se utiliza una instruccin de modo ndice. En las computadoras con muchos registros de procesador, cualquiera de los registros de la CPU pueden contener el nmero de ndice. En tal caso, el registro debe estar especificado en forma explicita en una campo de registro dentro del formato de instruccin. Formato: [ BX o BP + SI o DI (opcionales) + constante (opcional) ] BX o BP indica una localidad base de la memoria. A partir de BX o BP, se puede tener un desplazamiento variable y uno constante. La diferencia es el segmento sobre el que trabajan por defecto: BX por defecto en el segmento de datos BP por defecto en el segmento de pila. Ejemplos: MOV AX, [BX] MOV DX, [BX+2] MOV CX, [BX+DI] MOV DL, [BX+SI+3]

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

REGISTRO A BASE INDEXADO En este modo, el contenido de un registro base se suma a la parte de direccin de la instruccin para obtener la direccin efectiva. Esto es similar al modo de direccionamiento indexado, excepto en que el registro se denomina ahora registro base, en lugar de registro ndice. La diferencia entre los dos modos esta en la manera en que se usan ms que en la manera en que se calculan. Se considera que un registro base contiene una direccin base y que el campo de direccin de la instruccin proporciona un desplazamiento en relacin con esta direccin base. El modo de direccionamiento de registro base se utiliza en las computadoras para facilitar la localizacin de los programas en memoria.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.3 Interrupciones.
Una interrupcion es una bifurcacion a cierta localidad de memoria (RAM o ROM) donde la CPU iniciara la ejecucion de una serie de instrucciones, y al terminar regresara a la siguiente localidad de la instruccion que causo la interrupcion. Las interrupciones se dividen en: Interrupciones de hardware o Interrupciones Internas o Interrupciones Externas Interrupciones de software

1.3.1 Hardware.
Interrupciones internas de hardware Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecucin de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupcin varias veces durante un segundo para mantener la hora actualizada. Aunque no podemos manejar directamente esta interrupcin (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un reloj virtual actualizado continuamente gracias al contador del reloj interno. nicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Interrupciones externas de hardware Las interrupciones externas las generan los dispositivos perifricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. Tambin son generadas por los coprocesadores. No es posible desactivar a las interrupciones externas. Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya funcin es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vas de comunicacin llamadas puertos. Interrupcin 10H

Propsito: Llamar a diversas funciones de video del BIOS. Sintaxis:

Int 10H
Esta interrupcin tiene diversas funciones, todas ellas nos sirven para controlar la entrada y salida de video, la forma de acceso a cada una de las opciones es por medio del registro AH. Aqu veremos nicamente algunas de las funciones de esta interrupcin. Funciones comn de la interrupcin 10H. 02H Seleccin de posicin del cursor 09H Escribe atributo y caracter en el cursor 0AH Escribe carcter en la posicin del cursor 0EH Escritura de caracteres en modo alfanumrico

Funcin 02H

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Uso: Posiciona el cursor en la pantalla dentro de las coordenadas vlidas de texto. Registros de llamada: AH = 02H BH = Pgina de video en la que se posicionar el cursor. DH = Fila DL = Columna Registros de retorno: Ninguno. Las posiciones de localizacin del cursor son definidas por coordenadas iniciando en 0,0, que corresponde a la esquina superior izquierda hasta 79,24 correspondientes a la esquina inferior derecha. Tenemos entonces que los valores que pueden tomar los registros DH y DL en modo de texto de 80 x 25 son de 0 hasta 24 y de 0 hasta 79 respectivamente. Funcin 09H Uso: Desplegar un carcter un determinado nmero de veces con un atributo definido empezando en la posicin actual del cursor. Registros de llamada: AH = 09H AL = Carcter a desplegar BH = Pgina de video en donde se desplegar BL = Atributo a usar Nmero de repeticiones. Registros de retorno: Ninguno Esta funcin despliega un carcter el nmero de veces especificado en CX pero sin cambiar la posicin del cursor en la pantalla. Funcin 0AH Uso: Desplegar un carcter en la posicin actual del cursor. Registros de llamada: AH = 0AH AL = Carcter a desplegar BH = Pgina en donde desplegar BL = Color a usar (slo en grficos). CX = Nmero de repeticiones Registros de retorno: Ninguno.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

La nica diferencia entre esta funcin y la anterior es que sta no permite modificar los atributos, simplemente usa los atributos actuales. Tampoco se altera la posicin del cursor con esta funcin. Funcin 0EH Uso: Desplegar un carcter en la pantalla actualizando la posicin del cursor. Registros de llamada: AH = 0EH AL = Carcter a desplegar BH = Pgina donde se desplegara el carcter BL = Color a usar (solo en grficos) Registros de retorno: Ninguno Interrupcin 16H Propsito: Manejar la entrada/salida del teclado. Sintaxis: Int 16H Veremos dos opciones de la interrupcin 16H, estas opciones, al igual que las de otras interrupciones, son llamadas utilizando el registro AH. Funciones de la interrupcin 16H 00H Lee un carcter de teclado 01H Lee estado del teclado Funcin 00H

Uso: Leer un carcter del teclado. Registros de llamada: AH = 00H Registros de retorno: AH = cdigo de barrido (scan code) del teclado AL = Valor ASCII del carcter. Cuando se utiliza esta interrupcin se detiene la ejecucin del programa hasta que se introduzca un carcter desde el teclado, si la tecla presionada es un carcter ASCII su valor ser guardado en el registro AH, de lo contrario el cdigo de barrido ser guardado en AL y AH contendr el valor 00H.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El cdigo de barrido fue creado para manejar las teclas que no tienen una representacin ASCII como [ALT], [CONTROL], las teclas de funcin, etc. Funcin 01H Uso: Leer estado del teclado. Registros de llamada: AH = 01H Registros de retorno: Si la bandera de cero, ZF, est apagada significa que hay informacin en el buffer, si se encuentra prendida es que no hay teclas pendientes. En caso de existir informacin el registro AH contendr el cdigo de la tecla guardada en el buffer. Interrupcin 17H Propsito: Manejar la entrada/salida de la impresora. Sintaxis: Int 17H Esta interrupcin es utilizada para escribir caracteres a la impresora, inicializarla y leer su estado. Funciones de la interrupcin 16H. 00H Imprime un carcter ASCII 01H Inicializa la impresora 02H Proporciona el estado de la impresora Funcin 00H Uso: Escribir un carcter a la impresora. Registros de llamada: AH = 00H AL = Carcter a imprimir DX = Puerto a utilizar Registros de retorno: AH = Estado de la impresora. El puerto a utilizar, definido en DX, se especifica as: LPT1 = 0, LPT2 = 1, LPT3 = 2 El estado de la impresora se codifica bit por bit como sigue: BIT 1/0 SIGNIFICADO 0 1 Se agot el tiempo de espera 12-

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

3 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicacin 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes. La mayora de los BIOS nicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4. Funcin 01H Uso: Inicializar un puerto de impresin. Registros de llamada: AH = 01H DX = Puerto a utilizar Registros de retorno: AH = Status de la impresora El puerto a utilizar, definido en DX, se especifica as: LPT1 = 0, LPT2 = 1, etc. El estado de la impresora se codifica bit por bit como sigue: BIT 1/0 SIGNIFICADO 0 1 Se agot el tiempo de espera 123 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicacin 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes. La mayora de los BIOS nicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4. Funcin 02H Uso: Obtener el estado de la impresora. Registros de llamada: AH = 01H DX = Puerto a utilizar Registros de retorno: AH = Status de la impresora. El puerto a utilizar, definido en DX, se especifica as: LPT1 = 0, LPT2 = 1, etc.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El estado de la impresora se codifica bit por bit como sigue: BIT 1/0 SIGNIFICADO 0 1 Se agot el tiempo de espera 123 1 Error de entrada/salida 4 1 Impresora seleccionada 5 1 Papel agotado 6 1 Reconocimiento de comunicacin 7 1 La impresora se encuentra libre Los bits 1 y 2 no son relevantes. La mayora de los BIOS nicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

1.3.2 Software
Las interrupciones de software se dividen a su vez en: las interrupciones del BIOS las interrupciones del DOS

Las interrupciones de BIOS son aquellas que, en su mayora, se encargan de controlar los perifricos, aunque en algunas ocasiones tambin abarcan funciones de disco. Las interrupciones del DOS son las que se encargan de administrar la memoria como el disco. Tambin existen interrupciones que manejan la entrada y salida de informacin. Las interrupciones de DOS generalmente se usan cargando el parmetro de la funcin deseada en el registro AH e invocando la interrupcin 21. A este proceso se le llama utilizar las funciones de DOS. En la prctica, esta interrupcin resulta ser la mas usada. Una razn para ellos es la necesidad de mantener la compatibilidad a travs de las futuras versiones del sistema operativo MS-DOS. A continuacin veremos algunos ejemplos.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El programa anterior utiliza la funcin 1 de la interrupcin de BIOS, la cual cambia la forma del cursor. Esta interrupcin exige que la funcin a realiza sea puesta en el registro AH, y el cdigo del cursor en CX. Veamos un ejemplo usando las interrupciones de DOS.

El ejemplo anterior utiliza la interrupcin 21h del DOS. Emplea dos funciones de la misma: la primera lee el teclado (funcin) y la segunda escribe en la pantalla. NOTA: ms adelante veremos con ms detalle las interrupciones.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.4

Estructura de un programa en ensamblador

Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria). Utilizndolos en conjuncin con otros registros que sealan las direcciones concretas dentro de estos segmentos (los desplazamientos), permiten manejar la totalidad de la memoria direccionables (el bus de direcciones es de 20 bits). Segmento de cdigo CS ("Code segment"). Seala la direccin del segmento de cdigo del programa que se esta ejecutando. Contiene la direccin base del lugar donde inicia el programa almacenado en memoria. Segmento de datos DS ("Data segment"). Seala la direccin del segmento de datos del programa en ejecucin. Contiene la direccin base del lugar del rea de memoria donde fueron almacenadas las variables del programa. Segmento de pila SS ("Stack segment"). Seala la direccin del segmento donde esta la pila del programa. Contiene la direccion base del lugar donde inicia el area de memoria reservada para la pila. Segmento extra ES ("Extra segment"). Es un segmento auxiliar a los anteriores, se utiliza para senalar espacio extra en alguno de los segmentos o para almacenar momentneamente direcciones intermedias. Este registro por lo general contiene la misma direccin que el registro DS. Nota: Puede ocurrir que programas pequeos utilicen el mismo segmento para el cdigo, los datos y la pila.

1.5 Procedimiento de ensamble, enlace y ejecucin.


El proceso de crear un programa se divide en cuatro partes. La primera es editar el programa (en su formato fuente), la segunda es ensamblarlo y enlazarlo, la tercera consiste en realizar las correcciones y depuraciones necesarias. El ciclo se cierra en la tercera parte para comenzar de nuevo en la primera. Existen dos formas de crear programas: la primera consiste en utilizar un ensamblador profesional, por ejemplo el MASM (Macro Assembler, de Microsoft), y la segunda en utilizar el Debugger.

EL DEBUGGER

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Bug es un trmino muy utilizado en ingles para escribir una falla en la secuencia de instrucciones de algn programa, que impide a este operar correctamente. Dicha falla puede ser desde un error sintctico hasta un error lgico. Por lo tanto depurar es la accin de corregir fallas. El Debugger es una utilera que nos ayuda a realizar tres tareas: Ver el contenido de las memorias RAM y ROM. Ejecutar el programa, ya sea en su totalidad o una instruccin a la vez Ensamblar y ejecutar programas sobre la marcha. Usando el Debugger se puede trabajar inmediatamente con el lenguaje ensamblador sin necesidad de conocer todos sus requerimientos formales, para asi darse cuenta de su podero y potencial. Debug solo puede crear archivos con extensin .COM de aqu se infiere que los programas no pueden ser mayores de 64 kb y deben comenzar en el desplazamiento 0100H (direccin de memoria donde se cargan los programas tipo .COM). El Debugger se puede llamar Debug.com o Debug.exe, dependiendo de la versin del DOS. El Debugger puede ser invocado de dos formas: la primera es digitar en la lnea para comandos Debug seguido de la tecla enter, y la segunda consiste en proporcionar el nombre del archivo cobre el cual deseamos operar, digitando Debug de archivo y posteriormente la tecla enter.
C:\debug [enter]

En seguida de ejecutarse esta instruccin, aparece un guion en la siguiente lnea. Este guion indica que el Debug se encuentra esperando algn comando. Posteriormente hay que digitar: - r [enter] Donde r es el comando REGISTER del Debug y su propsito es exhibir o modificar uno o ms registros de la CPU. La sintaxis de este comando es r (registro), donde registro es la notacin de un registro valido de la CPU y consta de dos caracteres alfabticos.

COMANDOS DEL DEBUG

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Con el comando A, que nos sirve para introducir las instrucciones, podemos empezar a teclear nuestro programa, y adems cambiar el contenido de alguna lnea en caso de equivocarnos, para terminar de introducir las instrucciones, hay que teclear enter. Con el comando U, se muestra el contenido del programa, y podemos indicarle a partir de cual direccin deseamos que nos muestre el programa. Con el comando T, podemos ejecutar paso a paso el programa, si le indicamos la direccin de inicio, el programa comienza a ejecutarse desde esa direccin, y solo nos ejecuta una instruccin. Cada vez que se ejecute T, el Debug ejecutara la siguiente instruccin. Con el comando G, corremos el programa, y le podemos indicar la direccin de inicio, y la direccin de final, si hacemos esto, el programa corre y se detiene en la direccin que le indiquemos, mostrando el contenido de los registros y banderas al final de la corrida, as como la instruccin en donde se quedo despus de la ejecucin. Con el comando D, muestra el contenido de la memoria, separado por bytes, en caso de ser una cadena, al final de la parte derecha, se muestra la cadena en formato ASCII. Con el comando N, se indica el nombre del programa que deseamos guardar. Para este ejemplo, le pondremos al programa el nombre Program1.Com, hacemos el programa tipo com, ya que en el Debug, cuando hacemos un programa en formato interno, por lo general es de tipo com. Al momento de poner el nombre, debemos indicar cuantos bytes vamos a escribir, en este ejemplo, ponemos 100 bytes en CX, que es la direccin de inicio del programa, y 0 en BX (que es la direccin en donde termina el programa). Con W, escribimos el programa en disco, tomando en cuenta el numero de bytes que hay en BX:CX, y el nombre que le indicamos, guardando el programa en codigo maquina. Debe aparecer un mensaje, indicando cuantos bytes se guardaron. Con el comando L, cargamos el programa a memoria, y con el comando U lo mostramos en pantalla. Antes de cargar o escribir cualquier programa, es necesario indicar el nombre del programa. El comando E, nos sirve para cambiar el contenido de memoria, si no deseamos cambiar un valor, hay que presionar la barra espaciadora, y si deseamos cambiar el valor, hay que teclear el valor inmediatamente despus del valor que tenia antes esta posicin de memoria.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

El comando Q, termina la ejecucin del Debug, regresndonos al sistema operativo. El comando H valor1 valor2 muestra la suma y la resta de dos valores en hexadecimal El comando ? muestra la ayuda del Debug. El programa Debug es til para probar y depurar programas escritos en lenguaje maquina y en lenguaje ensamblador. Proporciona un conjunto de comandos que permiten realizar diferentes operaciones tiles, como desplegar, introducir y rastrear. Debug no distingue entre letras maysculas y minsculas, se pueden introducir los comandos de cualquier forma. Tambin supone que todos los nmeros estn en formato hexadecimal

COMO CONTROLAR LAS CONDICIONES, ITERACIONES Y BIFURCACIONES. Las iteraciones, condiciones y bifurcaciones forman parte de las estructuras bsicas de un programa. Estas le proporcionan a la PC cierto grado de decisin e inteligencia. A continuacin veremos algunos ejemplos de iteracin con condicionales realizados en Debug.

Este programa despliega 20 veces (en la direccin 125, el valor 0014 hexadecimal equivale a 20 decimal) la cadena que empieza en la localidad 102. Hay que observar que la cadena se encuentra entre comillas seguida por un espacio, el valor hexadecimal 0dh (cdigo de retorno de carro), otro

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

espacio, el valor hexadecimal 0ah (cdigo de nueva lnea), otro espacio, y finalmente el smbolo $ (terminacin de la cadena para el ensamblador). Usa la funcin 9 de la interrupcin 21 del DOS. Esta funcin exige que el registro par DS:DX contenga la direccin inicial de la cadena a desplegar. Dicha cadena debe terminar con el signo $. La instruccin para el control de iteracin es LOOP. Esta instruccin salta a la localidad 12d, decrementa automticamente el contenido de CX y sigue su ejecucin hasta que CX sea 0. Veamos una variante. El programa es igual desde la localidad 100h hasta la 124h, donde se escribe la cadena que ser desplegada.

Aqu se estn usando dos instrucciones para controlar la iteracin. La primera sirve para usar el registro BX como una variable, cargarla la cantidad de veces que se quiere desplegar la cadena e irla decrementando de uno en uno mediante la instruccin DEC BX, para posteriormente bifurcar en funcin del resultado de la bandera NZ. La instruccin usada para bifurcar es JNZ; si esta no es igual a 0, entonces itera y despliega de nuevo la cadena; de otra forma termina el programa. Veamos una ltima variante. El programa es igual desde la localidad 100h hasta la 124h, donde se escribe la cadena que se desplegara.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

En esta variacin se uso de nuevo el registro CX como contador, aso como la instruccin nueva JCXZ para controlar la condicin de salto. Como se puede ver existen diferentes maneras de realizar la misma funcin. Ahora estamos listos para ver las interrupciones.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

1.6 Entorno de programacin.


PROGRAMAS EN MS-DOS Bajo el sistema operativo MS-DOS y todos los compatibles como DR-DOS, PC-DOS, etc., tenemos 2 modelos diferentes de programas ejecutables: El modelo .COM El modelo. EXE. Ambos programas (COM y EXE) se cargan y ejecutan en el rea de programas transitorios (TPA) (siempre que haya memoria suficiente para hacerlo), llamndose por tanto 'Programas transitorios'.

PROGRAMAS .COM Los programas .COM son una reminiscencia de la epoca en que predominaba el sistema operativo CP/M. Este sistema operativo usaba la extension COMand para implicar que era un programa ejecutable de los demas si tenia la extension .COM. Este tipo de programas es almacenado en el disco exactamente como sera cargado en la memoria para su ejecucion. Dicho de otra manera, el programa se almacena en el disco como una imagen exacta de lo que se cargara en la memoria. Los programas COM se cargan en memoria a partir de la direccin 100h, justo a continuacin del PSP. Por tanto, cuando creemos nuestro programa .COM debemos indicarle al ensamblador que utilicemos (MASM, TASM, etc.) que nuestro programa empezara a partir de dicha direccin 100H. Esto lo hacemos mediante la pseudo instruccin ORG 100H. Esta instruccin no genera ningn cdigo ejecutable, simplemente le indica al ensamblador con el que estamos trabajando que el cdigo que genere debe empezar en la direccin 100h. Todos los accesos a variables, saltos en el programa, etc. se harn teniendo en cuenta que el programa empieza en la direccin 100h, y no en la 00h. Si no utilizramos la instruccin ORG 100h, el codigo ejecutable resultante estara construido en base a una direccin comienzo 00h. Al cargar el programa en memoria para su ejecucin (a partir de la direccin 100h), habra 100h bytes de diferencia en todos los accesos a memoria, saltos, llamadas a procedimientos, etc. Otra cosa importante a tener en cuenta es la pila. Cuando el DOS carga un programa

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

.COM en memoria para su ejecucin, sita la pila justo al final del segmento en el que se carga el programa.

EJECUCIN DE UN PROGRAMA .COM Cuando un programa .COM empieza su ejecucin, todos los registros de segmentos (CS, DS, SS y ES) contienen el mismo valor (el segmento del PSP). El apuntador de la pila (SP) se inicializa una palabra ms abajo del mximo de memoria disponible para el programa. Esto significa que si tenemos 64 Kb de memoria disponible, el SP tendr 0FFFEH. MS-DOS siempre almacena un cero en la pila antes de pasarle el control al programa. PROGRAMAS .EXE A diferencia de los programas COM (los cuales cuentan como mximo con un segmento (64 KS) para cdigo, datos y pila, es decir, para todo el programa), los programas EXE disponen de toda la memoria del rea de Programas Transitorios (TPA) para su uso. En un programa EXE, los datos, pila y cdigo se definen en segmentos no dependientes. Se utiliza un segmento distinto para cada una de esas tres principales estructuras. Aunque, en realidad, podemos tener varios segmentos de datos, cada uno accesible de forma independiente. El archivo .EXE cuenta con una cabecera que le indica al DOS como ubicar cada uno de los diferentes segmentos definidos en memoria. Esta cabecera la proporciona el programa LINK, nosotros no debemos preocuparnos por ella.

CREACIN DE PROGRAMAS .EXE Para obtener un programa EXE a partir de un cdigo fuente (ASM) deberemos seguir los siguientes pasos: Supongamos que nuestro cdigo fuente tiene por nombre PROG.ASM
1 2

Ensamblar el cdigo fuente. MASM PROG.ASM; (TASM en caso de utilizar Turbo Assembler) Linkar (fusionar) los archivos objeto (OBJ). Convertir el archivo OBJ (Objeto) en EXE (Ejecutable).

Mediante este paso convertimos nuestro archivo OBJ en un archivo ejecutable (EXE).

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

LINK completa las direcciones que MASM dej pendientes en el mdulo objeto (archivo OBJ), asignndoles su direccin real. Tambin fusiona ('linka') varios mdulos OBJ en un mismo programa final (EXE) si as se haba requerido. Por ltimo, crea la cabecera del programa EXE necesaria para la posterior carga y ejecucin de los distintos segmentos del programa por parte del DOS. LINK PROG.OBJ; (TLINK en caso de utilizar Turbo Assembler). Mediante estos dos pasos ya tenemos creado nuestro programa EXE a partir del cdigo fuente escrito en ASM. CREAR EL PROGRAMA EJECUTABLE Vamos a ver cmo convertir nuestro cdigo fuente en ejecutable. Segn hayamos creado el cdigo fuente podremos obtener dos modelos diferentes de ejecutable: .COM y EXE. Si hemos seguido ciertas reglas necesarias para poder conseguir un programa .COM, podremos obtener los dos formatos mediante el mismo cdigo fuente. Si no hemos seguido esas reglas, slo podremos obtener un programa EXE. A la hora de ensamblar-linkar necesitaremos de un paquete Ensamblador con su Programa Ensamblador, su Linkador, etc. Los ms potentes segn mi criterio son MASM (de Microsoft) y TASM (de Borland). Aparte de estos dos paquetes, en el mercado existen varios ms, algunos son shareware.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

FORMATO DE UN PROGRAMA La programacin en lenguaje ensamblador, necesita al menos tres herramientas: un editor de texto para crear el archivo fuente, un compilador para convertirlo en archivo objeto (MASM) y un enlazador (linker) para generar finalmente el programa ejecutable. Una cuarta herramienta seria el depurador y en caso necesario corregir el programa ejecutable. Los programas en ensamblador, pueden ser de dos tipos, uno, que es un formato interno, el cual se utiliza en la creacin de programas dentro del Debug, y un formato externo, el cual se utiliza en la creacin de programas fuentes, que despus se ensamblaran, enlazaran, y despus se ejecutaran, sin necesidad del Debug. EL FORMATO INTERNO El formato interno de una lnea de cdigo se puede resumir en cuatro partes. La etiqueta | variable | constante. El nombre del mnemnico | directiva, que puede equipararse con el verbo o la accin por realizar, seguido de uno o mas separadores. El operando, que generalmente se divide en dos: el destino y la fuente. El destino y la fuente deben estar separados por una coma. Finalmente tenemos el comentario, que siempre va precedido por el simbolo ; EJEMPLOS DE PROGRAMAS EN FORMATO INTERNO

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Otra forma de hacer el programa anterior:

Realizando otra forma del programa anterior.

Hacer un programa, que realice una divisin sin utilizar la instruccin DIV. Por ejemplo, para dividir 270000/10000, 270,000 = 41EB0

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

FORMATO EXTERNO El formato externo esta formado por varios comandos clave que permiten establecer el entorno operativo del programa. Entre ellos tenemos uno que define el modelo de memoria, los diferentes segmentos que tendr el cdigo, los datos y la pila, as como el comienzo y el final del programa. Ahora bien, existen dos maneras de definir el programa: en la primera se usan directivas simplificadas y en la segunda no se usan. Las directivas simplificadas ayudan a esclarecer ciertos comandos crticos de un programa, permitiendo que sean mas legibles, y se incluyeron en las versiones del MASM 5.0 y posteriores. Todas las instrucciones en ensamblador, ya sea en formato interno, o en formato externo, tienen la siguiente forma: [Etiqueta]: Nemonico Operando [;Comentario] En donde, la etiqueta y los comentarios son opcionales. Las etiquetas, no deben tener mas de 31 caracteres, pueden contener letras y numeros, o cualquiera de los caracteres @, $,=, _ y ?, deben empezar con una letra, @ o _. Los nemonicos es el unico que obligatoriamente debe estar en una sola lnea, y en realidad, un nemonico es una instruccion en ensamblador. Los operandos dependen del nemonico, y pueden ser ninguno, uno o varios operandos, estos nicamente pueden tener hasta 31 caracteres, y estos pueden ser variables, registros, direcciones de memoria, etc. Los comentarios van despus del punto y coma, y sirven para hacer mas claro el funcionamiento de un programa o la explicacin de las instrucciones, en caso de que no exista comentario, no es necesario el punto y coma. DIRECTIVAS En lenguaje ensamblador, para escribir un programa en formato interno, debemos conocer algunas directivas, que nos ayudaran a una mejor comprensin y escritura de los programas realizados en lenguaje ensamblador. Nombre_Segmento Segment Tipo_Alineacion Tipo_Combinacion Clase

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Nombre_Segmento ENDS Donde: Nombre_Segmento indica: el nombre del segmento que vamos a utilizar, este puede ser: STACK para definir el segmento de pila DATA para definir el segmento de datos CODE para definir el segmento de codigo Segment Es una palabra que indica que vamos a definir un segmento. Tipo_Alineacin indica: en donde comienza el segmento, si es: Byte: Comienza en cualquier direccion Word: Empieza en direccion par Para: Empieza en direccion multiplo de 16 Page: Empieza en direccion multiplo de 256. Tipo_Combinacin especfica: como el segmento es combinado con otros segmentos de otros programas del mismo nombre, y este puede ser: PUBLIC: En el programa principal, se pueden contener todos los segmentos del mismo nombre. COMMON: Se aparta espacio para contener al segmento mas grande en el programa principal STACK: Sirve para especificar que el segmento es de pila Clase: Especie de nombre para el segmento, este sirve para ver como se van a juntar los segmentos dentro del programa principal todos continuos. ENDS: Especifica que se termino la declaracion del segmento. Ejemplo de un programa: Adems de lo anterior, hay que indicarle a cada segmento, que registro de segmento le pertenece, con la directiva: ASSUME registro_segmento: nombre_segmento [, registro_segmento: nombre_segmento,. . .] Esta directiva, se incluye en la seccion CODE SEGMENT, como primera instruccion. Por ejemplo:

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Los tipos de datos que maneja el lenguaje ensamblador, son: DB.- Especifica que el dato es de un byte, binario o caracter DW.- Especifica que el dato es de 2 bytes DD.- Especifica que el dato es de 4 bytes H.- Especifica que el dato es un hexadecimal Ejemplos: CAD DB 'ASSEMBLER' CAR DB 'S' NUM DW 20 X DB 10 HEXA DW 0AH BINARIO DB 101011B Para declarar arreglos, se puede realizar de dos formas: Nombre_Arreglo Tamano_de_los_datos Numero_de_Elementos Inicializacin. O de otra forma: Nombre_Arreglo Tamano_de_los_datos Dato1, Dato2,...

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Ejemplos: A DB 50 Dup (0).- Especifica que se va a declarar un arreglo de 50 elementos de un byte, inicializados con cero. Cuando no se desea inicializar un arreglo o una variable, con ningn valor, entonces se pone el smbolo de cierre de interrogacin ?. Ejemplo: A DB 50 Dup (?) X DB ? Declarando el arreglo de la otra forma, quedara: B DB 10,20,30,40,50.- Especifica que se va a declarar un arreglo de 5 posiciones con los datos, 10,20,30,40, 50. Despus de la versin 5.0 del ensamblador, las directivas cambian, y se hacen ms sencillas: .model [modelo] [, lenguaje] Especifica que se va a definir el modelo de memoria, que va a utilizar el programa, y este puede ser: SMALL: El programa utiliza un segmento de datos y un segmento de cdigo COMPAC: El programa utiliza un solo segmento de cdigo y varios de datos LARGE: El programa utiliza varios segmentos de cdigo y varios de datos MEDIUM: El programa utiliza un solo segmento de datos y varios de cdigo HUGE: El programa utiliza varios segmentos de cdigo y varios de datos, y una variable en este modelo, puede llegar a medir hasta 64Kb o el tamao que necesitemos. [, Lenguaje].- Este parmetro es opcional, ya que nos sirve par indicarle al ensamblador, que vamos a juntar este programa con otro lenguaje de programacin, como puede ser: PASCAL, C, BASIC, Etc. .stack tamao Se usa para definir el segmento de pila, y el tamao que tendr la pila, por default, el tamao de la pila es de 1024, pero podemos utilizar cualquier tamao. .data

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Se usa para definir el segmento de datos, aqu es donde se declararan todas las variables y las constantes que se utilizaran durante todo el programa. .code Se usa para definir el segmento de codigo, y a partir de aqui, se declararian todos los modulos del programa en ensamblador que necesitemos. EQU.- Se usa para definir constantes. Nombre EQU Valor. Donde: Nombre es el nombre de la constante a definir. Valor, es el valor de la constante. Ejemplos: Error EQU 'Has cometido un error' Max EQU 20 Max = 20 El smbolo igual, solo se usa para asignar un valor a una constante numrica. Procedimientos Nombre PROC TIPO * * * Nombre ENDP END Nombre_Procedimiento_Principal Donde: Nombre Es el nombre que le vamos a dar al procedimiento. TIPO Puede ser de dos formas: NEAR Si el procedimiento se encuentra el el mismo segmento FAR Si el procedimiento se encuentra en otro segmento, el principal, siempre debe ser de tipo FAR. ENDP Se utiliza para indicar que ya se termino un procedimiento END nombre_procedimiento_principal.- END, es para indicar que ya se termina de definir el programa, y nombre_procedimiento_principal, es el nombre del procedimiento, que primero se va a ejecutar, y ademas es para indicar el fin del programa.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Formato del programa en el archivo de listado .LST. Las siguientes tres directivas, sirven para formatear el listado del programa, en el archivo que se crea al momento de ensamblar el programa .LST. PAGE LINEAS, COLUMNAS TITLE TITULO SUBTTL TITULO PAGE.- Sirve para indicar cuantas lneas y columnas tiene el programa por pgina. TITLE.- Sirve para que en cada nueva pgina, aparezca un titulo de hasta 60 caracteres justificado a la izquierda. SUBTTL.- Sirve para indicar que en cada nueva pagina, aparezca un subtitulo de hasta 60 caracteres, centrado. Para poner comentarios en lenguaje ensamblador, hay que poner un punto y coma (;) y todo lo que valla despus del; ser tomado como comentario.

RESUMIENDO En comentario en lenguaje ensamblador como ya se habia comentado esta precedido por un ponto y coma. Las palabras reservadas en lenguaje ensamblador son usadas para propsitos especiales bajo condiciones especiales. Un identificador es un nombre que se aplica a elementos en sus programas. Los dos tipos de identificadores son nombres, que se refieren a direcciones de datos y etiquetas, que se refieren a la direccin de una instruccin. Una operacin usada, por lo comn para definir reas de datos y codificar instrucciones. Un operando proporciona informacin para la informacin que acta sobre el. Un programa consiste en uno a ms segmentos, cada uno de los cuales empieza en un limite de prrafo. La directiva ENDS finaliza cada segmento, ENDP termina cada procedimiento y END termina un programa. La directiva ASSUME asocia los registros de segmentos CS, DS, Y SS con sus nombres de segmentos apropiados. Para las directivas simplificadas de segmento, antes de definir algn segmento, es inicializado el modelo de memoria. Las opciones son SMALL, MEDIUM, COMPACT.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Los nombres de los elementos de datos deben ser nicos y descriptivos. Por ejemplo, un elemento para el salario de un empleado podra ser SAL_EMP. DB es el formato utilizado para la definicin de cadenas de caracteres ya que permite cadenas de ms de 2 bytes de longitud y las convierte a la secuencia normal de izquierda a derecha. Las constantes decimales y binarias (hexadecimales) generan diferentes valores. Hay que considerar el efecto de sumar el 25 decimal en contra de sumar 25 hexadecimal. ;suma 25 ;suma 37

ADD AX, 25 ADD AX, 25H

Los tipos de datos que maneja el lenguaje ensamblador, son: DB Especifica que el dato es de un byte, binario o carcter DW Especifica que el dato es de 2 bytes DD Especifica que el dato es de 4 bytes H Especifica que el dato es un hexadecimal

A continuacin se presenta la forma bsica de un programa usando directivas simplificadas.

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Como se menciono anteriormente, el smbolo ; indica que lo siguiente es un comentario. Precisamente en el ejemplo anterior se inicia detallando el nombre del programa, fecha de la creacion y su objetivo. Posteriormente se definen los comandos necesarios para ensamblarlo, enlazarlo y ejecutarlo. Todo lo anterior se encuentra despus del smbolo ; para indicarle al MASM que ignore dichas lneas por ser comentarios. El primer comando, .MODEL SMALL, es una directiva simplificada que le indica al ensamblador como sern accesadas las instrucciones y los datos (a travs de sus segmentos especficos). El siguiente comando, .CODE, tambin es una directiva simplificada: le indica al ensamblador que el siguiente grupo de instrucciones es el cdigo a ejecutar. La instruccin que sigue es una etiqueta; le indica al ensamblador que el programa debe iniciar su ejecucin a partir de ella. Las dos instrucciones siguientes lo nico que hacen es regresar el control a MS-DOS (despus de ejecutar el programa) siguiendo ciertas normas. El comando .STACK indica que se necesita reservar un espacio de memoria para las operaciones de la pila, y finalmente el comando END Empieza seala el final del bloque de cdigo y por ende el final del programa. Para crear un programa ejecutable se teclearan los siguientes comandos en la lnea de interaccin de MS-DOS: C:\MASM DIRECTIVAS; C:\LINK DIRECTIVAS; MS EJEMPLOS DE PROGRAMAS TIPO EXTERNO:

INSTITUT TECNOLGICO T T GUT O UX LA IRREZ - EDUCA CIN A DIST ANCIA

Potrebbero piacerti anche