leng ensamblador isc

Upload: luis-mario-ek-uc

Post on 11-Oct-2015

90 views

Category:

Documents


5 download

TRANSCRIPT

Unidad

Lenguaje Ensamblador

UnidadTemasSubtemas

1Fundamentos.1.1 Introduccin.1.1.1 Uso y aplicaciones del lenguaje ensamblador.

1.1.2 Escalabilidad de los microprocesadores.

1.1.3 Tipos de lenguajes ensambladores.

1.1.4 Clasificacin de Memorias.

1.1.5 Unidades de entrada / salida.

1.2 El microprocesador.

1.2.1 Buses.

1.2.2 Registros.

1.2.3 Modos de direccionamiento.

1.3 Interrupciones.

1.3.1 Hardware.

1.3.2 Software.

1.4 Estructura de un programa en ensamblador.

1.4.1 Data segment.

1.4.2 Snack segment.

1.4.3 Code segment.

1.4.4 Instrucciones del programa.1.4.5 Directivas.1.5 Procedimiento de ensamble, enlace y ejecucin.

1.6 Entorno de programacin.

2Elementos del lenguaje2.1 Instrucciones lineales.2.1.1 Movimiento.2.1.2 Pila.2.1.3 Matemticos.2.1.4 Ajustes.2.1.5 Comparacin.2.2 Saltos.2.2.1 Incondicional.2.2.2 Condicional.2.3 Tipos de ciclos.2.4 Operadores Lgicos.

2.5 Desplazamiento.2.5.1 Lineal.2.5.2 Circular.2.6 Procesos de control.

2.6.1 Banderas.

2.6.2 Cadenas.

2.6.3 Carga.

3Modularizacin 3.1 Macros.

3.1.1 Internas.3.1.2 Externas.3.2 Procedimientos.

3.2.1 Internos.

3.2.2 Externos.

4Programacin hbrida.4.1 Directivas para compilacin hbrida.4.2 Funciones en ensamblador.

4.3 Bloques en ensamblador.

4.4 Operadores.

4.5 Integrar mdulos de ensamblador en lenguajes de alto nivel.

Unidad1. Fundamentos.

1.1 Introduccin.1.1.1 Uso y aplicaciones del lenguaje ensamblador.Importancia del Estudio y Uso de Ensamblador Ayuda a conocer a detalle cmo trabaja un CPU Util para Electrnica y Sistemas

Desarrolla Habilidades de Programacin Avanzada

Mejores Oportunidades de Empleo en la Industria

Aplicaciones del Lenguaje Ensamblador Sistemas embebidos:impresoras, cmaras, autos, armas, juguetes, etc. Tiempo Real: en la industria y manufactura, e.g. adquisicin datos, control robots Transporte: barcos, aviones, sondas espaciales, etc. Entretenimiento: Graficacin, Multimedia, Cine y VideoJuegos DSP: Procesamiento de Seales, Voz e Imgenes Otras: Medicina, Aeronatica, Armamento, etc.Uso de lenguaje ensambladorHay algn debate encima de la utilidad del lenguaje ensamblador. En muchos casos, compiladores modernos pueden rendir lenguajes de alto nivel en el cdigo como eso corre tan rpido como la mano que escribe en ensamblador.

Sin embargo, algunos clculos discretos aun pueden darse mas rpidamente corriendo cdigo en ensamblador, y alguna programacin de bajo nivel es simplemente mas fcil de hacer en ensamblador. Algunas tareas de sistemas-dependientes realizadas por sistemas operativos simplemente no pueden ser expresadas en lenguajes de alto nivel. Muchos compiladores tambin rinden lenguajes de alto nivel en ensamblador antes de compilar completamente, permitiendo visualizar el cdigo de ensamblador para depurar [debug] y propsito de optimizacin.

Muchos dispositivos integrados son tambin programados en ensamblador a exprimir la funcionalidad mxima absoluta fuera de los que es frecuente recursos computacionales muy limitados, aunque esto esta gradualmente cambiando en algunas reas como mas chips poderosos volviendo disponible para el mismo mnimo costo.

http://www.geocities.com/SiliconValley/Haven/2037/documentos/Lenguaje_Ensamblador.htm1.1.2 Escalabilidad de los microprocesadores.Al escribir un programa para ser ejecutado por un microprocesador se tienen tres alternativas: lenguaje de mquina, lenguaje ensamblador y lenguaje de alto nivel. Slo programas escritos en lenguaje mquina pueden ser ejecutados por el procesador. Los programas escritos en lenguaje ensamblador o en lenguaje de alto nivel tienen que ser traducidos primeramente a lenguaje mquina a fin de que puedan ser ejecutados. Escribir un programa en lenguaje ensamblador requiere de conocimientos acerca del hardware de la computadora, su conjunto de instrucciones, de sus reglas y usos. Un estudio de programacin en lenguaje ensamblador puede ser una de las tareas personalmente ms remuneradas y tcnicamente ms desafiantes que puedan emprender un ingeniero de software. El ensamblador bsico es la puerta interior de la PC, el principio de lo que se puede realizar con el lenguaje ensamblador, se encuentra especialmente diseado para proporcionar las bases terico - prctico que le permitirn ms adelante programar el hardware (vdeo, teclado, discos, puertos, etc.) reconocer y utilizar las memoria del BIOS (Sistema Bsico de Entrada y Salida), aprovechar las estructuras internas del DOS (Sistema Operativo en Disco), y afirmar y dominar el uso de debugueando codeview y mucho ms. El disponer de herramientas y conocimientos para combinar sabiamente los lenguajes de alto nivel en diversas configuraciones del hardware le convierten en el maestro de la mquina, el lenguaje ensamblador ser un segundo lenguaje ms potente ya que da al programador acceso directo a registro a memoria y a la nicas instrucciones orientadas al bit, y es con frecuencia la nica solucin a las tareas de programacin que prolonga el alcance de la mayora de los lenguajes de alto nivel. Un programa en lenguaje ensamblador producen un cdigo ejecutable de forma ms rpida ya que circunvala el paso de interpretar el lenguaje y el paso de compilar el lenguaje. Un programa en lenguaje ensamblador controla al microprocesador en su propio lenguaje sin la ayuda de comprobaciones del compilador.

HISTORIA DE LOS MICROPROCESADORES.

1971, Intel anunci el primer microprocesador denominado 1001. Este era de 4 bits, construido con tecnologa PMOS. Tena 45 instrucciones, y ejecutaba 60,000 operaciones por segundo.1972, Intel introdujo el microprocesador 8008, con longitud de palabra de 8 bits; implantado con tecnologa PMOS. Tena 48 instrucciones, ejecutaba 30,000 operaciones por segundo y direccionaba 16 K bytes de memoria. Requera casi de 20 circuitos de soporte. El microprocesador contenan compuertas SSI (Small Scale Integration) y MSI (Medium Scale Integration).1974, Intel crea el microprocesador 8080, de 8 bits. El 8080 tena 78 instrucciones, con una velocidad de operacin diez veces mayor que la del 8008 y direcionaba hasta 64 Kbytes de memoria. La tecnologa de fabricacin usada fue la NMOS y gran parte de la lgica de soporte se incluyo en el mismo circuito de microprocesador; por lo que fue posible construir un sistema con slo seis circuitos integrados.1974, Motorola crea un microprocesador de 8 bits con 72 instrucciones, el 6800. Al mismo tiempo apareci una familia de circuitos perifrico diseados especialmente para conectarse al microprocesador.1975, Mostechnology anuncio dos microprocesadores, el 6501 que era compatible pata a pata con el 6800 y el 6202, cuyo circuito integrado inclua, adems de un 6501, toda la circuitera para generar la seal de reloj. Hasta entonces, la seal de reloj se haba generado en circuitos externos al microprocesador.1976, Zilog introdujo el Z-80, un microprocesador NMOS de 8 bits, requera una fuente de alimentacin de 5 volts y toda la circuteria de soporte estaba incluida en el circuito integrado. Contena 158 instrucciones.Junto con el microprocesador Z-80 (Z80 CPU) Zilog introdujo varios circuitos perifricos, tales como el controlador de puertos en paralelos (Z80 PIO), el controlador de puertos en serie (Z80 SIO) y el circuito timer/contador (Z80 CTC).1977, Intel anunci el microprocesador 8085, con longitud de palabra de 8 bits, este combinaba el 8080, el circuito de reloj y el controlador del sistema en un solo circuito integrado. Fabricado con tecnologa NMOS, y requera un voltaje nico de 5 volts.El 8085 se optimizo para que pudiera formar un sistema completo utilizando dos circuitos perifricos especial, uno de ellos con memoria RAM, puertos de Entradas y Salida y timer (8155 u 8156) y el otro con memoria ROM o EPROM y puertos (8355 u 8755).1978, nace la tercera generacin de microprocesadores cuando Intel desarrolla el 8086. Este fue un diseo ms avanzado con caractersticas nuevas. Adems Intel desarrollo el microprocesador 8088 como una variacin al 8086.Casi al mismo tiempo apareci un primo del 8088/808; la pastilla del coprocesador matemtico de nmeros reales 8087. Este procesador de datos numricos estaba dedicado a alta velocidad y clculos matemticos de alta precisin.En 1984 se desarrolla el microprocesador 8086, este es compatible con el 8088/8086, soportaba diferentes tipos de datos muy potentes como cadenas BCD y formatos en puntos flotantes.Posteriormente se introdujo el 80186, una versin altamente integrada del 8086, es un microprocesador de 16 bits.El 80286, es una versin mejorada del 8086, que contiene una unidad de administracin de memoria y direcciona a una memoria de 18 Mbytes. Adems la velocidad del reloj fue aumentada.Otro ingreso de Intel es el 80386, con un bus de datos externos de 32 bits del 80386, doble que el del 80286, puede direcionar 4 gigabytes de memoria.Uno de los ltimos desarrollos de Intel, es el procesador Pentium II, que es el procesador ms potente de la familia X86, estos cuentan con una velocidad de 233, 266 y 300 Mhz. Aadido con tecnologa MMX y un cach LI de 32 K, y est compuesta por 12 sistemas MMX a 200 Mhz de II fabricantes. Cada sistema tiene por lo menos 32 MB en RAM, un disco de 2GB o superior, una unidad de CD-ROM 6X o ms rpido, un sistema de sonido de 16 bits y una tarjeta grfica super VGA.1.1.3 Tipos de lenguajes ensambladores.Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede realizar fsicamente. Como resultado de operaciones muy bsicas suministradas por el ensamblador que realiza tareas simples de transferencia de datos y operaciones lgicas, una pgina de cdigos en lenguaje ensamblador palidece en comparacion con una pgina de cdigo en lenguaje de alto nivel.

Hablar del lenguaje mquina requiere comprender muchos conceptos extraos para los programadores de alto nivel, el programador de lenguaje ensamblador debe considerar la segmentacin de memoria; cuando hay control directo del acceso de memoria deben ser tomadas decisiones al minuto, se debe decidir el tamao y tipo de cada dato, muchas de estas consideraciones son nicas a la programacin en lenguaje ensamblador.

ENSAMBLADOR.

Un ensamblador es un software que traduce un programa en memoria escrito en mnemnicos por el usuario, a lenguaje mquina que pueda ser ejecutado por el microprocesador. Al programa en mnemnicos se le llama PROGRAMA FUENTE y al programa en lenguaje mquina se le denomina PROGRAMA OBJETO. Por lo tanto, la entrada al ensamblador es un programa fuente y la salida es un programa objeto.

FUNCIONES DEL ENSAMBLADOR. A dems de su tarea principal que es traducir mnemnicos a lenguaje mquina, un ensamblador generalmente realiza las siguientes funciones:

Permite al usuario asignar nombres a localidades de memoria, constantes numricas, dispositivo de E/S y una secuencia de instrucciones.

Acepta datos o direcciones en varios sistemas numricos (decimal y hexadecimal) y las convierte en binario.

Ejecuta algunas operaciones aritmticas en expresiones como parte del proceso de ensamblador.

Permite al usuario designar las reas de memoria donde ser colocados el programa a los datos en el momento de ejecucin.

Proporciona la informacin requerida para incluir otros programas o subrutinas de biblioteca dentro del programa que s esta realizando.

Permite al usuario controlar el formato del listado del programa resultante del ensamblador.

El lenguaje ensamblador utiliza mnemnicos para representar los cdigos de operacin de las instrucciones y smbolos alfanumricos para representar las direcciones y los datos del programa. Entonces el programa se puede escribir como: MOV AX, (150) MOV BX, AX MOV AX, (151) ADD AX, BX MOV (152), AXLas direcciones y los datos del programa anterior se expresaron directamente en hexadecimal. A continuacin se muestra el mismo programa utilizando todas las propiedades del lenguaje ensamblador. MOV AX, NUM1 MOV BX, AX MOV AX, NUM2 ADD AX, B MOV SUMA, AXLa ventaja de utilizar nombres simblicos en las instrucciones, en lugar de su valor numrico, es facilitar la escritura del programa, y tambin simplifica la insercin y eliminacin de instrucciones, haciendo ms fcil el redireccionamiento.La desventaja de un programa en lenguaje ensamblador, es que requiere un programa especial llamado ENSAMBLADOR, que se encarga de traducir los mnemnicos y los smbolos alfanumricos a lenguaje mquina. Adems sigue siendo necesario un conocimiento detallado de la arquitectura del microprocesador. El lenguaje ensamblador es una variante legible para el ser humano del lenguaje mquina que usan las computadoras para ejecutar programa. Al mismo tiempo la mejor manera de comunicarse con la PC y con el lenguaje mquina de programacin que utilice. El lenguaje ensamblador resulta indispensable cuando se desea escribir programas que controlen las E/S de la PC, agregar nuevas interfaces de E/S, escribir rutinas que aprovechen y maximicen el uso del hardware y en general realizar cualquier tarea que no pueden llevar acabo los dems lenguajes de programacin. El lenguaje ensamblador le brinda la oportunidad de conocer ms afondo la operacin de su PC esto le permite implementar software o hardware de una manera ms consiente. El lenguaje ensamblador hace que se conserve el control total de lo que desea hacer su PC. Una de las mayores importancias del ensamblador es que uno puede optimizar al mximo sus programas (tanto tamao, como velocidad de ejecucin). Otra importancia es la gran velocidad a la que ejecuta el cdigo. El lenguaje ensamblador permite a los ingenieros de software hacer interfaces con el sistema operativo y les da control directo de las operaciones de entrada y salida a monitores, impresoras, y a los importantes dispositivos de memoria de disco duro/flotante. Los programadores de aplicaciones con frecuencia tienen que hacer tambin interfaces directamente con el sistema operativo. Estas rutinas se escriben en lenguaje ensamblador. El lenguaje ensamblador es simplemente una representacin simblica del lenguaje mquina asociado, lo cual permite una programacin menos tediosa que con el anterior. Sin embargo es necesario un conocimiento de la arquitectura mecnica subyacente para realizar una programacin efectiva en cualquiera de estos niveles de lenguaje. La mayora de los ensambladores son ENSAMBLADORES DE DOS ETAPAS (two-pass Asemblers). La PRIMERA ETAPA determina la direccin de memoria en la cual es ensamblado el primer byte de cada instruccin y genera una tabla para los valores de todos los nombres simblicos y etiquetas definidos en el programa. El ensamblador posee una tabla de cdigos de operacincon una entrada por cada cdigo de operacin, cada entrada contiene el mnemnico de la instruccin, su equivalente en lenguaje mquina y el nmero de bytes de la intruccin. Tambin el ensamblador tiene un Contador de localizacin (Location Counter, LC), el cul al inicio se carga con 0 con el valor especificado por una directiva ORG, sta corresponde a la direccin inicial u origen del programa y se le asigna el primer byte de la primera instruccin. Si un programa tiene una etiqueta, esta se aade a la tabla de smbolos y se le asocia el valor conteniendo del LC en ese momento. El cdigo de operacin de la instruccin se extrae de la tabla de cdigo de operacin incrementando el contador de localizacin igual al nmero de bytes de la instruccin. Esta etapa termina cuando el ensamblador detecta la directiva END. En la SEGUNDA ETAPA, el ensamblador hace un recorrido por el programa, utilizando la tabla de smbolos de los cdigos de operacin, sustituye el mnemnico de cada instruccin por su equivalente en el lenguaje de mquina.

1.1.4 Clasificacin de Memorias.Las terminales de entrada/salida de un procesador proporcionan un modo eficiente de comunicacin entre el sistema central y el ambiente exterior. Los programas y los datos, deben entrarse al computador para el procesamiento y los resultados deben registrarse o exhibirse para el usuario. Para que esto suceda, la informacin pasa a travs de la memoria central.

MEMORIA CENTRAL

Tambin denominada memoria principal, es la parte de la CPU de una computadora donde estn almacenadas las instrucciones y los datos necesarios para que un determinado proceso pueda ser realizado. La memoria central est constituida por multitud de celdas o posiciones de memoria, numeradas de forma consecutiva, capaz de retener mientras la computadora esta conectada. La memoria es el centro de actividad, el lugar en donde todo se mantiene cuando se est trabajando. La memoria proporciona un lugar donde pueden realizarse los clculos, para la memoria de la computadora no hay diferencia entre programas y datos, ambos son informacin que debe ser registrada, almacenada o manipulada. Esta memoria consiste en una serie de microcircuitos que sirven de soporte generalmente transitorio de la informacin. Sus caractersticas principales son: Gran rapidez.

Componentes fijos.

Capacidad mediana.

Reutilizable y de acceso directo.

Su velocidad de proceso se mide en microsegundos (millonsima de segundo), nanosegundo (milmillonsima de segundo) e incluso picosegundos (billonsima de segundo). Es una memoria de acceso directo, puede accederse a una de sus celdas con slo conocer su posicin, para esta memoria el tiempo de acceso es ms corto que las memorias auxiliares, por tanto, los datos que manejan los procesos deben residir en ella en el momento de su ejecucin. La memoria central tiene asociados 2 registros para la realizacin de operaciones de lectura o escritura y un dispositivo encargado de seleccionar una celda de memoria en cada operacin de acceso sobre la misma. REGISTRO DE DIRECCIN DE MEMORIA (RDM). Contiene la direccin de memoria donde se encuentra o va a ser almacenada la informacin (instruccin o dato), tanto si se trata de una lectura como de una escritura.

REGISTRO DE INTERCAMBIO DE MEMORIA (RIM). Si se trata de una operacin de lectura, el RIM es quin recibe el dato de la memoria sealado por el RDM, para su posterior envo a uno de los registros de la Unidad Aritmtica y Lgica. Si se trata de una operacin de escritura, la operacin a grabar tiene que estar en el RIM, para que desde el se transfiera a la posicin de memoria indicada por el RDM.

SELECTOR DE MEMORIA (SM). Es el registro que tras una orden de lectura o escritura conecta la celda de memoria cuya direccin figura en el RDM con el RIM, posibilitando la transferencia de los datos en un sentido o en otro.

La Memoria Central suele ser direccionable por octeto o Byte, por tanto; una celda o posicin de memoria contiene 8 bits. Una de las caractersticas fundamentales de una computadora es su Capacidad de Memoria Interna (Memoria Central), la cual se mide en un mltiplo del Byte denominado Kilobyte, Kbyte, KB O k, y que equivale a 1024 bytes (1024 = 210). Otro mltiplo utilizado ampliamente en los ltimos tiempos es le Megabyte o mega que equivale a 1024 * 1024 Bytes. Las computadoras utilizan 2 tipos de memoria interna: 1. MEMORIA DE SOLO LECTURA (READ ONLY MEMORY: ROM). Esta almacena ciertos programas e informacin que necesita la computadora. Estas instrucciones estn grabadas permanentemente en el chip de ROM y no pueden ser modificados por el operador, por eso es de slo lectura. Se conocen tambin como memoria No Voltil por que no desaparece o se borra cuando se desconecta la electricidad. Las instrucciones bsicas que se necesitan para arrancar una computadora estn almacenadas en ROM. Algunos programas de utilera y paquetes de software tambin lo estn. Las posiciones altas de la memoria superior son: ROMBIOS

ROM DE INICIO

ROM EXTENDIDA

Existen otras variedades que permiten algunas manipulaciones: PROM: Permite programarse una sola vez, una vez decididas sus caractersticas e instalada, se convierte en una ROM normal.

EPROM: Puede borrarse y reprogramarse varias veces, para ello se necesitan tcnicas especiales de borrado y escritura.

2. MEMORIA DE ACCESO ALEATORIO (RANDOM ACCESS MEMORY: RAM). Aqu tambin podemos almacenar ciertos programas para el funcionamiento de la computadora. Sin embargo, en RAM el usuario puede cambiar la informacin, almacenarla o borrarla. La capacidad de la RAM afecta la forma en que se corren los programas del software y la cantidad de datos que pueden procesarse. Cuando ms fcil de usar sea un programa tanta ms RAM necesitar generalmente. La RAM es una memoria voltil, a menos que se guarden en discos, se pierde cuando la computadora se desconecta excepto en algunos que estn provistos de pilas especiales para mantener el contenido de la RAM. Cuando se crea un programa o un documento de aplicacin, el programa que carga y los datos que se introducen mediante el teclado son almacenados en forma temporal en la RAM. El trmino aleatorio proviene de la forma en que la computadora localiza o da acceso a los datos que se encuentran en la memoria. Si se pasa por todos los datos para encontrar alguna informacin deseada, esto es acceso secuencial. Si se brinca todos los datos y selecciona directamente la informacin deseada, sin pasar por los otros datos, a esto se le llama Acceso Aleatorio o Directo. La RAM es un dispositivo de estado slido que no tiene partes en movimiento. Se puede tener acceso a los datos de la RAM a velocidades electrnicos comparables a la velocidad de la luz. A la memoria RAM tambin se le llama memoria principal y es un almacenamiento temporal. Todos los programas y datos introducidos a un dispositivo de entrada (teclado) o a una memoria magntica (disco) se debe transferir a la RAM antes que se puedan ejecutar los programas o procesar los datos. La capacidad en RAM se define en funcin del nmero de caracteres que puede almacenar. Memoria Convencional. Se le denomina as a la RAM comprendida entre los 0 y 60 KB.

Memoria Superior. Se le llama as al resto de la memoria RAM hasta 1 MB, es decir al espacio comprendido entre los 640 y 1.024 B, es decir a los 384 KB.

Memoria Extendida. Es la superior a 1 MB, que llegar a los 16 MB, en los 286 (AT) y a4.096 MB o 4 GB, en los 386 y 486.

Estas dos ltimas clases de memorias RAM se subdividen en otros tipos: Memoria Expandida, Shadow y de Vdeo (la superior) y en memoria alta (extendida), dependiendo del tipo de procesador.

Cada memoria est formada por bloques de octetos consecutivos, de tamao de 16 bytes o un mltiplo de ese nmero (16, 32, 48, 64 octetos, etc.). SALIDA.

Son los dispositivos cuya misin es la de recoger y proporcionar al exterior los datos de salida de cada uno de los trabajos que se realicen en el sistema. Tambin se denominan Perifricos o Unidades de Salida. La computadora comunica sus resultados al usuario; por ejemplo, Desplegando la informacin en un monitor o imprimindola. Estos dispositivos incluyen: Monitores

Impresoras

Plotters

Graficadores

ENTRADA.

Son los dispositivos perifricos que permiten introducir la informacin a la computadora para su procesamiento. Algunos de estos dispositivos son: Teclado

Mouse

Tabletas grficas

Lpiz ptico

Entrada de Voz

Pantallas sensibles al tacto

Lectores pticos

ENTRADA/SALIDA

Son dispositivos que efectan tanto tareas de entrada como de salida, estos incluyen: Discos duros

CDs

Discos flexibles1.1.5 Unidades de entrada / salida. Perifricos: Unidades o dispositivos externos que se conectan a la computadora central CPU-Mem, e.g. ratn, monitor, disco-duro, CD, etc. Interfaz: Es el medio que permite conectar un perifrico a la computadora, e.g. conector, puerto, tarjeta, etc. Existen diferentes tipos de interfaces: Puerto Paralelo (LPT): cable corto, grueso que transmite arriba de 16 bits, e.g. impresora, discos externos, etc. Puerto Serie (COM): cable largo, delgado que transmite 1 bit, e.g. mouse, teclado, modem, etc. Puertos USB, FireWire: tecnologa veloces y compactas que posiblemente reemplacen al cable serie/paralelo Interfaz IDE, SCSI, PCI, EISA: interfaces de bajo nivel para conectar tarjetas y dispositivos internos, e.g. discos duros, CD, video, etc.http://pantera.itchihuahua.edu.mx/apacheco/expo/view.php?f=asm_11#page91.2 El microprocesador.Un microprocesador debe contener al menos: una unidad de control, unidad de aritmtica y lgica y algunos registros.

Los componentes internos de un microprocesador son: a) REGISTROS GENERALES b) REGISTROS APUNTADORES (ESP Y EBP). c) REGISTROS INDICES (ESI Y EDI). d) REGISTRO DE SEGMENTOS (SS, CS, DS, ES.) e) REGISTRO APUNTADOR DE INSTRUCCIONES (IP). f) REGISTRO DE ESTADO (BANDERAS) g) COLA DE INSTRUCCIONES h) UNIDAD DE CONTROL DE LA UNIDAD DE EJECUCIN i) BUSES INTERNOS j) UNIDAD ARITMETICA Y LOGICA (ALU)

g) COLA DE INSTRUCCIONES

Una cola cuya abreviatura es Q de "queue", es una lnea de espera como la que forman en la caja del supermercado. Algunos de los microprocesadores de 16 bits como el 8086/8088 del Intel o Motorola MC 68000 utilizan tales lneas de espera para sus instrucciones. Dicho de otra manera sus instrucciones que han de ejecutarse llegan al microprocesador antes de lo necesario y "esperan" en una cola de instrucciones en este sistema, poseen la ventaja de que cada instruccin puede extraerse de memoria mientras otras se estn ejecutando reducindose en consecuencia el tiempo de proceso, por ejemplo las instrucciones que incluyen directamente a la velocidad de aquellas otras que utilizan datos de los registros de la CPU, las colas de instrucciones son normalmente cartas de 496 octetos en concreto la del 8086 es de 6 octetos, (tres palabras y la del 8088 es de 4 octetos). La cola de instrucciones es de un rea de almacenamiento de tipo PEPS (Primero en entrar, primero en salir) para instrucciones decodificadas y operandos ya disponibles.

h) UNIDAD DE CONTROL DE LA UNIDAD DE EJECUCIN

La funcin principal de la UC es dirigir la secuencia de pasos de modo que la computadora lleve a cabo un ciclo completo de ejecucin de cada una de las intrusiones del programa. Utiliza seales de reloj, por lo que se considera que el microprocesador es un dispositivo sncrono. Su actividad es cclica y consiste en la bsqueda y obtencin de datos e instrucciones, y en la ejecucin secuencial de stas ltimas. El corazn de la unidad de control lo constituye el GENERADOR DE CICLO DE LA MAQUINA (GCM), que se encarga de producir las seales de control, derivndolas de un reloj u oscilador maestro. Pasos para ejecutar una instruccin cualquiera: a) Ir a la memoria y extraer el cdigo de la siguiente instruccin. Este paso se llama "ciclo fetch". b) Decodificar la instruccin ya leda. c) Ejecutar la instruccin. d) Prepararse para leer la siguiente casilla de memoria y continuar con el paso a). Las principales funciones de esta unidad son: a) Leer e interpretar las instrucciones del programa. b) Dirigir la operacin de los elementos internos del procesador. c) Controlar el flujo de datos y programas que entran y salen de RAM. Para realizar su funcin consta de los siguientes elementos: Registro de control de secuencia (RCS). Tambin denominado contador de programa (CP), contiene permanentemente la direccin de memoria de la prxima instruccin a ejecutar. Si la instruccin que se esta ejecutando en un instante determinado es de salto o de ruptura de secuencia, el RCS tomara la direccin de la instruccin que se tenga que ejecutar a continuacin, esta instruccin la traer de la propia instruccin en curso.

Registro de instruccin (RI). Contiene la intrusin que se esta ejecutando a cada momento. Esta instruccin llevara consigo el cdigo de operacin (CO), acin de que se trata y en su caso los operandos o las direcciones de memoria de los mismos.

Decodificador (D). Se encarga de extraer y analizar el cdigo de operacin de la instruccin en curso (que est en RI) y dar seales necesarias al resto de los elementos para su ejecucin.

Reloj (R). Proporciona una sucesin de impulsos elctricos a intervalos constantes (frecuencia constante), que marca los instantes en que se han de comenzar los distintos pasos de que consta cada instruccin.

Secuencia (S). En este dispositivo se encargan ordenes muy elementales (microordenes), que sincronizadas por los impulsos del reloj, hacen que se vaya ejecutando poco a poco la instruccin que esta encargada en el RI.

j) UNIDAD ARITMETICA Y LOGICA (ALU)

La unidad de aritmtica y lgica es un circuito digital que realiza un conjunto de micro-operaciones aritmticas y lgicas. Operaciones que realiza una ALU: 1. Suma aritmtica. 2. Funciones lgicas AND, OR y XOR. 3. Complemento. 4. Rotacin hacia la izquierda o derecha.

Esta unidad es un grupo de circuitos electrnicos encargada de realizar las operaciones elementales de tipo aritmtico (+, -, *, /) y de tipo lgico (comparaciones), tambin hace comparaciones alfabticas, por ejemplo; Soto, Snchez. Para realizar su funcin consta de los siguientes elementos: Banco de Registros. (BR): Est constituido por 8, 16, 32 registros de tipo general que sirve para situar datos antes de cada operacin, para almacenar datos intermedios en las operaciones y para operaciones internas del procesador.

Circuito de Operadores. (CIROP): Compuesto de uno o varios circuitos electrnicos que realizan operaciones elementales aritmticas y lgicas (sumador, complementador, desplazador, etc.).

Registro de Resultados. (RR): Se trata de un registro especial, en el que se depositan los resultados que producen los circuitos operadores.

Sealizador de Estado. (SE): Registro con un conjunto de biestables en los que se deja constancia de algunas condiciones que se dieron en la ltima operacin realizada.

1.2.1 Buses.i) BUSES INTERNOS (DATOS, DIRECCIONES).

BUS. Es un canal o ruta comn de comunicacin entre dispositivos del hardware, ya sea internamente entre componentes del computador o externamente entre estaciones de una red de comunicaciones. Los buses se asemejan a una carretera por la que circulan los bits fsicamente, los buses son varios hilos paralelos, uno para la transmisin de cada bit. Cuando la arquitectura del bus es utilizado en un computador, el procesador o procesadores, los bancos de memoria y las unidades de control perifrica estn todos interconectados mediante el bus. El bus est dividido en dos canales, uno para seleccionar donde esta localizado el dato (bus de direcciones) y otro para transferir el dato (bus de datos). BUS DE DATOS. Circulan los datos con los que va a trabajar el ordenador, debe estar conectado a la memoria principal, puesto que en ella se encuentran almacenados los datos, al banco de registro y por supuesto a la unidad aritmtica y lgica, el bus de datos tiene 8 conectores y es capaz de transportar 8 seales en paralelo, esto significa que el bus de datos puede llevar unidades de informacin de 8 dgitos binarios, slo una unidad cada vez. BUS DE DIRECCIONES. Se emplea para transmitir la informacin que ha de reaccionar la memoria. Si el bus de direcciones tiene 16 hilos, se podr direccionar Z16 direcciones de memoria, es decir, se puede acceder a cualquier posicin de memoria de 64 KB. Si se considera la cuestin de forma inversa se precisan dos palabras de 8 bits para conseguir una direccin de memoria. Llevar seales de control especial que provocan la seleccin de la informacin a travs de la computadora. Esta informacin se utiliza para distinguir a la vez entre varios dispositivos de E/S y las miles de celdas de la memoria de la computadora. EL BUS DE CONTROL: Sincroniza el sentido de la transferencia de informacin en el bus de datos (hacia adentro o hacia afuera). Cada una de las seales del bus de control son unidireccionales. 1.2.2 Registros.a) REGISTROS GENERALES

Los registros de propsito general son capaces de soportar operandos de datos de1, 8, 16 y 32 bits, estos registros tambin soportan operandos de direcciones de 16 y 32 bits. Los 8 registros son AX (acumulador), BX (en base), CX (contador), DX (datos), SP (puntero de pila), BP (puntero base), SI (ndice fuente) y DI (ndice destino). Para acceder a los 32 bits de un registro todas las referencias a registros debe comenzar con la letra "E". Cada uno de los 8 registros de propsito general pueden ser compuestos en sus equivalentes de 16 bits de 8086 bits/80286 referenciando los registros sin usar el prefijo E.

REGISTRO EAX (Acumulador). Generalmente se usa para almacenar resultados de operaciones aritmticas o lgicas, lectura o escritura desde o hacia los puertos y como un rea de memoria principal temporal (SCRATCH PAD). Tambin se direcciona como AX, AH, o AL. REGISTRO EBX ( Base). Sirve como registro apuntadores base o ndice. Conserva la direccin base (desplazamiento) de los datos que hay en la memoria o la direccin base de una tabla de datos. Tambin se direcciona como BX, BH, o BL. REGISTRO ECX (Contador). Se utiliza constantemente en operaciones de interaccin, como un contador que automticamente se incrementa o decrementa de acuerdo con el tipo de cada instruccin usada. Tambin es usado para corrimientos (CL) y rotaciones y ciclos y para las operaciones de cadena y un contador. Tambin se direcciona como CX, CH, CL. REGISTRO EDX ( De Datos). Comnmente se usa como fuente para el acceso de datos. Tambin se direcciona como DX, DH y DL. b) REGISTROS APUNTADORES (ESP Y EBP).

La direccin fsica de cualquier elemento dado en un segmento seleccionado se obtiene por la combinacin de la direccin del segmento y el desplazamiento, este desplazamiento puede estar contenido en uno de los registros puntero, base o ndice. Las operaciones de la pila son facilitadas por el sector del segmento de pila (SS) y el par de registros de puntero de pila (SP) o puntero base (BP). REGISTRO ESP O APUNTADOR DE PILA. Apunta a un rea especfica de memoria que sirve para almacenar datos bajo la estructura LIFO (LAST, IN, FRIST OUT) mejor conocido como PILA STACK. Esto ocurre cuando se ejecutan las instrucciones PUSH y POP cuando se llama (CALL) o se regresa (RET) de una subrutina de un programa principal. Tambin se direcciona como SP. REGISTRO EBP O BASE. Se usa para manipular la pila sin afectar el registro de segmentos SS, as como para direccionar una matriz de datos en una pila de memoria. Tambin se direcciona como BP.

c) REGISTROS INDICES (ESI Y EDI).

Manipulaciones de datos ms complicadas pueden obtenerse utilizando los registros ndice fuente (ESI) e ndice destino (EDI) junto al segmento de datos actualmente activo. REGISTRO SI. Se emplea para direccionar datos de fuente en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos. REGISTRO DI. Se emplea para direccionar datos destino en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos. d) REGISTRO DE SEGMENTOS (SS, CS, DS, ES.)

Un segmento es un mdulo de cdigo que puede ser accesible simultneamente con los dems. El microprocesador 80386 y 80486 contienen 6 registros segmento de 16 bits, estos mantienen los valores del selector en las posiciones de memoria actualmente direccionables. En modo de direccin real, un segmento puede variar desde un byte hasta un tamao de segmento mximo de 64 Kb. La figura muestra la representacin grfica de los registros de segmento.

CS (cdigo). El segmento de cdigo es una seccin de la memoria que tiene los programas y procedimientos utilizados por los programas. Este define la direccin inicial de la seccin de memoria que tiene el cdigo. El segmento de cdigo direcciona a 4Gbytes en el 80386 y 80486.

DS (datos). Es una seccin de memoria que contiene la mayor parte de los datos utilizados por un programa.

ES (extra o adicional). El segmento extra o adicional de datos lo utilizan algunas instruucciones para cadenas.

SS (pila). El segmento de pila define la superficie de la memoria utilizada para la pila. La ubicacin del punto inicial de entrada a la pila, se determina por el registro apuntador de la pila.

FS y GS. Estos registros de segmento adicionales estn disponibles en los microprocesadores 80386 y 80486 a fin de contar con dos segmentos adicionales de memoria para acceso con los programas.

e) REGISTRO APUNTADOR DE INSTRUCCIONES (IP).

El puntero de instrucciones (IP) contiene desplazamiento necesario para direccionar la siguiente instruccin que se va a ejecutar en el segmento de cdigo actualmente activo. Para formar la localidad real de la siguiente instruccin se suma el contenido de IP con CS (por) 10H. En general un puntero de 32 bits a la siguiente instruccin secuencial del programa. REGISTRO IP (INSTRUCCIN POINTER). Apunta a la siguiente instruccin que ser ejecutada en memoria.

f) REGISTRO DE ESTADO (BANDERAS)

Las banderas o sealizadores indican la direccin del microprocesador a la vez que controlan su movimiento. Los bits de banderas cambian despus de ejecutar muchas de las instalaciones aritmticas y lgicas. En la figura se muestran claramente. Registro de banderas

31 30 29 28 27 26 25 24 23 22 21 20 19 18 AC 17 VM 16 RF

15 14 NT 13 IOP 12 IOP 11 OF 10 DF 9 IF 8 TF 7 SF 6 ZF 5 4 AF 3 2 PF 1 0 CF

Las banderas indican la condicin del microprocesador a la vez que controlan su miento. Los bits de bandera cambian despus de ejecutar muchas de las instrucciones aritmticas y lgicas. El sealizador de arrastre (CF) se pone a 1 cuando se genera un arrastre en una operacin aritmtica realizada sobre un operando de 8 16 bits. En cualquier otro caso, est a 0 CF tambin se utiliza en instrucciones de desplazamiento y rotacin y contiene el bit desplazado o rotado fuera del registro.

El sealizador de paridad (PF) se utiliza principalmente para aplicaciones de comunicaciones de datos y se pone a 1 para generar paridad impar a 0 para generar paridad par.

El sealizador de arrastre auxiliar (AF) se utiliza en aritmtica BCD para indicar si ha habido arrastre o prstamo en los dgitos correspondientes a los 4 bits menos significativos de un valor BCD.

El sealizador de cero (ZF). Indica que el resultado de una operacin aritmtica o lgica es cero. Si ZF=1, el resultado es cero, y si ZF=0 el resultado no es cero.

El sealizador de signo (SF) se pone a 1 para resultados negativos y a 0 para resultados positivos. Toma el valor que tiene el registro ms significativo.

El sealizador de rebose (OF) indica si una operacin ha generado arrastre en el bit de orden superior del resultado pero no de un arrastre de otro bit diferente del orden superior.

Tres de los once sealizadores (TF, IF y DF) se utilizan para controlar ciertas operaciones del procesador.

El sealizador de trampa - TAP (TF). Cuando s inicializa pone al microprocesador en modo de paso simple y habilita la depuracin de un programa.

El sealizador de habilitacin de interrupcin (IF) habilita interrupciones externas cuando se pone uno, y las habilita cuando se pone cero.

La direccin de las operaciones con cadenas est controlada por el sealizador de direccin (DF). Con DF a cero, si y/o DI son incrementados automticamente con DF a 1, si IO, DI son decrementados automticamente.

Los sealizadores IOP y NT son dos sealizadores nuevos no suministrados anteriormente y solamente son usados cuando el microprocesador est en modo protegido, el sealizador de niveles E/S de privilegio (10 P) se utiliza para garantizar que una instruccin realiza todas aquellas operaciones que est autorizada a realizar. El sealizador de tareas (NT) se utiliza para indicar si la ejecucin de la tarea actual est anidada en otras tareas. Si NT est a uno, la tarea actual anidada tiene un enlace a la tarea previa.

El sealizador RF (de resumen) se usa junto con los "break points" del registro de operacin a pasos simples. Cuando RF est en uno todos los fallos de depuracin se ignoran en la siguiente instruccin, entonces, RF se pondr automticamente a cero (RESET) cuando complete con xito cada instruccin.

El VM (sealizador modo virtual) si VM est a uno y el 80386 est en modo protegido, el microprocesador conmutar a la operacin en modo virtual del 8086, haciendo que todas las operaciones de segmentos se ejecuten como si estuvieran corriendo en un 8086.

Sealizador (AC) comprobacin de alineacin.

1.2.3 Modos de direccionamiento.TECNICAS DE DIRECCIONAMIENTO.

Una instruccin del 80286/80386/80486 no solamente contiene informacin sobre la operacin en particular a realizar, sino que tambin incluye las especificaciones para el tipo de operandos a manipular, as como tambin la posicin de estos. La manera en que los operandos se escogen 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 el operando sea en realidad referenciado. Se emplear la instruccin MOV (mover datos) para describir los modos de direccionamiento de datos. En el ejemplo se ilustra la instruccin MOV y define la direccin del flujo de datos a la fuente a la derecha y el destino a la izquierda.

MOV destino, fuente MOV AX, BX

Modo ImplicadoEn este modo los operandos son especificados implcitamente en la definicin de la instruccin. Por ejemplo, la instruccin complemente el acumulador es una instruccin de modo implicado debido a que el operando en el registro acumulador est implicado en la definicin de la instruccin.

DIRECCIONAMIENTO DE DATO INMEDIATOEl termino inmediato significa que los datos siguen inmediatamente al cdigo hexadecimal de operacin en la memoria. El direccionamiento inmediato acta en byte o palabra de datos. A continuacin se muestra el funcionamiento del direccionamiento de dato inmediato.

MOV AH,00 ;AH se pone a cero (00) MOV AL,04 ;AL se carga con 0000 0100 en binario MOV AX,0FFFFFH MOV AX,302En este modo l operando es especificado en la instruccin misma. Esto es, una instruccin de modo inmediato tiene un campo de operando en vez de un campo de direccin. En la modalidad inmediata, el operando se incluye como parte de la instruccin. Por ejemplo MOV AX, 5. Aqu el nmero 5 forma parte de instruccin en su totalidad, en otras palabras, el nmero se especifica como una constante numrica en la misma instruccin y no hay necesidad de accesar la memoria, la instruccin mueve el valor de 5 al registro AX. Ejemplos: MOV AX, 60 MOV BX, 01A MOV AX, 083 MOV CX, 2BC MOV DX, 0123

DIRECCIONAMIENTO DIRECTOCon el direccionamiento directo, el desplazamiento del segmento de operando est contenido en la instruccin como una cantidad de 16 bits. Este desplazamiento se suma al contenido desplazado del registro del segmento de datos (DS) y se devuelve a la EA de 20 bits, o direccin fsica real. Habitualmente, el operando de direccionamiento directo es un rtulo. Ejemplo: MOV AX, MYDATA

MYDATA

CONTDIR.

0005

0004

FF0003

000002

0001

0000

AX

1111111100000000

En la mayor parte de las instrucciones se puede emplear el modo de direccionamiento directo de datos, el cual se aplica en muchas instrucciones en un programa tpico. Hay dos formas bsicas de direccionamiento directo de datos (1) direccionamiento directo y (2) direccionamiento por desplazamiento; en este caso el direccionamiento directo solo se permite con una instruccin MOV que transfiera datos entre una localidad en la memoria, situada dentro de datos y un registro AL (8 bits), AX (16 bits) o EAX (32 bit). Esta instruccin siempre tiene una longitud de 3 bytes. Ejemplo: La instruccin MOV CX, LIST copia el contenido tamao palabra de la localidad LIST de la memoria y lo coloca en el registro CX. MOV AX, DDDW MOV BX, DDDY MOV AX, DDDU

DIRECCIONAMIENTO DE REGISTROTransfiere un byte o palabra desde el registro fuente o localidad en la memoria, hasta el registro o localidad destino en la memoria. Es fcil comprender el direccionamiento por registro una vez que se aprende los numerosos registros que hay en los 8086-080486. Los 8086-80286 contienen los siguiente registros de 8 bits, utilizando con el direccionamiento por registro AH, AL, BH, BL, CH, CL, DH, y DL.

Tambin contienen los siguientes registros de 16 bits AX, BX, CX, DX, SP, BP, SI y DI. En los 80380/80486 los registros, ampliados de 32 bits son EAX, EBX, ECX, EDX, ESP, EBP, EDI y ESI. Pero no se debe mezclar un registro de 8 bits con uno de 16 bits, uno de 8 bits con uno de 32 bits, o uno de 16 bits con uno de 32 bits porque no lo permite el conjunto de instrucciones de 8086-80486. La tabla presenta algunas versiones de instruccin MOV entre registros. Es importante mostrar todas las variables por las numerosas combinaciones posibles.

Lenguaje ensambladorOperacin

MOV AL, BLCopia BL en AL

MOV CH, CLCarga CL en CH

MOV AX, CXCarga CX en AX

MOV SP, BPCarga BP en SP

MOV DS, AXCarga AX en DS

MOV DI, SICarga SI en DS

MOV BX, ESCarga ES en BX

MOV ECX, EBXCarga EBX en ECX

MOV ESP, EDXCarga EDX en ESP

MOV ES, DSNo se permite (segmento a segmento)

MOV CS, AXNo se permite ( registro de segmento )

MOV BL, BXNo se permite (tamao mixtos)

DIRECCIONAMIENTO DE REGISTRO INDIRECTOTransfiere un byte o palabra entre un registro y una localidad de memoria direccionada por un registro ndice o base. En lugar de referenciar por un rtulo la direccin del operando fuente, el valor del operando es sealado por una direccin de desplazamiento almacenada en uno de los registros siguientes: SI, DI,BX, o en algunas veces en el BP.

La ventaja de la instruccin de modo de registro indirecto es que el campo de direccionamiento en la instruccin utiliza menos bits para seleccionar un registro que lo que hubiera requerido para especificar una direccin. El microprocesador reconoce el direccionamiento indirecto de registros por la sintaxis de la instruccin. El designador del operando fuente es reconocido por corchetes.

EJEMPLOS MOV BP, [DX] LEA AX, [CS] LEA DI, [SS]DIRECCIONAMIENTO DE REGISTRO RELATIVOEn este modo el contenido del controlador del programa se suma a la parte de direccin de la instruccin para obtener una direccin efectiva. El direccionamiento relativo por registro es similar al direccionamiento base ms ndice y al direccionamiento por desplazamiento. En el direccionamiento relativo por registro, para direccionar datos en un segmento de memoria se agrega un desplazamiento al contenido de un registro base ndice (BP, BX, DI o SI).

Ejemplo: MENSAJE1 DB 'EL LENGUAJE ENSAMBLADOR ES', '#' MENSAJE2 DB 'RAPIDO Y EFICIENTE','#' . . LEA BX, MENSAJE1 MOV AL,[BX]+4

La orden LEA carga la direccin de desplazamiento en el registro BX. Al referencias el cuarto elemento de MENSAJE1 se realiza aadiendo la direccin base (BX) de MENSAJE1 al desplazamiento, +4 en la cadena. El ensamblador reconoce los tres mtodos siguientes para indicar el direccionamiento relativo base. LEA [BX]+4 LEA 4[BX] LEA [BX+4]

DIRECCIONAMIENTO DE BASE INDEXADO REGISTROCon el direccionamiento base indexado, el operando se localiza en el segmento seleccionado en un desplazamiento determinado por la suma de los contenidos del registro base, registro ndice y opcionalmente un desplazamiento Ejemplos:

LEA BX MYDATA MOV SI,25 MOV AX MYDATA [BX] [SI]

DIRECCIONAMIENTO BASE INDEXADOCon el direccionamiento base indexado, el direccionamiento se localiza en el segmento seleccionado en un desplazamiento determinado por la suma de dos contenidos del registro base, registro ndice y, opcionalmente un desplazamiento. Ejemplo: LEA BX MY DATA MOV SI, 25 MOV AX MYDATADIRECCIONAMIENTO INDEXADO DIRECTOEn el direccionamiento indexado directo, la direccin de desplazamiento del operando se calcula sumando el desplazamiento a un registro ndice (SI o DI) en el segmento seleccionado, frecuentemente, el direccionamiento indexado directo se utiliza para acceder a los elementos de un ARRAY esttico. El valor del desplazamiento localiza el comienzo del ARRAY el valor almacenado en el registro ndice selecciona uno de modo simple en la estructura. Como los elementos son del mismo tipo de datos y tamao, por moverse a travs del ARRAY basta en incrementar o decrementar sistemticamente en el desplazamiento.

Ejemplo:MOV SI, 4 MOV AL, ARRAY 1 [SI] LEA BX MYDATA MOV 51,25 MOV AX MYDATA [BX] [SI]Internamente el microprocesador tiene 7 registros rotulados A(para el acumulador );B, C, D, E, F H y L estos registros tiene 8 bits de ancho y puede acomodar un bvte . el cdigo de operacin de una instruccin leda de la memoria durante el ciclo de fetch es transferido al registro de instruccin. Es entonces decodificada por el control para determinar la secuencia de micro-operaciones necesarias ejecutar la instruccin.

1.3 Interrupciones.Una interrupcin es una detensin de la ejecucin del microprocesador para dar oportunidad a la maquina de comunicarse con los dispositivos perifericos. Puede decirse que una interrupcin es el elemento ms importante para ejecutar un programa debido a que estas permiten la interaccin entre el usuario y la maquina. Una interrupcin es un mecanismo de control; bsicamente ocasiona que la CPU detenga la ejecucin del programa actual transfiera el control a una rutina de servicio y al termino de esta prosigue con la ejecucin del programa interrumpido a otros mecanismos para transferencia de control tales como las instrucciones JMPCALL/ RED siempre se encuentran bajo el control del programa, la familia de las microcomputadoras y compatibles aceptan dos tipos de interrupciones las del HARDWARE Y SOFTWARE. EJECUCION DE UNA INTERRUPCION Para que una interrupcin se ejecute correctamente es necesario almacenar el nmero de funcin en el registro acumulador AH (y demas registros de propsito general, si as se requiere), y posteriormente mandar a llamar el tipo de interrupcin requerido.

A continuacin se mostrara un fragmento de un programa para ejemplificar la ejecucin de una interrupcin. ;CODIGO PARA BORRAR PANTALLA MOV CX, 0000MOV DX, 2479HMOV BH, 07MOV AH, 06MOV AL, 00INT 10HRETEND Como puede verse en este ejemplo, para ejecutar la interrupcin 10H, primero fue necesario cargar el valor de la funcin en el registro acumulador y los dems atributos en los dems registros de propsito general. El funcionamiento de una interrupcin existe cuando el microprocesador concluye al ejecutar la instruccin en curso, entonces para determinar si una interrupcin esta activa se comprueba: 1. Alguna instruccin en ejecucin 2. Trampa 3. NMI 4. Sobreflujo del segmento del procesador 5. INTR 6. La instruccin INT en el orden citado si est presente una o ms de estas condiciones de interrupciones ocurre lo siguiente: 1.- Se salva el contenido de registro de banderas en pila. 2.- Se desactivan las banderas de interrupciones IF y TF esto deshabilita la terminal INTR y la caracterstica de trampa, 3.- Se salva el contenido de registro CS de segmentos de cdigo hacia la pila, 4.- Se salva el contenido del apuntador de instruccin IP en la pila, 5.- Se recupera el contenido del vector de la interrupcin y se coloca en IP y en CS de modo que la siguiente instruccin se ejecuta en el procedimiento de servicio de la interrupcin diseccionada por el vector.

TIPOS DE INTERRUPCIONES Recordemos que las interrupciones internas y externas se inician a partir de seales que ocurren en la CPU. Y esta se encuentra lista para atender a la interrupcin a quien le interrumpi, pasa el control ala rutina llamada manejador de interrupciones, esta rutina define la causa de las interrupciones, proporciona el servicio solicitado y regresa el control a la CPU para que esta pueda proseguir a lo que estaba haciendo.

INTERNAS (DEL PROGRAMA)

Surgen debido a la utilizacin ilegal o errnea de una instruccin de datos. La interrupcin interna tambin se llama trampa. Algunos ejemplos de las interrupciones preocupadas o condiciones de error internas son los sobre flujos de registro, intentar dividir entre cero un cdigo de operacin no valido, desbordamiento de pila y violacin de la Proteccin. Por lo general estas condiciones de error ocurren, como resultado de una determinacin prematura de la ejecucin de una instruccin. El programa de servicio que procesa la interrupcin interna determina la medida correctiva que se debe tomar. La diferencia entre las interrupciones internas y externas, es que las internas se inician por una condicin excepcional causada por el programa mismo, mas bien que por un evento externo. Las interrupciones internas son sincronas con el programa en tanto que las externas no lo son. VECTORES PARA INTERRUPCION

NUM.DIRECCIONMICROPROCESADORFUNCION

0OH 3H8086-80486Error al dividir

14H-7H8086-80486Paso a paso

28H BH8086-80486Nmi Int. Hardware

3CH-FH8086-80486Punto de ruptura

410H-13H8086-80486Int. Por sobre flujo

514H-17H80286-80486Int. de BOUND

618H-1BH80286-80486Cdigo invalido

71CH-1FH80286-80486Int. De emulacin

820H-23H80386 -80486Doble falta

924H-27H80386- 80486Desbordamiento de segmento

1028H-2BH80386- 80486Segmento de estado de tarea

112CH-2FH80386- 80486No hay segmento

1230H-33H80386- 80486Falla de pila

1334H-37H80386- 80486Falla general de proteccin

1438H-3BH80386- 80486Falla de pgina

153CH-3FH80386- 80486Reservado

1640H-43H80386- 80486Error de punto decimal

1744H-47H80486SX intDe verificacin de alineacin

18-3148H-7FH8086-80486Reservado

32-25580H-3FFH8086-80486Int. Por el usuario.

INTERRUPCIONES EXTERNAS

Las interrupciones internas provienen de dispositivos de entrada y salida (E/S). De un dispositivo de temporizacion, de un circuito que monitorea la fuente de alimentacin de cualquier otra fuente externa. Algunos ejemplos que producen las interrupciones externas son dispositivos de entrada y salida que terminan la trasferencia de datos, tiempo transcurrido de un evento o falla de energa. Puede ocurrir una interrupcin por tiempo ilimitado de un programa que este en un ciclo que no termina y que, por lo tanto excede su tiempo asignado una interrupcin por falla de energa puede tener como su rutina de servicio a un programa que transfiere el estado completo de la CPU. A una memoria no voltil en pocos segundos anteriores a una falla de energa. UTILIZACION DE LAS INTERRUPCIONES DEL BIOS Y DEL MS DOS

Si la pastilla del microprocesador forma el ncleo de la computadora ciertamente la rutina del BIOS Y del DOS son los cerebros de la mquina cada computadora esta programada con una cierta cantidad de informacin antes de dejar la factora, esta informacin esta almacenada en el HARDWARE ROM(memoria slo de lectura). Tpicamente la mayora de las rutinas del BIOS ( sistema bsico de entrada y salida), esta almacenada en ROM y es permanente. EL DOS. Sistema Operativo de discos puede ser considerado como una memoria, aadida en una fecha posterior, realmente es memoria que se aade cada vez que la computadora se conecta o s inicializa con el DOS, es memoria no permanente, memoria que puede ser actualizada y cambiada con cada nueva liberacin del DOS tpicamente las operaciones s del DOS son almacenadas en RAM(memoria de acceso aleatorio o residen en el disco hasta que se necesiten). INT 1AH

La interrupcion de BIOS, 1AH, permite leer y escribir la fecha y hora actuales desde y al reloj del sistema. La tabla siguiente es un listado de las opciones disponibles con la interrupcin del BIOS tipo 1AH. INTERRUPCION 1AH

Valor AH Funcin Entrada Salida

AH=0Lee inicializacion reloj actualCX--Bytes superiores del reloj DX--Bytes inferiores del reloj AL--0,si temporizador no ha pasado 24 horas

AH=1Inicializa reloj actualCX= DX=Bytes superiores del reloj Bytes inferiores del reloj

AH=2Lee hora--reloj de tiempo realCH--BCD horas CL--BCD minutos DH--BCD segundos

AH=3Inicializa hora--reloj de tiempo realCH= CL= DH= DL=BCD horas BCD minutos BCD segundos 1--hora del diaundos 0--hora estandar

AH=4Lee fecha-- reloj de tiempo real.CH--BCD siglo CL--BCD ao DH--BCD mes DL--BCD dia

AH=5Inicialioza Fecha--reloj de tiempo realCH= CL= DH= DL=BCD siglo BCD ao BCD mes BCD dia

AH=6Inicializa alarma (hasta 23:59:59)CH= CL= DH=BCD horas BCD minutos BCD segundos

AH=7Reinicializa alarma.

INT 10H

Muchas veces cuando se programa, la entrada o salida de la computadora necesita ser mostrada en la pantalla del monitor. Con frecuencia esto requerir una simple operacin de borrado de pantalla; en otras ocasiones se podr desear cambiar los colores o atributos de la pantalla. El control de la pantalla puede conseguirse fcilmente con las interrupciones del BIOS tipo 10H . La tabla siguiente es un listado de las posibles variaciones programables con las interrupciones tipo 10H. INTERRUPCION 10H

Valor AHFuncinSalidaEntrada

Control de interfaz del CRT

AH=0Inicializa el modo de visualizarAL=0 AL=1 AL=2 AL=3 AL=4 AL=5 AL=6 AL=1040x25 B/W 40x25 COLOR 80x25 B/W 80x25 COLOR 320x200 color grficas 322x200 B/W grficas 640x200 B/W grficas 640x350E.G.A.Graficas

AH=1Inicializa tipo de cursorCH= CL=Bits 4-0 principio de lnea para el cursor Bits 4-0 fin de linea para cursor

AH=2Inicializa posicin de cursorDH= DL= BH=Fila Columna Nmero pgina de pantalla

AH=3Lee posicin de cursor (valores hasta ejecusion)DH= DL= CH= CL= BH=Fila Columna Modo cursor Modo cursor Nmero pgina de pantalla

AH=4Obtiene posicion lapiz luminoso (valores hasta ejecusin)AH=0 AH=1 DH= DL= CH= BX=Conmutacion no abajo/disparo Respuestas validas; sigue: Fila Columna Grafo linea (0-199) Columna Grafica

AH=5Inicializa pgina pantalla activaAL=Valor nueva pgina Modos 0 y 1 (0-7) Modos 2 y 3 (0-3)

AH=6Enrrola pgina activa hacia arribaAL= CH= CL= DH= DL= BH=Nmero de lineas; 0 para pantalla entera Fila, esquina superior izquierda Columna, esquina superiorzquierda Fila,esquina inferior derecha Columna, esquina inferior derecha Atributo a ser usado

AH=7Enrrola pgina activa hacia abajoAL= CH= CL= DH= DL= BH=Nmero de lineas; 0 para pantalla entera Fila, esquina superior izquierda Columna, esquina superior izquierda Fila,esquina inferior derecha Columna, esquina inferior derecha Atributo a ser usado

Manipulacion de caracteres

AH=8Lee atributo/caracter en posicin cursorBH= AL= AH=Pgina pantalla Caracter leido Atributo de caracter

AH=9Escribe atributo/caracter en posicion cursorBH= CX= AL= BL=Pgina pantalla Cuenta de caracteres a escribir Caracter a escribir Atributo de caracter

AH=10Escribe caracter en posicin cursorBH = CX = AL =Visualiza pgina Cuenta de caracteres a escribir Caracter a escribir

Interfaz de grficos

AH=11Selecciona paleta coloresBH = BL =

Paleta ID (0-127) Color para paleta ID 0--Fondo (0-15) 1--paleta 0--Verde(1),rojo(2),amarillo(3) 1-- Cyan (1), magenta (2),

AH=12Dibuja punto en pantallaDX= CX= AL=Fila (0-199) Columna (0-319/639) Color del punto

AH=13Lee informacion puntoDX= CX= AL=Fila (0-199) Columna (0-319/639) Valor del punto

Salida teletipo ASCII

AH=14Escribe a pgina activaAL= BL=Caracter a escribir Color primer plano

AH=15Devuelto a estado videoAL= AH= BH=Modo actual Nmero de columnas de pantalla Pgina pantalla actual

AH=16Reservado

AH=17Reservado

AH=18Reservado

AH=19Escribe cadenaES:BP= CX= DX= BH= AL=0

AL=1

AL=2

AL=3 Seala a cadena Longitud de cadena Posicion de cursor para comienzo Nmero de pgina BL= atributo(car,car,car...car) Cursor no transferido BL= atributo (car,car,car...car) Cursor es transferido (car,atr,car...atr) Curso no transferido (car,atr,car...atr) Cursor es transferido.

INTERRUPCION DEL DOS ( 21H)

La interrupcion 21H del DOS es una interrupcion de llamada a funcion. Las especificaciones y requerimientos para utilizar esta interrupcion se muestran en la siguiente tabla: INTERRUPCION 21H

Valor AH Funcin Entrada Salida

AH = 1Espera y visualiza caracter de teclado con comprobacin CTRL-BREAKAL - Cacter introducido

AH = 2Visualiza caracter de teclado con comprobacin CTRL-BREAKDL =Caracter a visualizar

AH = 3Entrada asncrona de caracterAL - Caracter introducido

AH = 4Salida asncrona de caracterDL =Caracter a enviar

AH = 5Caracter a escribirDL =Caracter a escribir

AH = 6Entrada caracter de tecladoDL = 0FFHCaracter introducido

AH = 7Espera para caracter de teclado (no visualiza)AL - Caracter introducido

AH = 8Espera para caracter de teclado (no visualiza-comprueba CTRL-BREAK)AL - Caracter introducido

AH = 9Visualiza cadenaDS:DX=Direccin de cadena. Debe finalizar con centinela $

AH = ACadena teclado a bufferDS:DX=Direccin de buffer. Primer byte=tamao, segundo byte=nmero de caracteres leidos

AH = BStatus de entrada de tecladoAL-No. caracter=0FFH Caracter = 0

AH = CBorra buffer teclado y llama funcinAL =1,6,7,8,0A - Nmero funcin

AH = DUnidad implcita disco (reset)NingunaNinguna

AH = EUnidad implcita disco (seleccionada)DL =AL - Nm. unidades 0 - Unidad A 1 - Unidad B, etc.

AH = 19Cdigo unidad (mplicito)AL - Nm. unidades 0 - Unidad A 1 - Unidad B, etc.

AH = 25Interrupcin (inicializa)DS:DX =Direccin del vector de interrupcin

AH=2AFecha (lee)AL=

Nmero de interrupcin CX--Ao(80 a 99) DH--Mes DL--Dia(1 a 31)

AH=2BFecha (inicializa)CX:DXIgual que antes AL--0 si valido OFF si no valido

AH=2CHora (lee)CH--Horas (0-23) CL--Minutos(0-59)

AH=2DHora (inicializa)CX:DXIgual que antes AL--0 si valido OFF--si no valido

AH=2EVerifica estado(inicializa)DL=

0 AL= 0 0;verifica off 1;verifica on

AH=35Direccion interrupcion (lee)AL=Nmero de interrupcin ES:BX--apunta a direccion vector

AH=36Disco espacio disponibleDL=

Unidad (0--implicita,1--A,2--B,etc.) AX--sectores/apiamiento(FFFF si invalido) BX--Nmero apiamiento libres CX--Bytes por sector DX--Nmero total de apiamientos

AH=39Hace directorioDS:DXDireccin de cadena para directorio

AH=3AEliminar directorioDS:DXDireccin de cadena para directorio

AH=3BCambia directorioDS:DXDireccin de cadena para nuevo directorio

AH=3CArchivo (crea)DS:DX

CX= Direccin de cadena para archivo AX--Retorno maipula archivo Atributo archivo

AH=3DArchivo (abre)DS:DX AL=

Direccin de cadena para archivo 0--Abre para leer 1--Abre para escribir 2--Abre para ambos AX--Retorno manipula archivo

AH=3EManipula archivo(cierra)BX=Manipula archivo

AH=3FArchivo o dispositivo(lee)BX= CX= DS:DXManipula archivo Nmero de bytes a leer Direccion de buffer AX--Nmero de bytes a leer

AH=40Archivo o dispositivo(escribe)BX= CX= DS:DXManipula archivo Nmero de bytes a escribir Direccin de datos a escribir AX--Nmero de bytes a escribir

AH=41Archivo (suprime)DS:DXDireccin de archivos cadena

AH=42Archivo (pone atributo)CX:DX AL=0 AL=1

AL=2 Desplazamiento en bytes Puntero desplazado (CX:DX) bytes desde el comienzo del archivo Puntero a posicin actual ms desplazamiento Puntero a EOF ms desplazamiento

AH=43Archivo (Inicializa atributo)DS:DXDireccin de archivo cadena SI AL=0, atributo devuelto a CX SI AL=1, inicializa archivo con atributo de CX

AH=47Direccion actualDL=

DS:DI= Nmero Unidad (0--implicita,1--unidad A,2--unidad B) Direccin buffer DS:DI--Devuelve direccin de cadena

AH=54Verifica estadoNingunaAL--0 si verifica off 1 si verifica on

AH=56Archivo(renombra)DS:DX ES:DIDireccin de cadena para informacin antigua Direccin de cadena para informacin nueva

Definicin y Tipos de Interrupciones.

La primera cosa de todas, qu son las interrupciones?, bien, las interrupciones son un "mecansmo" por medio del cual hacemos que la CPU deje la tarea en la que estaba para que se vaya a ocupar de otra cosa distinta, es decir, es una forma de llamar la atencin de la CPU de tal forma que cada dispositivo cuando necesita ser atendido por la CPU, emite una interrupcin o seal haciendo que la CPU vaya a atenderla de inmediato. Esto es importantsimo ya que de no existir interrupciones, la CPU debera de ir preguntando, cada cierto tiempo, a los dispositivos para ver si necesitan de su intervencin y como podeis suponer, eso significara lentitud, mucha lentitud. Por tanto, quedaros con que las interrupciones sirven para controlar el hardware, ya que son las que llaman a la CPU cuando este, el hardware, necesita la intervencin de la misma.

Las interrupciones se pueden dividir en 2 grupos:

1. Interrupciones de Software. Tambin son conocidas como "falsas interrupciones" ya que se producen como consecuencia de la ejecucin de otra instruccin al no ser el hardware las que las produce. Otra forma de entender estas interrupciones, es verlas desde el punto de vista de llamadas a subrutinas, lgicamente, la gracia est en que esas subrutinas no son nuestras, sino que son las propias de cada sistema operativo, driver o similar tiene. Quedaros pues, con que somos nostros los que hacemos invocamos a la interrupcin. Este tipo de interrupcin es el ms habitual en la programacin.

2. Interrupciones de Hardware. Este tipo de interrupcin es invocado directamente por los dispositivos hardware de nuestro ordenador, por lo que "son bastante ms autnticas" que las anteriores. Al producir algn dispositivo hardware la interrupcin el controlador de interrupciones o PIC se encarga de gestionarla determinando, en el caso de producirse ms de una interrupcin a la vez, cual de ellas tiene ms prioridad y debe de ser gestionada por la CPU. El funcionamiento de este tipo de interrupciones es bastante similar y se suele utilizar mucho para la programacin de sistemas de comunicaciones.

La Tabla de Vectores de Interrupciones.

Seguro que alguno se ha preguntado, "si cuando llamamos a una interrupcin se ejecuta una determinada rutina...dnde narices se encuentra esta rutina?, es ms, cmo sabe nuestra CPU dnde encontrarla?."Bien, la respuesta a estas dos preguntas (y muchas ms) se encuentra en la tabla de vectores de interrupcin. Dicha tabla es una estructura que se crea durante la inicializacin del ordenador y se coloca, en el principio de nuestra memoria (segmento 0 y desplazamiento 0). Dicha estrucutura ocupa y de forma justa 1Kb, ya que dispone de 256 entradas de 4 bytes cada una. Lo importante de todo esto es que, dicha estructura, almacena la direccin, en memoria, de las distintas rutinas que van ligadas a las distintas interrupciones, de tal modo que cuando invocamos, mediante interrupcin software, o se invoca, mediante hardware, una interrupcin, lo que se hace es utilizar un ndice que va ligado a la interrupcin, de tal manera que, con dicho ndice, se acude a la tabla de vectores de interrupcin para que el sistema encuentre la direccin de la rutina en dnde se encuentra el verdadero tratamiento a la interrupcin, es decir, si se produce la interrupcin x, lo que se hace es acudir a la tabla con el ndice x para encontrar la entrada (recordar que eran 256 entradas con 4 bytes cada una) que contiene la direccin en memoria de la rutina que sirve para tratar a la interrupcin de ndice x.Como cada entrada es de 4 bytes, es fcil adivinar que dichos 4 bytes forman la direccin, ya que 2 de esos bytes se utilizan como segmento y los otros 2 como desplazamiento, total, que ya tenemos la direccin de memoria con la rutina que hay que utilizar.

Ahora pensar por un momento que somos nostros los que, conociendo la direccin de memoria de una de esas rutinas, cambiamos dicha rutina por una nuestra para que al producirse una determinada interrupcin ocurra lo que a nosotros nos interese...Como podis observar, las posibilidades son muy interesantes, tan slo tenis que mirar el efecto de luz del Visualizator v:2.0 (ir a senccin de Bjate algo interesante), dicho efecto se consigui poniendo en la rutina que se encargaba de controlar la interrupcin de reloj del sistema, el cdigo necesario para el efecto de luz, con lo que al producirse la interrupcin de reloj se ejecutaba tambin el cdigo del efecto y como la interrupcin de reloj se produce contnuamente, los efectos son muy buenos, vamos, que si queris hacer ese efecto acudiendo a un bucle While lo llevais claro :-(.

Espero haber despertado, con este artculo, el inters por saber dominar las interrupciones. Si queris saber ms, tan slo teneis que buscar informacin en libros sobre programacin de dispositivos tales como ratn, VGA, etc, en los que se acude siempre a ellas. Ahora mismo estoy pensando el hacer un artculo sobre como controlar el ratn as que puede que aparezca en esta actualizacin de la revista, adems, es la mejor forma de entender las interrupciones o no?. ;).

http://usuarios.lycos.es/macedoniamagazine/varios2.htm1.3.1 Hardware.Ver archivo: Interrupciones 2005.pft Las interrupciones del HARDWARE son invocadas asincronamente es decir pueden ocurrir en cualquier momento que no se encuentran bajo el control del programa con un dispositivo o evento interno. 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. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario. Interrupciones externas de hardware Las interrupciones externas las generan los dispositivos perifericos, 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 vias de comunicacin llamadas puertos. http://members.tripod.com/~MoisesRBB/unidad6.htm1.3.2 Software.Ver archivo: Interrupciones 2005.pftPor otro lado las interrupciones del SOFTWARE no interrumpen algo si no son variantes de las rutinas las cuales pueden invocarse a voluntad y son controladas por un programa en forma sincrnica o sea, que se conoce con todo lo relacionado con su ejecucin puesto que el programa controla el momento y la manera en que son llamadas mediante la secuencia de instrucciones CALL y RET, cuando un programa ejecuta una instruccin CALL se conoce previamente la direccin de la rutina llamada de tal forma que la CPU pueda saltar al cdigo, que se encuentra ah y ejecutarle. En la mayora de los casos el programa TLINK.EXE determina y asigna las direcciones de las rutinas es claro que el enlazador no puede saber de antemano donde se encuentran las rutinas MS DOS y del BIOS en la memoria de la otra cuando un programa ejecuta una instruccin INT # de interrupcin en la CPU automticamente accesa la memoria baja a fin de obtener el desplazamiento La interrupcin INT n, llama al procedimiento de servicio de instruccin que comienza en la direccin representada en el vector nmero n. La interrupcin IRET es una instruccin especial para retorno y se utiliza para retornar de las instrucciones del Software y Hardware. Interrupciones de software Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al nmero de interrupcin deseada con la instruccin INT.El uso de las interrupciones nos ayuda en la creacin de programas, utilizandolas nuestros programas son ms cortos, es ms fcil entenderlos y usualmente tienen un mejor desempeo debido en gran parte a su menor tamao.Este tipo de interrupciones podemos separarlas en dos categorias: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.La diferencia entre ambas es que las interrupciones del sistema operativo son ms fciles de usar pero tambin son ms lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho ms rpidas pero tienen la desventaja que, como son parte del hardware son muy especficas y pueden variar dependiendo incluso de la marca del fabricante del circuito.La eleccin del tipo de interrupcin a utilizar depender unicamente de las caracteristicas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS). Interrupcin 21H Propsito: Llamar a diversas funciones del DOS. Sintaxis: Int 21H Nota: Cuando trabajamos en MASM es necesario especificar que el valor que estamos utilizando es hexadecimal.Esta interrupcin tiene varias funciones, para accesar a cada una de ellas es necesario que el el registro AH se encuentre el nmero de funcin que se requiera al momento de llamar a la interrupcin.Funciones para desplegar informacin al video. 02H Exhibe salida 09H Impresin de cadena (video) 40H Escritura en dispositivo/Archivo Funciones para leer informacin del teclado. 01H Entrada desde teclado 0AH Entrada desde teclado usando buffer 3FH Lectura desde dispositivo/archivo Funciones para trabajar con archivos. En esta seccin unicamente se expone la tarea especfica de cada funcin, para una referencia acerca de los conceptos empleados refierase a la unidad 7, titulada: "Introduccin al manejo de archivos". Mtodo FCB 0FH Abrir archivo 14H Lectura secuencial 15H Escritura secuencial 16H Crear archivo 21H Lectura aleatoria 22H Escritura aleatoria Handles 3CH Crear archivo 3DH Abrir archivo 3EH Cierra manejador de archivo 3FH Lectura desde archivo/dispositivo 40H Escritura en archivo/dispositivo 42H Mover apuntador de lectura/escritura en archivo Funcin 02H Uso: Despliega un caracter a la pantalla.Registros de llamada: AH = 02H DL = Valor del caracter a desplegar. Registros de retorno: NingunoEsta funcin nos despliega el caracter cuyo codigo hexagesimal corresponde al valor almacenado en el registro DL, no se modifica ningn registro al utilizar este comando.Es recomendado el uso de la funcin 40H de la misma interrupcin en lugar de esta funcin. Funcin 09H

Uso: Despliega una cadena de carateres en la pantalla.

Registros de llamada: AH = 09H DS:DX = Direccin de inicio de una cadena de caracteres

Registros de retorno: Ninguno.Esta funcin despliega los caracteres, uno a uno, desde la direccin indicada en el registro DS:DX hasta encontrar un caracter $, que es interpretado como el final de la cadena.Se recomienda utilizar la funcin 40H en lugar de esta funcin. Funcin 40H

Uso: Escribir a un dispositivo o a un archivo.

Registros de llamada: AH = 40H BX = Va de comunicacin CX = Cantidad de bytes a escribir DS:DX = Direccin del inicio de los datos a escribir

Registros de retorno: CF = 0 si no hubo error AX = Nmero de bytes escritos CF = 1 si hubo error AX = Cdigo de error El uso de esta funcin para desplegar informacin en pantalla se realiza dandole al registro BX el valor de 1 que es el valor preasignado al video por el sistema operativo MS-DOS. Funcin 01H

Uso: Leer un caracter del teclado y desplegarlo.

Registros de llamada: AH = 01H

Registros de retorno: AL = Caracter ledo Con esta funcin es muy sencillo leer un caracter del teclado, el cdigo hexadecimal del caracter ledo se guarda en el registro AL. En caso de que sea un caracter extendido el registro AL contendra el valor de 0 y ser necesario llamar de nuevo a la funcin para obtener el cdigo de este caracter. Funcin 0AH

Uso: Leer caracteres del teclado y almacenarlos en un buffer.

Registros de llamada: AH = 0AH DS:DX = Direccin del rea de almacenamiento BYTE 0 = Cantidad de bytes en el rea BYTE 1 = Cantidad de bytes ledos desde BYTE 2 hasta BYTE 0 + 2 = caracteres ledos

Registros de retorno: Ninguno Los caracteres son ledos y almacenados en un espacio predefinido de memoria. La estructura de este espacio le indica que en el primer byte del mismo se indican cuantos caracteres sern ledos. En el segundo byte se almacena el nmero de caracteres que ya se leyeron, y del tercer byte en adelante se escriben los caracteres ledos.Cuando se han almacenado todos los caracteres indicados menos uno la bocina suena y cualquier caracter adicional es ignorado. Para terminar la captura de la cadena es necesario darle [ENTER]. Funcin 3FH

Uso: Leer informacin de un dispositivo o archivo.

Registros de llamada: AH = 3FH BX = Nmero asignado al dispositivo CX = Nmero de bytes a procesar DS:DX = Direccin del rea de almacenamiento

Registros de retorno: CF = 0 si no hay error y AX = nmero de bytes leidos. CF = 1 si hay error y AX contendra el cdigo del error. Funcin 0FH

Uso: Abrir archivo FCB

Registros de llamada: AH = 0FH DS:DX = Apuntador a un FCB

Registros de retorno: AL = 00H si no hubo problema, de lo contrario regresa 0FFH Funcin 14H

Uso: Leer secuencialmente un archivo FCB.

Registros de llamada: AH = 14H DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno: AL = 0 si no hubo errores, de lo contrario se regresara el cdigo correspondiente de error: 1 error al final del archivo, 2 error en la estructura del FCB y 3 error de lectura parcial. Esta funcin lo que hace es que lee el siguiente bloque de informacin a partir de la direccin dada por DS:DX, y actualiza este registro. Funcin 15H

Uso: Escribir secuencialmente a un archivo FCB

Registros de llamada: AH = 15H DS:DX = Apuntador a un FCB ya abierto

Registros de retorno: AL = 00H si no hubo errores, de lo contrario contendra el cdigo del error: 1 disco lleno o archivo de solo lectura, 2 error en la formacin o especificacin del FCB. La funcin 15H despus de escribir el registro al bloque actual actualiza el FCB. Funcin 16H

Uso: Crear un archivo FCB.

Registros de llamada: AH = 16H DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno: AL = 00H si no hubo errores, de lo contrario contendra el valor 0FFH Se basa en la informacin proveida en un FCB para crear un archivo en el disco. Funcin 21H

Uso: Leer en forma aleatoria un archivo FCB.

Registros de llamada: AH = 21H DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno: A = 00H si no hubo error, de lo contrario AH contendra el cdigo del error: 1 si es fin de archivo, 2 si existe error de especificacin de FCB y 3 si se ley un registro parcial o el apuntador del archivo se encuentra al final del mismo. Esta funcin lee el registro especificado por los campos del bloque actual y registro actual de un FCB abierto y coloca la informacin en el DTA (rea de transferencia de disco o Disk Transfer Area). Funcin 22H

Uso: Escribir en forma aleatoria en un archivo FCB.

Registros de llamada: AH = 22H DS:DX = Apuntador a un FCB abierto.

Registros de retorno: AL = 00H si no hubo error, de lo contrario contendr el cdigo del error: 1 si el disco est lleno o es archivo de solo lectura y 2 si hay error en la especificacin de FCB. Escribe el registro especificado por los campos del bloque actual y registro actual de un FCB abierto. Escribe dicha informacin a partir del contenido del DTA (rea de transferencia de disco). Funcin 3CH

Uso: Crear un archivo si no existe o dejarlo en longitud 0 si existe. (Handle)

Registros de llamada: AH = 3CH CH = Atributo de archivo DS:DX = Apuntador a una especificain ASCIIZ

Registros de retorno: CF = 0 y AX el nmero asignado al handle si no hay error, en caso de haberlo CF ser 1 y AX contendra el cdigo de error: 3 ruta no encontrada, 4 no hay handles disponibles para asignar y 5 acceso negado. Esta funcin sustituye a la 16H. El nombre del archivo es especificado en una cadena ASCIIZ, la cual tiene como caracterstica la de ser una cadena de bytes convencional terminada con un caracter 0.El archivo creado contendra los atributos definidos en el registro CX en la siguiente forma:Valor Atributos 00H Normal 02H Escondido 04H Sistema 06H Escondido y de sistema El archivo se crea con los permisos de lectura y escritura. No es posible crear directorios utilizando esta funcin. Funcin 3DH

Uso: Abre un archivo y regrese un handle

Registros de llamada: AH = 3DH AL = modo de acceso DS:DX = Apuntador a una especificacin ASCIIZ

Registros de retorno: CF = 0 y AX = nmero de handle si no hay errores, de lo contrario CF = 1 y AX = cdigo de error: 01H si no es vlida la funcin, 02H si no se encontr el archivo, 03H si no se encontro la ruta, 04H si no hay handles disponibles, 05H en caso de acceso negado, y 0CH si el cdigo de acceso no es vlido. El handle regresado es de 16 bits.El cdigo de acceso se especifica en la siguiente forma: BITS 7 6 5 4 3 2 1 . . . . 0 0 0 Solo lectura . . . . 0 0 1 Solo escritura . . . . 0 1 0 Lectura/Escritura . . . X . . . RESERVADO Funcin 3EH

Uso: Cerrar archivo (Handle).

Registros de llamada: AH = 3EH BX = Handle asignado

Registros de retorno: CF = 0 si no hubo errores, en caso contrario CF ser 1 y AX contendr el cdigo de error: 06H si el handle es invlido. Esta funcin actualiza el archivo y libera o deja disponible el handle que estaba utilizando. Funcin 3FH

Uso: Leer de un archivo abierto una cantdad definida de bytes y los almacena en un buffer especfico.

Registros de llamada: AH = 3FH BX = Handle asignado CX = Cantidad de bytes a leer DS:DX = Apuntador a un rea de trabajo.

Registros de retorno: CF = 0 y AX = nmero de bytes leidos si no hubo error, en caso contrario CF = 1 y AX = cdigo de error: 05H si acceso negado y 06H si no es vlido el handle. Funcin 40H

Uso: Escribe a un archivo ya abierto una cierta cantidad de bytes a partir del buffer designado.

Registros de llamada: AH = 40H BX = Handle asignado CX = Cantidad de bytes a escribir. DS:DX = Apuntador al buffer de datos.

Registros de retorno: CF = 0 y AX = nmero de bytes escritos si no hay errores, en caso de existir CF = 1 y AX = cdigo del error: 05H si el acceso es negado y 06H si el handle es invlido. Funcin 42H

Uso: Mover apuntador al archivo (Handle)

Registros de llamada: AH = 42H AL = mtodo utilizado BX = Handle asignado CX = La parte ms significativa del offset DX = La parte menos significativa del offset

Registros de retorno: CF = 0 y DX:AX = la nueva posicin del apuntador. En caso de error CF ser 1 y AX = cdigo de error: 01H si la funcin no es vlida y 06H si el handle no es vlido. El mtodo utilizado se configura como sigue: Valor de AL Mtodo 00H A partir del principio del archivo 01H A partir de la posicin actual 02H A partir del final del archivo 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.En este tutorial unicamente veremos algunas de las funciones de esta interrupcin.

Funciones comunes de la interrupcin 10H.

02H Seleccin de posicin del cursor

09H Escribe atributo y caracter en el cursor

0AH Escribe caracter en la posicin del cursor

0EH Escritura de caracteres en modo alfanumrico Funcin 02H

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 caracter un determinado nmero de veces con un atributo definido empezando en la posicin actual del cursor.

Registros de llamada: AH = 09H AL = Caracter 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 caracter el nmero de veces especificado en CX pero sin cambiar la posicin del cursor en la pantalla. Funcin 0AH

Uso: Desplegar un caracter en la posicin actual del cursor.

Registros de llamada: AH = 0AH AL = Caracter a desplegar BH = Pgina en donde desplegar BL = Color a usar (slo en grficos). CX = Nmero de repeticiones

Registros de retorno: Ninguno. 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: Deplegar un caracter en la pantalla actualizando la posicin del cursor.

Registros de llamada: AH = 0EH AL = Caracter a desplegar BH = Pgina donde se desplegara el caracter 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 caracter de teclado

01H Lee estado del teclado Funcin 00H

Uso: Leer un caracter del teclado.

Registros de llamada: AH = 00H

Registros de retorno: AH = cdigo de barrido (scan code) del teclado AL = Valor ASCII del caracter. Cuando se utiliza esta interrupcin se detiene la ejecucin del programa hasta que se introduzca un caracter desde el teclado, si la tecla presionada es un caracter 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.El cdigo de barrido fu 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 caracter ASCII

01H Inicializa la impresora

02H Proporciona el estado de la impresora Funcin 00H

Uso: Escribir un caracter a la impresora.

Registros de llamada: AH = 00H AL = Caracter 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 1 - 2 - 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 mayoria de los BIOS unicamente 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 1 - 2 - 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 mayoria de los BIOS unicamente 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. El estado de la impresora se codifica bit por bit como sigue: BIT 1/0 SIGNIFICADO ---------------------------------------- 0 1 Se agot el tiempo de espera 1 - 2 - 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 mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

Introduccin

Todo el semestre hemos usado interrupciones para hacer llamado a servicios de DOS y BIOS; hasta ahora, principalmente las hemos visto como formas de llamar al