tarea de efrain ruiz fernandez

24
Elaboro: Efraín Ruiz Fernández

Upload: efrain-ruiz-fernandez

Post on 14-Apr-2017

262 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Tarea de efrain ruiz fernandez

Elaboro: Efraín Ruiz Fernández

Page 2: Tarea de efrain ruiz fernandez

Introducción:Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina,

consistente en asociar a los códigos de operación (opcodes) palabras clave que faciliten su uso por parte del programador.

Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente el Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían tablas de programa similares al ejemplo de la calculadora que vimos anteriormente. Pero, al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de Máquina).

Una característica que hay que resaltar, es que al depender estos lenguajes del hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto Lenguaje Ensamblador) para cada CPU. Por ejemplo, podemos mencionar tres lenguajes completamente diferentes, que sin embargo vienen de la aplicación de los conceptos anteriores:

1. Lenguaje Ensamblador de la familia Intel 80x862. Lenguaje Ensamblador de la familia Motorola 680003. Lenguaje Ensamblador del procesador POWER, usado en las IBM RS/6000.

Page 3: Tarea de efrain ruiz fernandez

Fundamentos del lenguaje ensamblador:

El uso del lenguaje ensamblador le permite al programador indicarle al computador exactamente cómo llevar a cabo una tarea específica usando la menor cantidad de instrucciones. Aún cuando el código generado por los compiladores con opción de optimización es eficiente, la optimización manual puede resultar en una mejora sustancial en términos de rendimiento y consumo de memoria. 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. 

Page 4: Tarea de efrain ruiz fernandez

El microprocesador:El Microprocesador es un circuito integrado que contiene

algunos o todos los elementos hardware, y el de CPU, que es un concepto lógico. Una CPU puede estar soportada por uno o varios microprocesadores, y un microprocesador puede soportar una o varias CPU. Un núcleo suele referirse a una porción del procesador que realiza todas las actividades de una CPU real.

Un microprocesador escalar solamente puede manejar una instrucción que a su vez maneja solo un objeto de datos ala vez.

Un microprocesador super escalar puede procesar también solo un objeto de datos por instrucción, pero puede paralelizar este proceso por su diseño, ejecutando varias instrucciones a la vez.

Page 5: Tarea de efrain ruiz fernandez

Que son interrupciones:Definición: Una interrupción es el rompimiento en la secuencia de un

programa para ejecutar un programa especial llamando una rutina deservicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa. Dentro de una computadora existen dos clases de interrupciones: 

Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida. 

Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa. Existen dos clases de interrupciones de este tipo: 

Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido. 

Interrupciones por hardware no enmascarables(NMI): Aquellas que siempre interrumpen al programa.

Page 6: Tarea de efrain ruiz fernandez

Interrupciones de Hardware:Las interrupciones hardware ocurren cuando un dispositivo necesita atención

del procesador y genera una señal eléctrica en la línea IRQ que tiene asignada.  Esta señal es recogida y procesada por el controlador de excepciones PIC antes de ser enviada al procesador, lo que puede realizarse de dos formas, según el tipo de interrupción sea enmascarable o no enmascarable.

Cuando se habla de una   significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la señal de interrupción.  Para ello se envía una señal a la patilla INTR, y el procesador la atiende o la ignora en función del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o deshabilitado.  En el primer caso, cuando se recibe la señal, el procesador concluye la instrucción que estuviese en proceso y a continuación responde con una combinación de señales en algunas de sus patillas componiendo una sucesión de dos señales INTA ("Interrupt Acknowledge".

La primera señal es simplemente un aviso; la segunda es una petición para que el PIC  coloque en el bus de datos un Byte con el número de interrupción, de forma que el procesador pueda localizar el servicio solicitado.

El valor recibido (0-255) es multiplicado por 4 para calcular la dirección del vector correspondiente en la tabla de vectores de interrupción, lo que se realiza mediante un desplazamiento binario de dos posiciones a la izquierda.

 Interrupción no enmascarable significa que la interrupción no puede ser deshabilitada por software.  Este tipo de interrupciones ocurren cuando se recibe una señal en la patilla NMI ("Nonmaskable Interrupt") del procesador.  Se reservan para casos en que es crítica la respuesta, por ejemplo que se detecte un error de paridad en la memoria.  Además son de prioridad más alta que las enmascarables.

Page 7: Tarea de efrain ruiz fernandez

Interrupciones de Software:Los procesadores Intel de la gama x86 y compatibles,

disponen de una instrucción INT que permite generar por software cualquiera de los 256 tipos de interrupción anteriormente descritos. El proceso seguido es exactamente el mismo que si se recibe una interrupción hardware en la patilla INTR, salvo que en este caso se conoce el tipo de interrupción, y no se requiere ningún ciclo INTA.

Este tipo de interrupciones son de prioridad más alta que las de hardware (enmascarables y no enmascarables), de forma que si se recibe una interrupción hardware mientras que se ejecuta una software, esta última tiene prioridad.

Page 8: Tarea de efrain ruiz fernandez

FUNCIONES DE LA BIOSLas funciones de la BIOS se invocan, desde los programas de usuario,

ejecutando una interrupción software con un cierto valor inicial en los registros. La BIOS emplea un cierto rango de interrupciones, cada una encargada de una tarea específica:     INT 10h:     Servicios de Vídeo (texto y gráficos).     INT 11h:     Informe sobre la configuración del equipo.     INT 12h:     Informe sobre el tamaño de la memoria convencional.     INT 13h:     Servicios de disco (muy elementales: pistas, sectores, etc.).     INT 14h:     Comunicaciones en serie.     INT 15h:     Funciones casette (PC) y servicios especiales del sistema (AT).     INT 16h:     Servicios de teclado.     INT 17h:     Servicios de impresora.     INT 18h:     Llamar a la ROM del BASIC (sólo máquinas IBM).     INT 19h:     Reinicialización del sistema.     INT 1Ah:     Servicios horarios.     INT 1Fh:     Apunta a la tabla de los caracteres ASCII 128-255 (8x8 puntos).

Page 9: Tarea de efrain ruiz fernandez

Funciones del dos:

El DOS emplea varias interrupciones, al igual que la BIOS; sin embargo, cuando se habla de funciones del DOS, todo el mundo sobreentiende que se trata de llamar a la INT 21h, la interrupción más importante con diferencia.     INT 20h:     Terminar programa (tal vez en desuso).     INT 21h:     Servicios del DOS.     INT 22h:     Control de finalización de programas.     INT 23h:     Tratamiento de Ctrl-C.     INT 24h:     Tratamiento de errores críticos.     INT 25h:     Lectura absoluta de disco (sectores lógicos).     INT 26h:     Escritura absoluta en disco (sectores lógicos).     INT 27h:     Terminar dejando residente el programa (en desuso).     INT 28h:     Idle (ejecutada cuando el ordenador está inactivo).     INT 29h:     Impresión rápida en pantalla (no tanto).     INT 2Ah:     Red local MS NET.     INT 2Bh-2Dh:     Uso interno del DOS.     INT 2Eh:     Procesos Batch.     INT 2Fh:     Interrupción Multiplex.     INT 30h-31h:     Compatibilidad CP/M-80.     INT 32h:     Reservada.

Page 10: Tarea de efrain ruiz fernandez

Estructura de un programa en el lenguaje ensamblador

Un programa en lenguaje ensamblador estará formado por una secuencia de sentencias. Cada sentencia ocupa una sola línea y tiene la siguiente estructura: [etiqueta] [operación] [operandos] [;comentarios]

Los cuatro campos de una sentencia son opcionales, si no aparece ninguno de ellos (una línea en blanco) tendríamos una sentencia vacía.

Las sentencias se dividen en dos tipos: Instrucciones: Estas sentencias representan órdenes al procesador y tras el

proceso de compilación generan código ejecutable. Directivas: Estas sentencias dirigen el proceso de compilación o

construcción del programa ejecutable. No generan código ejecutable. Normalmente se utilizan para aumentar la legibilidad del código fuente.

Estructura de un fichero en lenguaje ensamblador: Los ficheros de código fuente escritos en lenguaje ensamblador se organizan en líneas. Cada una de las líneas del fichero puede contener una directiva, una instrucción o ambas cosas a la vez en los casos en que sea posible.

Todos los ficheros fuente tienen que adecuarse a una estructura fija dividida en secciones.

Page 11: Tarea de efrain ruiz fernandez

La estructura a seguir se muestra a continuación:escala EQU 1000 ;Definición de constantes simbólicas ORIGEN 7F40h ;Definición del origen de carga del programa INICIO ini ;Definición de la etiqueta que marca la ;primera instrucción a ejecutar del programa .PILA 100h ;Definición de la pila .DATOS ;Definición de los datos del programa dato1 VALOR 12h … .CODIGO ;Definición del código del programa INI: MOV R5, R4 … FIN 

No existe una convención establecida para la estructura de un programa en lenguaje ensamblador (no como sucede con otros lenguajes, como C/C++). Como regla de oro, es necesarios la declaración de dos segmentos, la de código (CODE) y la de pila (STACK). En total, hay 4 segmentos principales: Segmento de datos, Segmento de código, Segmento de pila y Segmento Extra.

Page 12: Tarea de efrain ruiz fernandez

Los diferentes segmentos tienen las siguientes funciones:

Segmento de datos: Contiene la dirección donde inicia la declaración de variables. Aquí, escribiremos nuestras variables.

Segmento de código: Contiene la dirección de inicio donde se encuentran las instrucciones del programa. Aquí, escribiremos todo el código de nuestro programa

Segmento de pila: Contiene la dirección donde se encuentra la pila. 

Segmento Extra: Contiene la dirección donde podemos almacenar datos extras.

Page 13: Tarea de efrain ruiz fernandez

Procedimiento de ensamble, enlace y ejecución.

Tal como esta, el programa es solo un archivo de texto que no puede ejecutarse; primero debe ensamblarlo y enlazarlo.1. El paso de ensamble consiste en la traducción del código fuente en código objeto y la generación de un archivo intermedio .OBJ. El ensamblador también crea un encabezado al frente del módulo .OBJ generado; parte del encabezado tiene información acerca de direcciones incompletas.2. El paso de enlace implica convertir un módulo .OBJ en un módulo de código maquina .EXE3. El último paso es cargar el programa para su ejecución. Ya que el cargador conoce en dónde está el programa apunto de ser cargado, puede completar las direcciones indicadas en el encabezado que estaban incompletas.

Page 14: Tarea de efrain ruiz fernandez

Entorno de programacion:Antes de que el COMMAND.COM pase el control al programa que se pretende ejecutar, se crea un bloque de 256 bytes llamado PSP (Program Segment Prefix), cuya descripción detallada se verá en el próximo capítulo. En él aparecen datos tales como la dirección de retorno al dos cuando finalice el programa, la dirección de retorno en caso de Ctrl-Break y en caso de errores críticos. Además de la cantidad de memoria disponible y los posibles parámetros suministrados del programa. Cuando el programa toma el control, DS y ES apuntan al PSP. Tipos de programas:

Page 15: Tarea de efrain ruiz fernandez

En los de tipo COM:          - CS apunta al PSP e IP=100h (el programa empieza tras el PSP).          - SS apunta al PSP y SP toma la dirección más alta dentro del segmento del PSP.     En los de tipo EXE:          - CS e IP toman los valores del punto de arranque del programa (directiva END etiqueta).          - SS apunta al segmento de pila y SP = tamaño de la pila definida.

 Los programas de tipo COM se cargan en memoria tal y como están en disco, entregándoseles el control. Los de tipo EXE, que pueden llegar a manejar múltiples segmentos de código de hasta 64 Kb, se almacenan en disco «semiensamblados». En realidad, al ser cargados en memoria, el DOS tiene que realizar la última fase de montaje, calculando las direcciones de memoria absolutas. Por ello, estos programas tienen un formato especial en disco, generado por los ensambladores y compiladores, y su imagen en memoria no se corresponde realmente con lo que está grabado en el disco, aunque esto al usuario no le importe. Por ello, no se extrañe el lector de haber visto alguna vez ficheros EXE de más de 640 Kb: evidentemente, no se cargan enteros en memoria aunque lo parezca. 

Page 16: Tarea de efrain ruiz fernandez

EJEMPLO DE PROGRAMA TIPO COM.     El siguiente ejemplo escribe una cadena en pantalla llamando a uno de los servicios estándar de impresión del DOS (función 9 de INT 21h):

cr EQU 13 ; constante de retorno de carrolf EQU 10 ; constante de salto de líneaprograma SEGMENT ; segmento común a CS, DS, ES, SS.ASSUME CS:programa, DS:programaORG 100h ; programa de tipo COM

inicio: LEA DX,texto ; dirección de texto a imprimirMOV AH,9 ; función de impresiónINT 21h ; llamar al DOSINT 20h ; volver al sistema operativotexto DB cr,lf,"Grupo Universitario de Informática.",cr,lf,"$"programa ENDS ; fin del segmentoEND inicio ; fin del programa y punto de inicio

Page 17: Tarea de efrain ruiz fernandez

EJEMPLO PROGRAMA TIPO EXE   Los programas EXE (listado al final de esta sección) requieren algo más de elaboración. En primer lugar, es necesario definir una pila y reservar espacio para la misma. Al contrario que los programas COM (cuya pila se sitúa al final del segmento compartido también con el código y los datos) esta característica obliga a definir un tamaño prudente en función de las necesidades del programa.; Segmento de datosdatos SEGMENTtexto DB cr,lf,"Texto a imprimir",cr,lf,"$"datos ENDS; Segmento de pilapila SEGMENT STACK 'STACK' ; poner STACK es obligatorioDB 128 dup ('pila') ; reservados 512 bytespila ENDS; Segmento de códigocodigo SEGMENTejemplo PROC FAR

ASSUME CS:codigo, DS:datos, SS:pila; poner dirección de retorno al DOS en la pila:PUSH DS ; segmento del PSPXOR AX,AX ; AX = 0PUSH AX ; desplazamiento 0 al PSP; direccionar segmento de datos con DSMOV AX,datos ; AX = dirección del segmento de datosMOV DS,AX ; inicializar DS; escribir textoLEA DX,texto ; DS:DX = dirección del textoMOV AH,9INT 21h; volver al DOSRET ; en realidad, RETF (PROC FAR)ejemplo ENDPcodigo ENDS ; fin del códigoEND ejemplo ; punto de arranque del programa

Page 18: Tarea de efrain ruiz fernandez

EVOLUCION DE WINDOWS:

1982–1985: Nace Windows 1.0Microsoft anunció su Nuevo proyecto en 1983, aunque les tomó dos años lanzar su versión final. Primero llevó el nombre Interface Manager, pero poco a poco la otra propuesta, Windows se quedó como el nombre definitivo. Este surgió durante el desarrollo de “cajas” o “ventanas” de navegación fundamentales en la plataforma.El 20 de Noviembre los usuarios recibieron un sistema que funcionaba, ya no con códigos si no con un mouse que cruzaba la pantalla. “Es un software único diseñado para el usuario serio de PC” dijo Bill Gates a la prensa. Aparecieron por primera vez herramientas que son ya de todos los días: menús en cascada, barras de navegación, íconos y cajas de diálogo. Fue posible por primera vez también abrir varios programas sin tener que cerrar el anterior. Los programas que incluyó Windows 1.0 fueron Paint, Windows Writer, Notepad, Calculator, un calendario, un reloj y un juego: Reversi.Un año después, Microsoft lanzó una actualización de Windows 1.0 y le agregó un tres: Windows 1.03. El cambio más importante fue el incremento en el espacio del disco duro, de 1Mb a 2.2 Mb.

Page 19: Tarea de efrain ruiz fernandez

Windows 2.03En 1987 Microsoft present su Windows 2.0 a

tiempo para navidad: el 9 de Diciembre. El soporte de gráficos mejorado permitió encimar ventanas, controlar la imagen de pantalla y el uso de atajos con el tablero. También hizo su aparición estelar el Panel de Control.

Esta fue la primera vez que desarrolladores externos crearon los primeros programas para el sistema de Microsoft. Windows corría con el procesador 286 de Intel. Poco después este último actualizó a 386 y Windows lo siguió con su Windows/386 que aprovechó las mejoras en usabilidad y velocidad.

Un año más tarde Microsoft se convirtió en la compañía número uno en ventas en materia de software.

Page 20: Tarea de efrain ruiz fernandez

Windows 3.0Llegó el primero año de la década de los 90, seguido dos años después por

Windows 3.1. Juntos alcanzaron ventas por 10 millones de copias, lo cual lo convirtió en el sistema Windows más popular de todos los tiempos (hasta nuestros días).

Los gráficos del sistema tenían la novedad de 16 colores, los íconos mejoraron y aparecieron por primera vez las herramientas Program Manager, File Manager y Print Manager. Para instalarlo era necesario el uso de diskettes (floppy disks) acompañados de complicados y pesados instructivos. Más programas aparecieron en el panorama para incluir en Windows 3.0, entre ellos más juegos. Solitario llegó a miles de hogares por primera vez, al igual que Minesweeper y Hearts.

En 1993 apareció Windows NT 3.1 con un sistema operativo de 32 bits. El mismo año apareció 3.11 con el agregado de grupos de trabajo y soporte para redes. Por primera vez, las computadoras con Windows podían conectarse entre sí.

En 1995, la última versión de Windows 3.0, 3.51 WorkStation salió a la luz. Esta contaba con mayor soporte de gráficos, y aplicaciones para desarrollo de software, análisis financiero, investigación científica y tareas empresariales.

Page 21: Tarea de efrain ruiz fernandez

Windows 95

En agosto 24, Microsoft lanzó su Windows 95, el software que rompió todos los records hasta el momento con siete millones de copias vendidas en tan solo cinco semanas. La campaña publicitaria anunciaba “It’s here” (está aquí) y fue acompañada del hit de los Rolling Stones “Start me Up” para anunciar su nuevo botón “Start.”

La mitad de la década fue la era de los fax/módems, el correo electrónico, el descubrimiento de Internet, los nuevos juegos multimedia y el génesis del software educativo. Para acoplarse a los nuevos tiempos, la nueva versión de Windows (nombrada Chicago durante su desarrollo) contaba con soporte para Internet por marcación, capacidades multimedia, redes integradas y más herramientas para la computación móvil. Al momento de su lanzamiento (un 24 de agosto como hoy), el 80% de las computadoras del mundo corrían con MS-DOS o con versiones previas de Windows. 

La versión 95 se convirtió en la sustituta de todos ellos. Para su funcionamiento requería una PC con procesador 386XD o más alto (486 de preferencia) y al menos 4 MB de RAM. La instalación con diskettes dejó de ser forzosa gracias al moderno CD ROM. Además Windows 95 era el sistema operativo más inclusivo; disponible en 12 idiomas distintos. Un año más tarde, la versión Windows NT 4.0 brindó soporte mejorado y más seguro a Internet y a intranets corporativas.

Page 22: Tarea de efrain ruiz fernandez

Windows 98El 25 de Junio de 1998 apareció la nueva versión de Windows, diseñada

especialmente para consumidores. Los cambios principales incluyeron lectura de discos DVS y USBs además de la Quick Launch Bar para abrir programas con mayor facilidad. Windows 98 fue el último sistema operativo basado en MS-DOS. Windows 2000 

El nuevo milenio trajo consigo al Professional de Windows, diseñado para sustituir a Windows 95, 98 y NT Workstation 4.0 para uso individual en casa y en negocios. Facilitó la instalación de hardware con soporte añadido a una variedad amplia de hardware Plug and Play incluyendo productos inalámbricos, dispositivos USB, IEEE 1394 e infrarrojos. Windows Me 2000

Apareció poco después. Estaba diseñado para el uso en casa e incluía la novedosa configuración System Restore que permitía devolver al software a su estado previo a la aparición de un problema. También incluyó Windows Media Player 7 para reproducir distintos formatos. Windows XP

El 25 de octubre de 2001, Microsoft lanzó una nueva actualización: XP. Sus mayores atractivos eran su nuevo aspecto y una nuevo centro de atención y ayuda. Estaba disponible en 25 idiomas. XP permaneció durante un tiempo prolongado como el software principal de Microsoft. Representó también un cambio en el usuario, que estaba más consciente del problema el malware. XP era más seguro y educativo a ese respecto. 

Poco tiempo después apareció una versión mejorada: Windows XP Professional.Curiosidad: El comercial fue musicalizado por el hit de Madonna, Ray of Light. El escritorio incluyó como imagen por default una fotografía que ahora es la más vista de la historia.

Page 23: Tarea de efrain ruiz fernandez

Windows VistaCinco años después, llego Windows Vista. El sistema

operativo de 2006 tenía el sistema de seguridad más fuerte hasta el momento en la historia de la compañía. User Account Control permitía prevenir la instalación de malware y Ultimate Bit Locker protegía la información de los usuarios aún más, debido a la popularidad de las lap tops y por ende el intercambio de información. Otro gran cambio vino de la mano de Windows Media Player, desde el cual se pueden reproducir todo tipo de formatos, ver televisión y editar video.Windows 7 2009-2011

Windows 7 llegó en octubre de 2009 y sigue vigente en muchos equipos (en 2010 vendía siete copias al segundo) y se convirtió en su momento en el sistema operativo con mayor rapidez de venta en la historia.

*Actualización 4.04.13'

Page 24: Tarea de efrain ruiz fernandez

Windows 8Lanzado en Octubre de 2012. Da clic aquí 

para leer nuestra nutrida reseña.También lanzó su nuevo SO para móviles

Windows Phone 8.Windows 8.1

La actualización de Windows 8 tiene el "nombre código" de Windows Blue, pero todo parece indicar que se llamará Windows 8.1. Aunque aún no se sabe a ciencia cierta qué comprenderán las novedades del sistema, los ejecutivos han aclarado que no se trata de un nuevo SO, pues quieren que "haya Windows 8 para rato." El próximo mes de Junio, Microsoft dará un primer vistazo a 8.1.