You are on page 1of 27

LENGUAJE ENSAMBLADOR

Definicin Y Estructura:

Lenguaje ensamblador es la representacin simblica de la codificacin binaria del Computador (lenguaje mquina). Los lenguajes mquina son bastante similares. Una herramienta llamada ensamblador (assembler) traduce el lenguaje ensamblador a instrucciones binarias.

Un ensamblador lee un nico archivo fuente en lenguaje ensamblador, y produce un archivo objeto que contiene instrucciones mquina e informacin de mantenimiento que ayuda a combinar varios archivos objeto en un programa.

Un mdulo puede tener referencias a subrutinas y datos definidos en otros mdulos y Bibliotecas. El cdigo de un mdulo no puede ejecutarse cuando contiene referencias. Sin resolver a rtulos de otros archivos objeto o bibliotecas. Otra herramienta llamada enlazador (linker) combina archivos objeto y de biblioteca en un archivo ejecutable.

El lenguaje ensamblador juega dos papeles:

Es el lenguaje de salida de los compiladores. Un compilador traduce un programa escrito en lenguaje de alto nivel (lenguaje fuente, C) en un programa equivalente en Lenguaje mquina o ensamblador (lenguaje objeto).

Es un lenguaje ms con el que escribir programas en los que la velocidad o tamao son crticos, o para explotar las caractersticas hardware que no tienen anlogos en lenguajes de alto nivel. Estructura:

Sintaxis del ensamblador Cada lnea puede contener, como mximo, una sentencia.

Los comentarios van al final de la sentencia, precedidos por #. El ensamblador los ignora.

Los nombres seguidos por : son rtulos (etiquetas). Nombran la siguiente posicin de memoria, y van al principio de la lnea.

Los operando pueden ser:

Un registro: $4 o $a0, que puede ir entre parntesis.

Un identificador: Caracteres alfanumricos, _ y . , sin comenzar con un nmero. Una cadena alfanumrica encerrada entre dobles comillas ( ), donde puede haber Caracteres especiales segn convenio C (nueva lnea=\n, tabulador=\t, comillas=\...).

Un valor numrico, en base 10. Si van precedidos de 0x indican valores hexadecimal Ejemplo:

.data Item: .word 1 .text .globl main # Debe ser global Main: lw $t0, tem

Compilador, ensamblador, linker

Un programa puede estar escrito en cdigos distintos:

M.C Cdigo en lenguaje de alto nivel (fuente)

M.S Cdigo ensamblador. Puede jugar dos papeles, dependiendo del tipo de compilador:

Es el lenguaje de salida de los compiladores (cdigo ensamblador sin rtulos).

Lenguaje con el que escribir programas (cdigo ensamblador con rtulos). Es an importante para escribir programas en los que la velocidad o tamao son crticos, o para explotar caractersticas hardware que no tienen anlogos en lenguajes de alto nivel.

M.OBJ Cdigo mquina (objeto). Contiene instrucciones mquina (binarias) e informacin de mantenimiento que ayuda a combinar varios archivos objeto en un programa.

M.EXE Cdigo ejecutable.

Compilador

Traduce un cdigo en lenguaje de alto nivel en uno equivalente en lenguaje ensamblador (Puede tambin producir lenguaje mquina directamente con la ayuda de un ensamblador integrado).

Crean saltos y rtulos cuando no aparecen en el lenguaje de programacin.

Ensamblador

Programa que traduce de lenguaje ensamblador a lenguaje mquina. Lee un nico archivo fuente en ensamblador y produce un archivo objeto Un mdulo puede contener referencias a subrutinas y datos definidos en otros mdulos y bibliotecas. El cdigo de un mdulo no puede ejecutarse si contiene referencias sin resolver a rtulos de otros archivos objeto o bibliotecas.

Enlazador

Combina una coleccin de archivos objeto y de biblioteca en un archivo ejecutable, que el computador ejecuta

Ensamblador MIPS Compilador,ensamblador, Linker

Unidades Disponibles En El Sistema Operativo, Procedimientos De Uso

Unidades De Entrada y Salida: Para que una computadora nos sea til es necesario que el procesador se comunique al exterior por medio de interfaces que permiten la entrada y la salida de datos del procesador y la memoria. Haciendo uso de estas comunicaciones es posible introducir datos para su procesamiento y la posterior visualizacin de los datos ya procesados. Algunas de las unidades de entrada ms comunes son teclados, lectoras de tarjetas (ya en desuso), mouse, etc. Las unidades de salida ms comunes son las terminales de video y las impresoras.

Unidades de Memoria Auxiliar: Como la memoria central de una computadora es costosa y, considerando las aplicaciones actuales, muy limitada, surge entonces la necesidad de crear sistemas de almacenamiento de informacin prcticos y econmicos. Adems, la memoria central pierde su contenido al apagarse la mquina, por lo que no es conveniente utilizarla para almacenamiento permanente de datos. Estos y otros inconvenientes dan lugar a la creacin de unidades perifricas de memoria que reciben el nombre de memoria auxiliar o secundaria. De estas unidades perifricas las ms comunes son las cintas y los discos magnticos. La informacin almacenada en estos medios magnticos recibe el nombre de archivo. Un archivo est formado por un nmero variable de registros, generalmente de tamao fijo; los registros pueden contener datos o programas. Unidades de informacin: Para que la PC pueda procesar la informacin es necesario que sta se encuentre en celdas especiales llamadas registros. Los registros son conjuntos de 8 o 16 flip-flops (basculadores o biestables). Un flipflop es un dispositivo capaz de almacenar dos niveles de voltaje, uno bajo, regularmente de 0.5 volts y otro alto comnmente de 5 volts. El nivel bajo de energa en el flip-flop se interpreta como apagado o 0, y el nivel alto como prendido o 1. A estos estados se les conoce usualmente como bits, que son la unidad ms pequea de informacin en una computadora. A un grupo de 16 bits se le conoce como palabra, una palabra puede ser dividida en grupos de 8 bits llamados bytes, y a los grupos de 4 bits les llamamos nibbles. Sistemas numricos: El sistema numrico que utilizamos a diario es el sistema decimal, pero este sistema no es conveniente para las mquinas debido a que la informacin se maneja codificada en forma de bits prendidos o apagados; esta forma de codificacin nos lleva a la necesidad de conocer el clculo posicional que nos permita expresar un nmero en cualquier base que lo necesitemos. Es posible representar un nmero determinado en cualquier base mediante la siguiente formula: Donde n es la posicin del dgito empezando de derecha a izquierda y numerando a partir de cero. D es el dgito sobre el cual operamos y B es la base numrica empleada.

Convertir nmeros binarios a decimales: Trabajando en el lenguaje ensamblador nos encontramos con la necesidad de convertir nmeros del sistema binario, que es el empleado por las computadoras, al sistema decimal utilizado por las personas. El sistema binario est basado en nicamente dos condiciones o estados, ya sea encendido (1) o apagado (0), por lo tanto su base es dos. Para la conversin podemos utilizar la frmula de valor posicional: Por ejemplo, si tenemos el numero binario 10011, tomamos de derecha a izquierda cada dgito y lo multiplicamos por la base elevada a la nueva posicin que ocupan: Binario: 1 1 0 0 1 Decimal:1*2^0+1*2^1+0*2^2+0*2^3+1*2^4 = 1 + 2 + 0 + 0 + 16 = 19 decimal.

El carcter es utilizado en computacin como smbolo de potenciacin y el carcter se usa para representar la multiplicacin.

Convertir nmeros decimales a binarios: Existen varios mtodos de conversin de nmeros decimales a binarios; aqu solo se analizar uno. Naturalmente es mucho ms fcil una conversin con una calculadora cientfica, pero no siempre se cuenta con ella, as que es conveniente conocer por lo menos una forma manual para hacerlo. El mtodo que se explicar utiliza la divisin sucesiva entre dos, guardando el residuo como dgito binario y el resultado como la siguiente cantidad a dividir. Tomemos como ejemplo el nmero 43 decimales. 43/2 = 21 y su residuo es 1 21/2 = 10 y su residuo es 1 10/2 = 5 y su residuo es 0 5/2 = 2 y su residuo es 1 2/2 = 1 y su residuo es 0 1/2 = 0 y su residuo es 1

Armando el nmero de abajo hacia arriba tenemos que el resultado en binario es 101011 Sistema hexadecimal: En la base hexadecimal tenemos 16 dgitos que van del 0 al 9 y de la letra A hasta la F (estas letras representan los nmeros del 10 al 15). Por lo tanto, contamos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. La conversin entre numeracin binaria y hexadecimal es sencilla. Lo primero que se hace para una conversin de un nmero binario a hexadecimal es dividirlo en grupos de 4 bits, empezando de derecha a izquierda. En caso de que el ltimo grupo (el que quede ms a la izquierda) sea menor de 4 bits se rellenan los faltantes con ceros. Tomando como ejemplo el nmero binario 101011 lo dividimos en grupos de 4 bits y nos queda: 10; 1011 Rellenando con ceros el ltimo grupo (el de la izquierda): 0010; 1011 Despus tomamos cada grupo como un nmero independiente y consideramos su valor en decimal: 0010 = 2; 1011 = 11 Pero como no podemos representar este nmero hexadecimal como 211 porque sera un error, tenemos que sustituir todos los valores mayores a 9 por su respectiva representacin en hexadecimal, con lo que obtenemos: 2BH (Donde la H representa la base hexadecimal) Para convertir un nmero de hexadecimal a binario solo es necesario invertir estos pasos: se toma el primer dgito hexadecimal y se convierte a binario, y luego el segundo, y as sucesivamente hasta completar el nmero. Cdigo ASCII: ASCII generalmente se pronuncia "aski", es un acrnimo de American Standard Code for Information Interchange. Este cdigo asigna a las letras del alfabeto, a los dgitos decimales del 0 al 9 y a varios smbolos adicionales un nmero binario de 7 bits (ponindose el BIT 8 en su estado de apagado o 0). De esta forma cada letra, dgito o carcter especial ocupa un

byte en la memoria de la computadora. Podemos observar que este mtodo de representacin de datos es muy ineficiente en el aspecto numrico, ya que en formato binario nos basta un solo byte para representar nmeros de 0 a 255, en cambio con el cdigo ASCII un byte puede representar nicamente un dgito. Debido a esta ineficiencia, el cdigo ASCII es principalmente utilizado en la memoria para representar texto. Mtodo BCD: BCD es un acrnimo de Binary Coded Decimal. En esta notacin se utilizan grupos de 4 bits para representar cada dgito decimal del 0 al 9. Con este mtodo podemos representar dos dgitos por byte de informacin. An cuando este mtodo es mucho ms prctico para representacin de nmeros en la memoria en comparacin al ASCII, todava se queda por debajo del binario, ya que con un byte en el mtodo BCD solo podemos representar dgitos del 0 al 99, en cambio, en formato binario podemos representar todos los dgitos desde 0 hasta 255. Este formato es utilizado principalmente para representar nmeros muy grandes en aplicaciones mercantiles ya que facilita las operaciones con los mismos evitando errores de redondeo. Representacin de punto flotante: Esta representacin est basada en la notacin cientfica, esto es, representar un nmero en dos partes: su mantisa y su exponente. Poniendo como ejemplo el nmero 1234000, podemos representarlo como 1.123*10^6, en esta ltima notacin el exponente nos indica el nmero de espacios que hay que mover el espacio hacia la derecha para obtener el resultado original. En caso de que el exponente fuera negativo nos estara indicando el nmero de espacios que hay que recorrer el punto decimal hacia la izquierda para obtener el original. Proceso de creacin de un programa: Para la creacin de un programa es necesario seguir cinco pasos: Diseo del algoritmo, codificacin del mismo, su traduccin a lenguaje mquina, la prueba del programa y la depuracin. En la etapa de diseo se plantea el problema a resolver y se propone la mejor solucin, creando diagramas esquemticos utilizados para el mejor

planteamiento de la solucin. La codificacin del programa consiste en escribir el programa en algn lenguaje de programacin; en este caso especfico en ensamblador, tomando como base la solucin propuesta en el paso anterior. La

traduccin al lenguaje mquina es la creacin del programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que pueda ser interpretado por el procesador. La prueba del programa consiste en verificar ue el programa funcione sin errores, o sea, que haga lo que tiene que hacer. La ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de prueba. La correccin de una falla normalmente requiere la repeticin de los pasos comenzando desde el primero o el segundo. Para crear un programa en ensamblador existen dos opciones, la primera es utilizar el MASM (Macro Assembler, de Microsoft), y la segunda es utilizar el debugger, en esta primera seccin utilizaremos este ltimo ya que se encuentra en cualquier PC con el sistema operativo MS-DOS, lo cual lo pone al alcance de cualquier usuario que tenga acceso a una mquina con estas caractersticas. Debug solo puede crear archivos con extensin .COM, y por las caractersticas de este tipo de programas no pueden ser mayores de 64 kb, adems deben comenzar en el desplazamiento, offset, o direccin de memoria 0100H dentro del segmento especfico. Registros de la UCP: La UCP tiene 14 registros internos, cada uno de 16 bits. Los primeros cuatro, AX, BX, CX, y DX son registros de uso general y tambin pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable tambin a los registros BX, CX y DX. Los registros son conocidos por sus nombres especficos: AX Acumulador BX Registro base CX Registro contador DX Registro de datos DS Registro del segmento de datos ES Registro del segmento extra

SS Registro del segmento de pila CS Registro del segmento de cdigo BP Registro de apuntadores base SI Registro ndice fuente DI Registro ndice destino SP Registro del apuntador de la pila IP Registro de apuntador de siguiente instruccin F Registro de banderas

Es posible visualizar los valores de los registros internos de la UCP utilizando el programa Debug. Para empezar a trabajar con Debug digite en el prompt de la computadora: C:\> Debug [Enter] En la siguiente lnea aparecer un guion, ste es el indicador del Debug, en este momento se pueden introducir las instrucciones del Debug. Utilizando el comando: - r [Enter] Se desplegaran todos los contenidos de los registros internos de la UCP; una forma alternativa de mostrarlos es usar el comando "r" utilizando como parmetro el nombre del registro cuyo valor se quiera visualizar. Por ejemplo: - rbx Esta instruccin desplegar nicamente el contenido del registro BX y cambia el indicador del Debug de " - " a: " Estando as el prompt es posible cambiar el valor del registro que se visualiz tecleando el nuevo valor y a continuacin [Enter], o se puede dejar el valor anterior presionando [Enter] sin teclear ningn valor.

Es posible cambiar el valor del registro de banderas, as como utilizarlo como estructura de control en nuestros programas como se ver ms adelante. Cada bit del registro tiene un nombre y significado especial, la lista dada a continuacin describe el valor de cada bit, tanto apagado como prendido y su relacin con las operaciones del procesador: Overflow NV = no hay desbordamiento; OV = s lo hay Direction UP = hacia adelante; DN = hacia atrs; Interrupts DI = desactivadas; EI = activadas Sign PL = positivo; NG = negativo Zero NZ = no es cero; ZR = s lo es Auxiliary Carry NA = no hay acarreo auxiliar; AC = hay acarreo auxiliar Parity

PO = paridad non; PE = paridad par; Carry NC = no hay acarreo; CY = S lo hay Conjunto De Instrucciones Del CPU: La mayora de las CPU tienen ms o menos los mismos grupos de instrucciones, aunque no necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden realizar varan de una CPU a otra. Una CPU particular puede tener instrucciones que no tengan otro y viceversa. Los primeros microprocesadores de 8 bits no tenan operaciones para multiplicar o dividir nmeros, por ejemplo, y haba que hacer subrutinas para realizar esas operaciones. Otras CPU puede que no tengan operaciones de punto flotante y habra que hacer o conseguir bibliotecas que realicen esas operaciones.

Las instrucciones de la CPU pueden agruparse, de acuerdo a su funcionalidad, en:

Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura de la CPU, en los sistemas muy viejos tambin de 12, 18, 24, 36 y 48 bits)

Estas son operaciones realizadas por la Unidad aritmtico lgica de la CPU

Operaciones aritmticas. Como suma, resta, multiplicacin, divisin, mdulo, cambio de signo

Operaciones booleanas. Operaciones lgicas bit a bit como AND, OR, XOR, NOT

Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda, a travs del bit del acarreo o sin l)

Comparaciones

Operaciones de mover datos: Entre los registros y la memoria: Aunque la instruccin se llama "mover", en la CPU, "mover datos" significa en realidad copiar datos, desde un origen a un destino, sin que el dato desaparezca del origen. Se pueden mover valores:

desde un registro a otro desde un registro a un lugar de la memoria desde un lugar de la memoria a un registro desde un lugar a otro de la memoria un valor inmediato a un registro un valor inmediato a un lugar de memoria Operaciones de stack:

PUSH (escribe datos hacia el tope del stack) POP (lee datos desde el tope del stack) Operaciones de entrada/salida: Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria, desde y hacia un puerto

INPUT Lectura desde un puerto de entrada OUTPUT Escritura hacia un puerto de salida

Operaciones para el control del flujo del programa:


Llamadas y retornos de subrutinas Llamadas y retornos de interrupciones Saltos condicionales de acuerdo al resultado de la comparaciones Saltos incondicionales

Operaciones con nmeros reales:

El estndar para las operaciones con nmeros reales en las CPU est definido por el IEEE 754.

Una CPU puede tener operaciones de punto flotante con nmeros reales mediante el coprocesador numrico (si lo hay), como las siguientes:

Operaciones aritmticas. Suma, resta, multiplicacin, divisin, cambio de signo, valor absoluto, parte entera Operaciones trascendentales Operaciones trigonomtricas. Seno, coseno, tangente, arcotangente Operaciones con logaritmos, potencias y races

Otras El lenguaje ensamblador tiene mnemnicos para cada una de las instrucciones

de la CPU en adicin a otros mnemnicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras sentencias en tiempo de ensamblado). Definiciones Y Sintaxis De Direccionamiento: Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del ingls Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificacin que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos. La mayora de las CPU tienen ms o menos los mismos grupos de instrucciones, aunque no necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden realizar varan de una CPU a otra. Una CPU particular puede tener instrucciones que no tengan otro y viceversa. Los primeros microprocesadores de 8 bits no tenan operaciones para multiplicar o dividir nmeros, por ejemplo, y haba que hacer subrutinas para realizar esas operaciones. Otras CPU puede que no tengan operaciones de punto flotante y habra que hacer o conseguir bibliotecas que realicen esas operaciones. Las instrucciones de la CPU pueden agruparse, de acuerdo a su funcionalidad, en:

Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura de la CPU, en los sistemas muy viejos tambin de 12, 18, 24, 36 y 48 bits) Estas son operaciones realizadas por la Unidad aritmtico lgica de la CPU

Operaciones aritmticas. Como suma, resta, multiplicacin, divisin, mdulo, cambio de signo Operaciones booleanas. Operaciones lgicas bit a bit como AND, OR, XOR, NOT Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda, a travs del bit del acarreo o sin l) Comparaciones

Operaciones de mover datos: Entre los registros y la memoria Aunque la instruccin se llama "mover", en la CPU, "mover datos" significa en realidad copiar datos, desde un origen a un destino, sin que el dato desaparezca del origen. Se pueden mover valores:

desde un registro a otro desde un registro a un lugar de la memoria desde un lugar de la memoria a un registro desde un lugar a otro de la memoria un valor inmediato a un registro un valor inmediato a un lugar de memoria

Operaciones de stack:

PUSH (escribe datos hacia el tope del stack) POP (lee datos desde el tope del stack)

Operaciones de entrada/salida: Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria, desde y hacia un puerto INPUT Lectura desde un puerto de entrada OUTPUT Escritura hacia un puerto de salida Operaciones para el control del flujo del programa:

Llamadas y retornos de subrutinas Llamadas y retornos de interrupciones Saltos condicionales de acuerdo al resultado de la comparaciones Saltos incondicionales

Operaciones con nmeros reales: El estndar para las operaciones con nmeros reales en las CPU est definido por el IEEE 754. Una CPU puede tener operaciones de punto flotante con nmeros reales mediante el coprocesador numrico (si lo hay), como las siguientes:

Operaciones aritmticas. Suma, resta, multiplicacin, divisin, cambio de signo, valor absoluto, parte entera Operaciones trascendentales Operaciones trigonomtricas. Seno, coseno, tangente, arcotangente Operaciones con logaritmos, potencias y races Otras

El lenguaje ensamblador tiene mnemnicos para cada una de las instrucciones de la CPU en adicin a otros mnemnicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras sentencias en tiempo de ensamblado).

El ensamblador incrementa el n de instrucciones disponibles a los programadores en lenguaje ensamblador y a los compiladores, mediante las pseudoinstrucciones. Son instrucciones del lenguaje ensamblador que no necesitan ser implementadas en hardware.

El ensamblador MIPS maneja pseudoinstrucciones reservando $1 para su uso como registro temporal.

blt = pseudoinstruccin saltar sobre < que Implementar blt en hardware lo complicara, pues aumentara la duracin del ciclo de reloj, o bien esta instruccin tendra ciclos de reloj extra por instruccin (por simplicidad, queremos que las instrucciones se ejecuten en un n de ciclos de reloj iguales). Dos instrucciones ms rpidas seran ms tiles.

Modos de direccionamiento: MIPS es una arquitectura de carga/almacenamiento Slo las instrucciones de carga y almacenamiento acceden a memoria, segn los clculos efectuados sobre valores en los registros. Alineacin: una cantidad est alineada si su direccin de memoria es un mltiplo de su tamao en bytes Ejemplo: Una palabra de 32 bits debe almacenarse en direcciones mltiplo de 4. Casi todas las instrucciones de carga y almacenamiento operan slo sobre datos alineados. Instrucciones para alinear datos no alineados: lwl, lwr, swl y swr.

SISTEMA BSICO DE ENTRADA Y SALIDA EL BIOS

El Sistema Bsico de Entrada/Salida o BIOS (Basic Input-Output System) es un cdigo de software que localiza y reconoce todos los dispositivos necesarios para cargar el sistema operativo en la RAM; es un software muy bsico instalado en la placa base que permite que esta cumpla su

cometido. Proporciona la comunicacin de bajo nivel, el funcionamiento y configuracin del hardware del sistema que, como mnimo, maneja el teclado y proporciona salida bsica (emitiendo pitidos normalizados por el altavoz de la computadora si se producen fallos) durante el arranque. El BIOS usualmente est escrito en lenguaje ensamblador.

Organizacin Y Uso De Distintas Funciones:

La BIOS es una parte esencial del hardware que es totalmente configurable y es donde se controlan los procesos del flujo de informacin en el bus del ordenador, entre el sistema operativo y los dems perifricos. Tambin incluye la configuracin de aspectos importantsimos de la mquina.

Firmware: Es un sistema que puede contener diversos chips con firmware BIOS. Adems del BIOS de arranque situado en el disco duro y placa base, tambin es un bloque de instrucciones de programa para propsitos

especficos, grabado en una memoria de tipo no voltil (ROM, EEPROM, flash,...), que establece la lgica de ms bajo nivel que controla los circuitos electrnicos de un dispositivo de cualquier tipo. Al estar integrado en la electrnica del dispositivo es en parte hardware, pero tambin es software, ya que proporciona lgica y se dispone en algn tipo de lenguaje de programacin. Funcionalmente, el firmware es el intermediario entre las

rdenes externas que reciben el dispositivo y su electrnica, ya que es el encargado de controlar a sta ltima para ejecutar correctamente dichas rdenes externas. El sistema BIOS de un PC estndar desempea en realidad cuatro funciones independientes:

1. Proceso de carga inicial del software

En esos tiempos los ordenadores tenan una consola o panel frontal lleno de lucecitas e interruptores con los que manualmente se podan realizar determinadas operaciones; bsicamente se reducan a poder reiniciar los registros, examinar el contenido de cualquier posicin de memoria, y colocar en ella cualquier dato o instruccin en binario. De esta forma se cargaba manualmente un pequesimo trozo de cdigo, el "bootstrap", que una vez arrancado era capaz de dirigirse a un dispositivo. Por ejemplo, un lector de cinta perforada, en la que se iniciaba la carga de un programa ms avanzado; el cargador binario ("Binary loader") que ya era capaz de aceptar algunas rdenes de consola y cargar a su vez cualquier otro software.

2. Programa de inventario y comprobacin del hardware

En las que quizs no existe ningn dispositivo disponible para mostrar mensajes de error, cuando se ha cargado y ejecutado la BIOS incluida en el adaptador de video, el POST est en condiciones de mostrar los posibles errores de diagnstico mediante mensajes en la pantalla. Estos mensajes son numricos decimales conocidos como cdigos de diagnstico, que se componen de dos partes; el cdigo de test ("Test code") y el cdigo de error ("Fault code"). El primero es un nmero indicativo del test en ejecucin; el segundo es un nmero de dos dgitos que indica el tipo de error detectado por el test en cuestin. El cdigo 00 indica ausencia de error (el test

correspondiente pas Ok). Por ejemplo, un cdigo de diagnstico 342 en un equipo IBM, indica error en el cable (cdigo de error 42) durante la comprobacin del teclado (cdigo de test 03).

3. Inicializacin de los dispositivos hardware que lo requieren; carga de cierto software bsico, e inicio del Sistema Operativo

La BIOS inicia un recorrido en busca un dispositivo donde encontrar un programa que pueda continuar el proceso con la carga del Sistema Operativo.

Este recorrido se denomina secuencia de carga ("Boot sequence") y su orden puede ser establecido mediante un programa auxiliar (set-up de la BIOS) que es accesible mediante la pulsacin de ciertas teclas durante los instantes iniciales de carga. Una vez fijada, la secuencia de carga es almacenada en la memoria de datos de la BIOS, de forma que puede ser recordada y utilizada la prxima vez que se reinicia el sistema.

En los sistemas primitivos, la secuencia de carga era fija, empezando en el disquete (A:) y siguiendo en la primera unidad de disco (C:). Esta sigue siendo an la secuencia normal, pero las BIOS actuales pueden alterar este orden e incluso dispositivos alternativos como CD-ROM o LAN, como puntos de inicio para la carga del Sistema. En estos apuntes denominamos unidad o disco maestro a aquel que puede ser accedido por la BIOS durante su secuencia de carga. El set-up de la BIOS establece el orden en que sern consultados los dispositivos disponibles.

4. Soporte para ciertos dispositivos hardware del sistema

Servicios bsicos del hardware (dispositivos de Entrada/Salida), entre los que se encuentran el teclado, la pantalla, los puertos serie y los controladores de disco. Estos trozos de cdigo son accedidos a travs de las direcciones contenidas en la tabla de vectores de interrupcin. La divisin de las tareas bsicas del ordenador en dos partes: una que corresponde al Sistema Operativo, y otra que corresponde a la BIOS, es atribuida a Gary Kildall, personaje al que ya hemos hecho referencia. Cuando deseaba facilitar la implementacin de sus Sistema Operativo CP/M en las distintas mquinas que comenzaban a aparecer entre los aficionados a la electrnica digital, pens que dividirlo en dos partes ayudara a sus propsitos. La parte especfica de cada mquina, que trataba de los detalles de E/S, sera encomendada a un mdulo denominado precisamente por esto BIOS. Intel lider una iniciativa conocida bajo las siglas IBI ("Intel Boot Initiative"), destinada a mejorar las capacidades y limitaciones de la BIOS tradicional. Posteriormente, en 2002, lanz una extensin de las ideas anteriores denominada EFI ("Extensible Firmware Interface") y destinada las mquinas de arquitectura IA-32 e IA-64 [2] . Se trata

de un nuevo estndar de BIOS que, al igual que la original, tiene la doble misin de iniciar la carga del sistema y servir de interfaz de bajo nivel con los dispositivos hardware y su firmware. La figura adjunta (original de Intel) muestra esta doble funcionalidad.

Procedimiento De Invocacin Parmetros De Entrada:

Para acceder al programa de configuracin del BIOS, generalmente llamado CMOS Setup, tendremos que hacerlo pulsando un botn durante el inicio del arranque del ordenador. Generalmente suele ser la teclaSupr aunque esto vara segn los tipos de placa y en porttiles. Otras teclas empleadas son: F1, Esc, o incluso una combinacin, para saberlo con exactitud bastar con una consulta al manual de su placa base o bien prestando atencin a la primera pantalla del arranque, ya que suele figurar en la parte inferior un mensaje similar a este:

''Press DEL to enter Setup''

El aspecto general del BIOS depender de qu tipo en concreto tenga en su placa, las ms comunes son:Award, Phoenix (se han unido) y AMI. Bastante similares pero no iguales. El programa del BIOS suele estar en un perfecto ingls y adems aparecen trminos que no son realmente sencillos, si no sabe lo que est tocando consulte el manual o a un especialista, de lo contrario se encontrar con problemas.

Aunque tengan nombres diferentes, existen algunos apartados comunes a todos los tipos de BIOS.

Una clasificacin puede ser:

1 Configuracin bsica de parmetros - Standard CMOS Setup.

2 Opciones de BIOS - BIOS Features, Advanced Setup.

3 Configuracin avanzada y chipset - Chipset features.

4 Password, perifricos, discos duros, etc.

5 Otras utilidades.

Bajo el 1er punto se puede encontrar la configuracin de la fecha y hora, los discos duros conectados (IDE) y la memoria detectada, entre otras cosas.

En el punto 2 existen muchos parmetros modificables, suelen aparecer: cach, secuencia de arranque (Boot sequence), intercambio de disqueteras, etc.

En el punto 3 podemos encontrar parmetros relativos a las caractersticas del chipset, memoria RAM, buses y controladores.

Bajo el punto 4 hemos reunido una serie de opciones que suelen estar distribuidas, gracias a ellas podemos insertar una contrasea de acceso al programa del BIOS, modificar parmetros relativos a los perifricos integrados, control de la administracin de energa, control de la frecuencia y el voltaje, etc.

Y finalmente en el punto 5 reunimos las opciones que nos permiten guardar los cambios efectuados, descartarlos, cargar valores por defecto, etc.

Parmetros De Salida, Intrusiones De Ejecucin:

Una vez que el BIOS termina de chequear las condiciones de funcionamiento de los diferentes dispositivos del ordenador, si no encuentra nada anormal contina el proceso de booting (secuencia de instrucciones de inicializacin o de arranque del ordenador), cuya informacin se encuentra grabada en una pequea memoria ROM denominada CMOS (Complementary Metal-Oxide Semiconductor Semiconductor de xido-metal complementario).

Para comenzar el proceso de inicializacin, el BIOS localiza primeramente la informacin de configuracin del CMOS, que contiene, entre otros datos, la fecha y la hora actualizada, configuracin de los puertos, parmetros del disco duro y la secuencia de inicializacin o arranque. Esta ltima es una de las rutinas ms importantes que contiene el programa del CMOS, porque le indica al BIOS el orden en que debe comenzar a examinar los discos o soportes que guardan la informacin para encontrar en cul de ellos se encuentra alojado el sistema operativo o programa principal, sin el cual el ordenador no podra ejecutar ninguna funcin. Entre los sistemas operativos ms comnmente utilizados hoy en da en los ordenadores personales o PC, se encuentra, en primer lugar, el Windows (de Microsoft), siguindole el Linux (de cdigo abierto) y el Mac-OS (Macintosh Operating System - sistema operativo Macintosh), que emplean los ordenadores Apple.

En los ordenadores personales actuales, el BIOS est programado para que el POST se dirija primero a buscar el "boot sector" o sector de arranque al disco duro. En el primer sector fsico del disco duro (correspondiente tambin al sector de arranque), se encuentra grabado el MBR (Master Boot Record Registro Maestro de Arranque) o simplemente "boot record", que contiene las instrucciones necesarias que permiten realizar el proceso de carga en la memoria RAM de una parte de los ficheros del sistema operativo que se encuentra grabado en la particin activa del disco duro y que permite iniciar el proceso de carga.

Generalmente el disco duro posee una sola particin activa, coincidente con la unidad "C:/", que es donde se encuentra localizado el sistema operativo. No obstante, de acuerdo a como lo haya decidido el usuario, un mismo disco duro puede estar dividido en dos o ms particiones, e incluso tener un sistema operativo diferente en cada una de esas particiones (nunca dos sistemas operativos en una misma particin).

Rutinas De Aplicacin De Las Funciones Del BIOS: Las rutinas del Sistema de Operacin llamadas manejadores de dispositivos usualmente manejan las interrupciones generadas por el dispositivo. Los Sistemas de Operacin usan interrupciones pare implementar el tiempo compartido. Tienen un dispositivo llamado timer que genera una interrupcin despus de un intervalo especfico de tiempo. El Sistema de Operacin inicializa el timer antes de actualizar el Program Counter pare ejecutar un programa de un usuario. Cuando eltimer expira, genera una interrupcin causando que el CPU ejecute la rutina de servicio de la interrupcin timer.

Una seal o signal es la notificacin por software de que un evento ocurri. Por lo general es la respuesta del Sistema de Operacin. Por ejemplo, ctrlC genera una interrupcin para el manejador de dispositivo que maneja el teclado. El manejador notifica al proceso apropiado mandando un signal. El Sistema de Operacin tambin puede enviar signals a un proceso para notificar la finalizacin de una E/S o de un error.

Las interrupciones pueden ser producidas por Hardware o por Software Las interrupciones por Hw son producidas por un dispositivo y viajan por el mismo bus del sistema.

Las interrupciones por Sw son producidas por medio de la ejecucin de una operacin especial que se conoce como "llamada al sistema" (system call) o por errores producidos dentro de un proceso, tambin conocidas como excepciones.

Hay muchos tipos de interrupciones y pare cada uno de estas existe una rutina en el sistema de operacin que le da servicio. Los sistemas de operacin actuales permiten a los dispositivos tales como E/S o reloj del sistema interrumpir el CPU asncronamente.

TECNICAS DE PROGRAMACIN

El lenguaje ensamblador es el sistema

alfanumrico para escribir cdigo

mquina mediante expresiones abreviadas (mnemotcnicos). La compilacin es ms complicada porque incluye la conversin de operaciones matemticas complejas, comandos de lenguaje natural o tipos de comandos complejos.

Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas mquinas. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la mquina, la memoria, dispositivos de E/S, etc.

Procesos Para La Creacin De Un Programa:

Para la creacin de un programa es necesario seguir cinco pasos: Diseo del algoritmo, codificacin del mismo, su traduccin a lenguaje mquina, la prueba del programa y la depuracin.

En la etapa de diseo se plantea el problema a resolver y se propone la mejor solucin, creando diagramas esquemticos utilizados para el mejor

planteamiento de la solucin.

La codificacin del programa consiste en escribir el programa en algn lenguaje de programacin (en este caso en ensamblador 8086), tomando como base la solucin propuesta en el paso anterior.

La traduccin al lenguaje mquina es la creacin del programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que pueda ser interpretado por el procesador.

La prueba del programa consiste en verificar que el programa funcione sin errores, o sea, que haga lo que tiene que hacer.

La ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de prueba. La correccin de una falla normalmente requiere la repeticin de los pasos comenzando desde el primero o el segundo.

Tcnicas De Codificacin En Ensamblador:

En ensamblador los bucle, condicionales, subrutinas y dems elementos se codifica de forma distinta de cmo se hace en otros lenguajes de alto nivel. A continuacin describiremos algunas tcnicas tiles para codificar las

estructuras ms usuales.

BUCLES: Inicializacin de un registro(a modo de contador) al n de vueltas del bucle Etiqueta: Primera instruccin del bucle <resto de instrucciones dentro del bucle> decrementar el contador saltar a la etiqueta si el contador es mayor que cero <instrucciones fuera del bucle>

SALTOS CONDICIONALES: Instruccin de comparacin Evaluar condicin y si se cumple saltar a la etiqueta prefijada <instrucciones para el caso de no cumplirse la condicin> saltar fuera del condicional

MACROS: Declaracin: <nombre de la macro> MACRO <instrucciones de la macro> ENDM Llamada: <nombre de la macro>

SUBRUTINAS: Declaracin: <nombre la de subrutina> PROC <instrucciones de la subrutina> RET <nombre de la subrutina> ENDP Llamada: CALL <nombre de la subrutina>

Ejemplo Prctico De Un Programa En Ensamblador 8086:

A continuacin haremos un pequeo programa de ejemplo que nos imprimir por pantalla la palabra HOLA, para hacer comentarios se usar el ; dentro del propio cdigo fuente como vemos a continuacin: