ONTOLOGIA LENGUAJES DE INTERFAZ

28
[Fecha] ONTOLOGIA UNIDAD 1 Alumno RAUL LOREDO Maestro RAUL LOREDO LENGUAJES DE INTERFAZ

description

UNIDAD 1 LENGUAJES DE INTERFAZ

Transcript of ONTOLOGIA LENGUAJES DE INTERFAZ

Page 1: ONTOLOGIA LENGUAJES DE INTERFAZ

[Fecha]

Alumno

Maestro

LENGUAJES DE INTERFAZ

Page 2: ONTOLOGIA LENGUAJES DE INTERFAZ

Lenguaje ensambladorEl lenguaje ensamblador, oassembler (assembly languageen inglés), es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, micro controladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.

Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.

Características

El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido

ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo

nivel.

El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un

microprocesador, puede necesitar ser modificado, para poder ser usado en otra

máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente

es necesario reescribirlo completamente.

Los programas hechos por un programador experto en lenguaje ensamblador son

generalmente mucho más rápidos y consumen menos recursos del sistema (memoria

RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel.

Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas

que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto

nivel.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas

por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o

muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas,

en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no

están disponibles en los lenguajes de alto nivel.

También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir

que se interrumpa durante su ejecución.

Page 3: ONTOLOGIA LENGUAJES DE INTERFAZ

El lenguaje ensamblador es usualmente utilizado en las siguientes circunstancias:

Mejorar la eficiencia de una rutina específica que se ha transformado en un 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.

Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje ensamblador pues el código ejecutable puede ser menor que el generado por el compilador.

Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos.

Referencia de definición

http://es.wikipedia.org/wiki/Lenguaje_ensamblador

Page 4: ONTOLOGIA LENGUAJES DE INTERFAZ

LENGUAJE ENSAMBLADOR

• El único lenguaje que entienden los micros controladores es el código máquina formado por ceros y unos del sistema binario.

• El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al micro controlador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.

• El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.

•La traducción de los nemónicos a código máquina entendible por el micro controlador la lleva a cabo un programa ensamblador.

• El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.

• Está compuesto por una sucesión de líneas de texto

. • Cada línea puede estructurarse en hasta cuatro campos o columnas separadas por uno o más espacios o tabulaciones entre sí.

Campo de etiquetas. Expresiones alfanuméricas escogidas por el usuario para identificar una determinada línea. Todas las etiquetas tienen asignado el valor de la posición de memoria en la que se encuentra el código al que acompañan.

Campo de código. Corresponde al nemónico de una instrucción, de una directiva o de una llamada a macro.

Campo de operando y datos. Contiene los operando que precisa el nemónico utilizado. Según el código, puede haber dos, uno o ningún operando.

Campo de comentarios. Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.

Referencia de definición

http://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf

Page 5: ONTOLOGIA LENGUAJES DE INTERFAZ

EL LENGUAJE ENSAMBLADOR

El lenguaje ensamblador es el lenguaje de programación utilizado para escribir programas informáticos de bajo nivel, y constituye la representación más directa de la máquina específica para cada arquitectura de computadoras legible por un programador. Aun hoy se utiliza en la programación de handler o manipuladores de dispositivos de hardware.

CaracterísticasEl código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.

El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del código programado.

Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un Microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.

También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.

El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un archivo de programación (.ASM), en el cual pueden existir varios programas, macros o rutinas que pueden ser llamados entre sí.

Page 6: ONTOLOGIA LENGUAJES DE INTERFAZ

Código máquinaEl código máquina, o lenguaje de máquina, está formado por instrucciones sencillas, que -dependiendo de la estructura del procesador- pueden especificar:

Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.

Posiciones de memoria específicas (offset).

Modos de direccionamiento usados para interpretar operando.

Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Casi todas las instrucciones utilizan 2 operando específicos para realizar su función. Ejemplo, cuando deseamos mover un valor constante hacia un registro de almacenamiento debemos especificar ambos operando. Las operaciones disponibles en la mayoría de los conjuntos de instrucciones incluyen:

Mover

Llenar un registro con un valor constante (Ej.: mov al, `20`). o mover datos de una posición de memoria a un registro o viceversa (Ej.: mov al, [si]) o escribir y leer datos de dispositivos (Ej.: lea dx, offset cadena)

Computar

Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro (Ej.: sum, mul, div, entre otras instrucciones). o realizar operaciones binarias, incluyendo operaciones lógicas (AND/OR/XOR/NOT) o comparar valores entre registros (mayor, menor, igual) (Ej.: cmp)

Afectar el flujo del programa

Saltar a otra posición en el programa y ejecutar instrucciones allí(Ej.: jmp) o saltar si se cumplen ciertas condiciones (IF) (Ej.: jnb, jnz, jb, jz, jne, je, entre otros) o saltar a otra posición, pero guardar el punto de salida para retornar (Ej.: CALL, llamada a subrutinas) Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo:

Salvar varios registros en la Pila de una sola vez

Mover grandes bloques de memoria

Referencia de definición

http://www.monografias.com › Computacion › Programacio

Page 7: ONTOLOGIA LENGUAJES DE INTERFAZ

El procesador y sus registros internos

Registro…

En informática, o concretamente en el contexto de una base de datos relacional, un registro (también llamado fila o tupla) representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.

Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Se le asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índice aunque lo normal y práctico es asignarle a cada registro un campo clave para su búsqueda.

. Concepto generalLos registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son espacios físicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionales por medio de una viñeta, que es una dirección de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15,14,13…. 3,2,1,0), los registros están divididos en seis grupos los cuales tienen un fin específico. Los registros se dividen en:

Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propósitos generales Registro índice Registro de bandera.

2. Registros de segmento.Un registro de segmento se utiliza para alinear en un límite de párrafo o dicho de otra forma codifica la dirección de inicio de cada segmento y su dirección en un registro de segmento supone cuatro bits 0 a su derecha.Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son:

Registro CS Registro DS Registro SS Registro ES Registro FS y GS

Registro CS.El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución. Para propósito de programación normal, no se necesita referenciar el registro CS.Registro DS.La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.Registro SS.El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de

Page 8: ONTOLOGIA LENGUAJES DE INTERFAZ

la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.Registro ESAlgunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice) . un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.Registros FS y GS.Son registros extra de segmento en los procesadores 80386y posteriores a estos procesadores.3. Registro Apuntador de instrucciones.(IP)El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta.El registro IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente.En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instrucción que será ejecutada el procesados combina las direcciones en el CS y el IP así:Segmento de dirección en el registro CS: 25A40HDesplazamiento de dirección en el registro IP: + 412HDirección de la siguiente instrucción: 25E52HRegistros apuntadores.Los registros apuntadores están asociados con el registro SS y permiten al procesador accesar datos en el segmento de pila los registros apuntadores son dos:

El registro SP El registro BP

Registro SP.El apuntador de pila IP de 16 bits está asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila.El ejemplo siguiente el registro SS contiene la dirección de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que está siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PP:Dirección de segmento en el registro SS: 27B30HDesplazamiento en el registro SP: + 312HDirección en la Pila: 27E42H

…….

27B3[0]H 312HDirección del segmento SS Desplazamiento del SP

Registro BP.El registro BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía lapida.4. Registros de propósitos generales.Los registros de propósitos generales AX, BX, CX y DX son los caballos de batalla o las herramientas del sistema. Son los únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El último byte de la izquierda es la parte "alta", y el último byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por si nombre. las instrucciones siguientes mueven ceros a los registros CX, CH y CL respectivamente.Mov CX, 00Mov CH, 00Mov CL, 00Los procesadores 80386 y posteriores permiten el uso de todos registros de propósito general, mas versiones de 32 bits; EAX, EBX y EDCX.Registros AX.El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código más eficientes si se refiere al AX en lugar de los otros registros.

Page 9: ONTOLOGIA LENGUAJES DE INTERFAZ

Registro BX.El BX es conocido como el registro base ya que es el único registro de propósitos generales que pueden ser unos índices para direccionamiento indexado. También es común emplear al BX para cálculos.Registro CX.El CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CX también es usado para muchos cálculos.Registro DX.El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos. Puede usar los registros de propósitos para suma y resta de cifras de 8, 16, 32 bits.5. Registro índice.Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas. Que son las operaciones de punta.Registro SI.El registro índice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI.Registro DI.El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di está asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI.Registro de bandera.Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o cálculos aritméticos cambian el estado de las banderas.Las banderas están en el registro de banderas en las siguientes posiciones:bits 15 14 13 12 11 10 9 8 7 6 54 3 2 1

BanderaLas banderas más comunes son las siguientes:

OF (Over flow flag, desbordamiento).Indica el desbordamiento de un bit de orden alto (mas a la izquierda) después de una operación

aritmética.DF (Dirección flag, Dirección).

Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.IF (Interrupción flag, Interrupción).

Indica que una interrupción externa, como la entrada desde el teclado sea procesada o ignorada.TF (Trap flag, Trampa).

Examina el efecto de una instrucción sobre los registros y la memoria. Los programas depuradores como DEBUG, activan esta bandera de manera que pueda avanzar en la ejecución de una sola interrupción a

un tiempo.SF (Sign flag, Signo).

Contiene el signo resultante de una operación aritmética (0=positivo y 1= negativo).ZF (Zero flag, Zero).

Indica el resultado de una operación aritmética o de comparación (0= resultado diferente de cero y 1=resultado igual a cero).

AF (Auxiliary carry flag, Acarreo auxiliar).Contiene un acarreo externo del bit 3 en un dato de 8 bits, para aritmética especializada

PF (Parity flag, Paridad).Indica paridad par o impar de una operación en datos de ocho bits de bajo orden (mas a la derecha).

CF (Carry flag, Acarreo).

Page 10: ONTOLOGIA LENGUAJES DE INTERFAZ

Contiene el acarreo de orden más alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o rotación.

Cuadro Comparativo

TIPOS DE REGISTROS FUNCION

Registros de Segmento Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para el direccionamiento conocida como el segmento actual

Registros de Apuntador de Instrucciones

Este registro está compuesto por 16 bits y contiene el desplazamiento de la siguiente instrucción que se va a ejecutar. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIP.

Registros Apuntadores Permiten al sistema acceso datos al segmento de la pila. Los procesadores 80386 tienen un apuntador de pila de 32 bits llamado ESP. El sistema maneja de manera automática estos registros.

Registros de Propósito General Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes. Los procesadores 80386 y posteriores permiten el uso de todos los registros de propósitos general más sus versiones ampliadas de 32 bits llamados EAX, EBX,ECX y EDX.

Registros Índices Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas.

Registros de Banderas Sirven para indicar el estado actual de la máquina y el resultado del procesamiento. De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086.

Page 11: ONTOLOGIA LENGUAJES DE INTERFAZ

Ejemplo De Representación De Los RegistrosDespués de haber conceptualizado e interpretado los diferente tipos de registro nos vemos en la necesidad de dar un ejemplo no muy práctico pero si muy significativo en el cual se representan la forma estructurada de un programa en el lenguaje ensamblador y como se utilizan los diferentes termino que hemos investigado vemos que en el programa o en una pequeña porción de él se muestran cómo se colocan dentro los diferentes tipos registros. TITLE P17HANRD(EXE) Lectura secuencial de registros..MODEL SMALL.STACK 64/------------------------------------------------------------------------------------------,DATAENDCDE DB 00 ; FIN DEL INDICARDOR DE PROCESO.HANDLE DW ?IOAREA DB 32 DUP(´ ´)OPENMSG DB ´*** Open error ***´ 0DH, 0AHPATHNAM DB ´D:\NAMEFILE.SRT´, 0READMSD DB ´*** Read error ***´ 0DH, 0AHROW DB 00/---------------------------------------------------------------------------------------------.CODEBEGIN PROC FARMOV AX,@data ; inicializaMOV DS,AX ; registro deMOV ES,AX ; segmentoMOV AX,0600H  Referencia de definición

http://www.monografias.com/trabajos7/regi/regi.shtml

Page 12: ONTOLOGIA LENGUAJES DE INTERFAZ

La memoria principal (RAM)

LA MEMORIA PRINCIPAL:

• Unidad de memoria que se comunica directamente con la CPU.

• Almacena solo los programas y datos que necesita en ese momento el procesador. • Es relativamente rápida.

• Se comunica directamente con los dispositivos de memoria auxiliar, mediante un procesador de E/S.

• Se comunica directamente con la memoria caché.

• Tecnología fundamental: circuitos integrados semiconductores (RAM). Una parte más pequeña de la memoria principal es ROM.

• La RAM tiene dos modos de operación posibles:

• RAM estática: flips-flops internos que almacenan información binaria. La información almacenada es válida mientras la unidad está encendida.

• RAM dinámica: conjunto de pequeños condensadores que pueden estar cargados o descargados. Debe refrescarse cada pocos milisegundos para impedir la pérdida de información. Tienen mayor capacidad que las estáticas.

La memoria de acceso aleatorio (Random-Access Memory, RAM) se utiliza como memoria de trabajo de computadoras para el sistema operativo, los programas y la mayor parte del software.

En la RAM se cargan todas las instrucciones que ejecutan la unidad central de procesamiento(procesador) y otras unidades de cómputo.

Se denominan «de acceso aleatorio» porque se puede leer o escribir en una posición de memoria con un tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden para acceder (acceso secuencial) a la información de la manera más rápida posible.

Page 13: ONTOLOGIA LENGUAJES DE INTERFAZ

Durante el encendido de la computadora, la rutina POST verifica que los módulos de RAM estén conectados de manera correcta. En el caso que no existan o no se detecten los módulos, la mayoría de tarjetas madres emiten una serie de sonidos que indican la ausencia de memoria principal. Terminado ese proceso, la memoria BIOS puede realizar un test básico sobre la memoria RAM indicando fallos mayores en la misma.

También es importante anotar que la RAM es una memoria volátil, es decir, requiere de alimentación eléctrica para mantener la información. En otras palabras, la RAM pierde toda la información al desconectar el ordenador.

En la actualidad hemos de disponer de la mayor cantidad posible de ésta, ya que estamos supeditados al funcionamiento más rápido o más lento de nuestras aplicaciones diarias.

La memoria RAM hace unos años era muy cara, pero hoy en día su precio ha bajado considerablemente.

Referencia de conceptos

http://es.wikipedia.org/wiki/Memoria_de_acceso_aleatorio

Page 14: ONTOLOGIA LENGUAJES DE INTERFAZ

El concepto de interrupciones

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.

Las interrupciones surgen de la necesidad que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema informático.

La primera técnica que se empleó para esto fue el polling, que consistía en que el propio procesador se encargara de sondear los dispositivos periféricos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador consumía constantemente tiempo y recursos en realizar estas instrucciones de sondeo.

El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo periférico la responsabilidad de comunicarse con él cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).

Una interrupción no es más que un evento que genera la ruptura de la ejecución de un programa para pasar a ejecutar otro relacionado con el evento causante de la interrupción.

Existen 256 direcciones de interrupción diferentes.

La interrupción, desde el punto de vista del mecanismo que la activa, puede ser de tipo:

Hardware

Software.

Page 15: ONTOLOGIA LENGUAJES DE INTERFAZ

Funcionamiento del mecanismo de interrupciones

Todos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada una línea única capaz de avisar al CPU cuando le requiere para realizar una operación. Esta línea se denomina IRQ ("Interrupt ReQuest" o petición de interrupción).

Las IRQ son líneas que llegan al controlador de interrupciones, un componente de hardwarededicado a la gestión de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al mismo. El controlador de interrupciones debe ser capaz de habilitar o inhibir las líneas de interrupción y establecer prioridades entre las mismas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. También puede darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento de una interrupción de mayor prioridad a la que se estaba ejecutando; aunque hay interrupciones que no se pueden deshabilitar (conocidas como interrupciones no enmascarables o NMI).

Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones para averiguar cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina a la que debe llamar para atender la petición del dispositivo asociado a dicha IRQ.

Procesamiento de una interrupción

1. Terminar la ejecución de la instrucción máquina en curso.

2. Salvar el estado del procesador (valores de registros y flags) y el valor del contador

de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso de

interrupción, pueda seguir ejecutando el programa a partir de la última instrucción.

3. La CPU salta a la dirección donde está almacenada la rutina de servicio de

interrupción (Interrupt Service Routine, o abreviado ISR) y ejecuta esa rutina que

tiene como objetivo atender al dispositivo que generó la interrupción.

4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado

que había guardado en la pila en el paso 2 y retorna al programa que se estaba

usando anteriormente.

Page 16: ONTOLOGIA LENGUAJES DE INTERFAZ

Mecanismo y líneas de petición de interrupción

El bus de control de la placa base dispone de líneas específicas para el sistema de interrupciones. Un PC típico dispone en su placa base de un controlador de interrupciones 8259 de Intel o de un circuito integrado análogo. Este dispositivo electrónico dispone de hasta 16 líneas IRQ, numeradas desde el 00 hasta el 15. En las nuevas placas base este circuito está integrado junto con el resto delchipset y permite hasta 24 interrupciones.

En el IBM PC y XT existían 8 líneas de petición de interrupción manejadas por el controlador de interrupciones Intel 8259. Estas líneas están numeradas del 0 al 7, las dos primeras están asignadas al timer tick del temporizador Intel 8253, y al teclado. Solo quedaban 6 líneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2 - IRQ7). A partir del modelo AT se añadieron otras 8 líneas, numeradas del 8 al 15, mediante un segundo controlador de interrupciones (PIC), aunque la tecnología empleada exigió colgarlo de la línea IRQ2 del primero, de forma que esta línea se dedica a atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se dedicó al reloj de tiempo real, un dispositivo que no existía en los modelos XT.

Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo (son las marcadas con asterisco en la tabla que sigue). La razón de esta ausencia en los zócalos de conexión es que son de asignación fija, y solo son usadas por ciertos dispositivos instalados en la propia placa base. En concreto la línea NMI está asignada al mecanismo de control de paridad de la memoria, la línea 0 está asignada al cronómetro del sistema y la línea 1 al chip que controla el teclado (dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongación en el bus.

Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre asignado al puerto serie COM2 y el IRQ4 al COM1; IRQ6 al controlador estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clásicas para el XT y el AT.

Page 17: ONTOLOGIA LENGUAJES DE INTERFAZ

En sistemas más modernos utilizan la arquitectura APIC de Intel con 24 líneas y 8 extra para enrutar las interrupciones PCI.

Nombre

Int (hex) XT: Descripción AT: Descripción

NMI --- Paridad* Paridad*

IRQ0 08 Temporizador* Temporizador*

IRQ1 09 Teclado* Teclado*

IRQ2 0A ReservadoInterrupciones 8 a 15 (PIC#2)

IRQ3 0B Puertos serie COM2/COM4 Puerto serie COM2/COM4

IRQ4 0C Puertos serie COM1/COM3 Puertos serie COM1/COM3

IRQ5 0D Disco duro Puerto Paralelo LPT2

IRQ6 0E Disquete Disquete

IRQ7 0F Puerto Paralelo LPT1 Puerto Paralelo LPT1

IRQ8 70 No existe Reloj de tiempo real*

IRQ9 71 No existe Redirigido a IRQ2*

IRQ10 72 No existe no asignado

IRQ11 73 No existe no asignado

Page 18: ONTOLOGIA LENGUAJES DE INTERFAZ

IRQ12 74 No existe Ratón PS2

IRQ13 75 No existe Coprocesador 80287*

IRQ14 76 No existe Contr. disco IDE primario

IRQ15 77 No existe Contr. disco IDE secundario

IR716 78 Existe Contr. disco SATA primario

Cuando se instala un dispositivo de E/S que puede necesitar muchísima atención del procesador pentium, debe asignársele una IRQ adecuada. Dicho en otras palabras, cuando un dispositivo periférico requiera atención, debe enviar una señal en la línea IRQ especificada. Inicialmente esta asignación se efectuaba de forma manual y automática, por medio de puentes (jumpers) en la placa o dispositivo móvil, pero actualmente esta selección puede hacerse mediante software.

Tipos de interrupciones

Atendiendo a la fuente que las produce, las interrupciones pueden clasificarse de la siguiente forma:

Interrupciones de hardware. Estas son asíncronas a la ejecución del procesador, es

decir, se pueden producir en cualquier momento independientemente de lo que esté

haciendo el CPU en ese momento. Las causas que las producen son externas al

procesador y a menudo suelen estar ligadas con los distintos dispositivos de E/S.

Excepciones. Son aquellas que se producen de forma síncrona a la ejecución del

procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del

programa que en ese momento estaba siendo ejecutado en la CPU. Normalmente son

causadas al realizarse operaciones no permitidas tales como la división entre 0, el

desbordamiento, el acceso a una posición de memoria no permitida, etc.

Interrupciones por software. Las interrupciones por software son aquellas generadas

por un programa en ejecución. Para generarlas, existen distintas instrucciones en

el código máquina que permiten al programador producir una interrupción, las cuales

suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza la

instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema).

Page 19: ONTOLOGIA LENGUAJES DE INTERFAZ

Hay dos tipos de instrucciones relacionados con la llamada a servicios del sistema

operativo:

Syscall. Instrucción de llamada a un servicio del sistema operativo, a

través de su API. Cuando una tarea ejecuta esta instrucción pasa el control

al sistema operativo.

Sysret. Instrucción de retorno de un servicio. El sistema operativo ejecuta

esta instrucción justo antes de devolver el control a la tarea que solicitó el

servicio.

Entre la ejecución de las instrucciones Syscall y Sysret, el sistema

operativo accede al espacio de memoria de la tarea.

Las llamadas al sistema se pueden agrupar en cinco categorías:

Control de proceso (Crear, cargar, ejecutar un proceso, obtener y

establecer atributos, esperar un suceso, liberar memoria, abortar y terminar

proceso).

Manipulación de archivos (Crear, abrir, leer, obtener y establecer

atributos, cerrar y eliminar archivos).

Manipulación de periféricos (Solicitar, escribir, leer, obtener y establecer

atributos, liberar periférico).

Manipulación de la información (Obtener fecha y hora, establecer fecha y

hora, obtener y establecer datos del sistema, obtener y establecer

atributos).

Comunicaciones (Crear conexión, enviar mensajes, recibir mensajes,

transferir información del estado y eliminar conexión.

Interrupciones de hardware

Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una operación de E/S. No son producidas por ninguna instrucción de un programa sino por las señales que emiten los dispositivos periféricos para indicarle al procesador que necesitan ser atendidos.

Cuando el microprocesador accede a un periférico (disco duro, puerto de comunicación...), puede transcurrir algún tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o hasta que se haya efectuado la

Page 20: ONTOLOGIA LENGUAJES DE INTERFAZ

transmisión (polling), pero esta solución bloquea todos los programas en ejecución, y eso no puede admitirse en un sistemamultitarea. Por ello, en los sistemas modernos se prefiere un funcionamiento mediante interrupciones, ya que éstas permiten mejorar la productividad del procesador, de forma que este último puede ordenar una operación de E/S y, en lugar de tener que realizar una espera activa, se puede dedicar a atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar/terminar la operación de E/S.

Excepciones

Las excepciones son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa, como por ejemplo una división entre 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. Así pues, las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos almacenados tanto en el espacio de usuario como en el espacio kernel. Cuando el Sistema Operativo detecta una excepción intenta solucionarla, pero en caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.

Modos de direccionamiento El campo de operación de una instrucción especifica la operación que se va a

ejecutar. Esta operación debe realizarse sobre algunos datos almacenados en registros de computadora o en palabras de memoria.

La manera en que eligen los operando durante la ejecución del programa depende del modo de direccionamiento de la instrucción.

El modo de direccionamiento especifica una regla para interpretar o modificar el campo de dirección de la instrucción antes de que se haga la referencia real al operando.

Las computadoras utilizan técnicas de modo de direccionamiento para acomodar una o las dos siguientes consideraciones:

Proporcionar al usuario versatilidad de programación al ofrecer facilidades como apuntadores a memoria, contadores para control de ciclo, indexación de datos y reubicación de datos.

Reducir la cantidad de bits en el campo de direccionamiento de la instrucción.

La disponibilidad de los modos de direccionamiento proporciona al programador con experiencia en lenguaje ensamblador la flexibilidad para escribir programas más eficientes en relación con la cantidad de instrucciones y el tiempo de ejecución.

Page 21: ONTOLOGIA LENGUAJES DE INTERFAZ

Para comprender los diferentes modos de direccionamiento, es imperativo entender el ciclo de operación básico de la computadora.

La unidad de control de una computadora está diseñada para recorrer un ciclo de instrucciones que se divide en tres fases principales:

Búsqueda de la instrucción de la memoria.

Decodificar la instrucción.

Ejecutar la instrucción.

Modo inmediato

En este modo se especifica el operando en la instrucción misma. En otras palabras, una instrucción de modo inmediato tiene un campo operando, en lugar de una campo de dirección.

Modo de registro

Cuando el campo de dirección especifica un registro de procesador se dice que la instrucción está en modo de registro.

Modo indirecto por registro

En este modo la instrucción especifica un registro en la CPU cuyo contenido proporciona la dirección del operando en la memoria. En otras palabras, el registro seleccionado contiene la dirección del operando en lugar del operando mismo.

Page 22: ONTOLOGIA LENGUAJES DE INTERFAZ

Proceso de ensamblado y ligado

Para crear un programa ejecutable utilizando lenguaje ensamblador es necesario realizar la serie de pasos, conocida como ciclo de desarrollo de programas, que se muestra en la figura.

Un ensamblador es el programa que convierte un listado de código fuente, escrito en un fichero de texto, en código objeto, es decir, lenguaje máquina (el que finalmente interpretará el procesador) en el que sólo le faltan las referencias a rutinas externas.

El código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa.

El código objeto consta del código en lenguaje máquina y de la información necesaria para enlazarlo con otros módulos objeto.

Además de dar como salida el módulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde serán cargados los módulos objeto en la memoria.

Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del ordenador y comienza la ejecución

Desplegado de mensajes en el monitor

La pantalla es una malla de posiciones direccionables, en cualquiera de las cuales se puede colocar el cursor. El sistema proporcionara espacio en la memoria para un área de despliegue de video, o búfer. El área de despliegue monocromático inicia en la localidad BISOS B000[0]H y permite utilizar 4K bytes de memoria: 2KB disponibles para caracteres y 2K para atributos de cada carácter, como video inverso, intermitencia, intensidad y subrayado.