Unidad 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR

9
. ResumenEl lenguaje ensamblador es un lenguaje de bajo nivel utilizando el código binario y es el lenguaje de programación más antiguo y, de todos los lenguajes, es el que más se asemeja al lenguaje máquina nativo. Proporciona un acceso directo al hardware de la computadora, por lo que se debe tener una buena comprensión acerca de la arquitectura y el sistema operativo de su computadora. Constituye la representación del código máquina específico para cada arquitectura de microprocesador. I. INTRODUCCIÓN EL LENGUAJE ENSAMBLADOR ES EL LENGUAJE DE PROGRAMACIÓN MÁS ANTIGUO Y, DE TODOS LOS LENGUAJES, ES EL QUE MÁS SE ASEMEJA AL LENGUAJE MÁQUINA. PROPORCIONA UN ACCESO DIRECTO AL HARDWARE DE LA COMPUTADORA, POR LO QUE SE DEBE TENER UNA BUENA COMPRENSIÓN ACERCA DE LA ARQUITECTURA Y EL SISTEMA OPERATIVO DE LA COMPUTADORA. 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. EL LENGUAJE ENSAMBLADOR REFLEJA DIRECTAMENTE LA ARQUITECTURA Y LAS INSTRUCCIONES EN LENGUAJE DE MÁQUINA DE LA CPU, Y PUEDEN SER MUY DIFERENTES DE UNA ARQUITECTURA DE CPU A OTRA. CADA ARQUITECTURA DE MICROPROCESADOR TIENE SU PROPIO LENGUAJE DE MÁQUINA, Y EN CONSECUENCIA SU PROPIO LENGUAJE ENSAMBLADOR YA QUE ESTE SE ENCUENTRA MUY LIGADO A LA ESTRUCTURA DEL HARDWARE PARA EL CUAL SE PROGRAMA. LOS MICROPROCESADORES DIFIEREN EN EL TIPO Y NÚMERO DE OPERACIONES QUE SOPORTAN; TAMBIÉN PUEDEN TENER DIFERENTE CANTIDAD DE REGISTROS, Y DISTINTA REPRESENTACIÓN DE LOS TIPOS DE DATOS EN MEMORIA. II. DESARROLLO DE CONTENIDO: UNIDAD I 1.1 Importancia de la programación en lenguaje ensamblador La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar Introducción al lenguaje ensamblador 1

description

LENGUAJES DE INTERFAZ

Transcript of Unidad 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR

6.

[footnoteRef:1] [1: ]

Introduccin al lenguaje ensamblador

ResumenEl lenguaje ensamblador es un lenguaje de bajo nivel utilizando el cdigo binario y es el lenguaje de programacin ms antiguo y, de todos los lenguajes, es el que ms se asemeja al lenguaje mquina nativo. Proporciona un acceso directo al hardware de la computadora, por lo que se debe tener una buena comprensin acerca de la arquitectura y el sistema operativo de su computadora. Constituye la representacin del cdigo mquina especfico para cada arquitectura de microprocesador. INTRODUCCINel lenguaje ensamblador es el lenguaje de programacin ms antiguo y, de todos los lenguajes, es el que ms se asemeja al lenguaje mquina. proporciona un acceso directo al hardware de la computadora, por lo que se debe tener una buena comprensin acerca de la arquitectura y el sistema operativo de la computadora. 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 cdigo difciles 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 estn disponibles en los lenguajes de alto nivel.

el lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de mquina de la cpu, y pueden ser muy diferentes de una arquitectura de cpu a otra. cada arquitectura de microprocesador tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa. los microprocesadores difieren en el tipo y nmero de operaciones que soportan; tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos de datos en memoria.

DESARROLLO DE CONTENIDO: UNIDAD I1.1 Importancia de la programacin en lenguaje ensambladorLa importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en l se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar

Existen dos clases de lenguaje de programacin: de alto nivel y de bajo nivel. Los programadores que escriben en un lenguaje de alto nivel como C y pascal, codifican comandos poderosos, cada uno de los cuales puede generar muchas instrucciones en lenguaje mquina. Por otro lado, los programadores que escriben en un lenguaje ensamblador de bajo nivel codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje mquina. A pesar del hecho que codificar en un lenguaje de alto nivel es ms productivo algunas ventajas de codificar en el lenguaje ensamblador son:

Proporciona ms control sobre el manejo particular de los requerimientos de hardwareGenera mdulos ejecutables ms pequeos y ms compactosCon mayor probabilidad tiene una ejecucin ms rpida una prctica comn es combinar los beneficios de ambos niveles de programacin: codificar el grueso de un proyecto en un lenguaje de alto nivel y los mdulos crticos (aquellos que provocan notables retardos) con lenguaje ensamblador. Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traduccin. Un programa enlazador para ambos niveles alto y bajo, completa el proceso al convertir el cdigo objeto en lenguaje ejecutable.

1.2 El procesador y sus registros

Figura 1.1 Estructura interna del procesador.

Para comprender la organizacin del procesador, consideremos los requisitos que ha de cumplir Captar instruccin: el procesador lee una instruccin de la memoria (registro, cach o memoria principal). Interpretar instruccin: la instruccin se decodifica para determinar qu accin es necesaria.Estructura y funcionamiento del procesador 4 3 9 Captar datos: la ejecucin de una instruccin puede exigir leer datos de la memoria o de un mdulo de E/S. Procesar datos: la ejecucin de una instruccin puede exigir llevar a cabo alguna operacin aritmtica o lgica con los datos. Escribir datos: los resultados de una ejecucin pueden exigir escribir datos en la memoria o en un mdulo de E/S.

REGISTROS

Figura 1.2 Registros.

Un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones matemticas registro de segmento registro de propsito general registro de apuntador de instrucciones registro apuntadores registros ndice registro de banderas

Figura 1.3 El procesador y el bus del sistema.

1.3 La memoria principal (RAM) Con la memoria RAM nosotros podemos borrar y grabar las veces que se requiera. Al apagar la fuente de alimentacin, todos los datos o informacin grabada se borrarn instantneamente ya que solo se usa como un tipo de almacenamiento temporal.Se le llama RAM porque es posible acceder a cualquier ubicacin de ella aleatoria y rpidamenteFsicamente, estn constituidas por un conjunto de chips o mdulos de chips normalmente conectados a la tarjeta madre. Los chips de memoria son rectngulos negros que suelen ir soldados en grupos a unas plaquitas con "pines" o contactos

Figura 1.4 La memoria RAM.

La memoria RAM (RandomAccess Memory, Memoria de Acceso Aleatorio) tiene dos modos de operacin: RAM esttica: Compuesta por flips-flops internos que almacenan informacin binaria. La informacin almacenada es vlida mientras la unidad est encendida. RAM dinmica: conjunto de pequeos condensadores que pueden estar cargados o descargados. Debe refrescarse cada pocos milisegundos para impedir la prdida de informacin. Tienen mayor capacidad que las estticas.

Figura 1.5 Mdulo de memoria y zcalo respectivo.

1.4 El concepto de interrupciones Una interrupcin es una situacin especial que suspende la ejecucin de un programa de modo que el sistema pueda realizar una accin para tratarla. Tal situacin se da, por ejemplo, cuando un perifrico requiere la atencin del procesador para realizar una operacin de E/S.

TABLA 1.1 Clases de interrupciones

ProgramaGeneradas por alguna condicin que se produce como resultado de la ejecucin de una instruccin, tal como desbordamiento aritmtico (overflow), divisin por cero, intento de ejecutar una instruccin maquina inexistente e intento de acceder fuera del espacio de memoria permitido por el usuario.

TemporizacinGeneradas por un temporizador interno al procesador. Esto permite al sistema operativo realizar ciertas funciones de manera regular.

E/SGeneradas por un controlador de E/S, para indicar la finalizacin sin problemas de una operacin o para avisar de ciertas condiciones de error.

Fallo de HardwareGeneradas por un fallo tal como la falta de potencia de alimentacin o un error de paridad en la memoria.

Las interrupciones constituyen quiz el mecanismo ms importante para la conexin del microcontrolador con el mundo exterior, sincronizando la ejecucin de programas con acontecimientos externos.

Figura 1.6 Flujo de control de un programa sin y con interrupcin.

Los pasos indicados a continuacin indican el procesamiento: 1. Terminar la ejecucin de la instruccin mquina en curso. 2. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la ltima instruccin. 3. La CPU salta a la direccin donde est almacenada la rutina de servicio de interrupcin (ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que gener la interrupcin. 4. Una vez que la rutina de la interrupcin termina, el procesador restaura el estado que haba guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Figura 1.7 Ciclo de instruccin con interrupciones.

1.5 Llamadas a servicios del sistema Una llamada al sistema es un mtodo o funcin que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requiere la ejecucin de cdigo en modo privilegiado, el sistema operativo ofrece un conjunto de mtodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo acta como intermediario, ofreciendo una interfaz de programacin (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo. Algunos ejemplos de llamadas al sistema son las siguientes:Time: que permite obtener la fecha y hora del sistema. Write: que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magntico. Read: que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magntico. Open: que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a write.

Figura 1.8 Los 11 pasos para realizar la llamada al sistema read(fd, bufer, nbytes).

1.6 Modos de direccionamiento

Los llamados modos de direccionamiento son las diferentes maneras de especificar en informtica un operando dentro de una instruccin en lenguaje ensamblador.Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y / o constantes, contenida dentro de una instruccin de la mquina o en otra parte.Las operaciones se hacen entre registros o registros y memoria, pero nunca entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres).Los modos de direccionamiento determinan el lugar en que reside un operando, un resultado o la siguiente instruccin a ejecutar segn el caso.Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de direccionamiento:

Direccionamiento inmediato: el operador es especificado en la instruccin misma

Figura 1.9 Direccionamiento Directo.

Direccionamiento directo: es directo cuando la instruccin tiene lugar donde se encuentra el operando.

Direccionamiento relativo: la instruccin indica el desplazamiento del operando con respecto a un puntero.

Direccionamiento indirecto: la posicin indicada por la instruccin no es el operando si no la direccin de memoria en la que se encuentra, por lo que se necesita un acceso adicional a memoria

Figura 1.10 Direccionamiento indirecto por registro.

Direccionamiento implcito: no es necesario poner ninguna direccin de forma explcita, ya que en el propio cdigo de operacin se conoce la direccin del operando al que se desea acceder o con el que se quiere operar

Direccionamiento de registro: sirve para especificar operadores que estn en registros

Direccionamiento indirecto de registros: en este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la memoria. El control localiza la instruccin de la memoria y utiliza su parte de direccin para acceder a la memoria

1.7 Proceso de ensamblado y ligado

Este proceso est resumido en la figura 1.11 Y en los pasos siguientes:

Figura 1.11 Ciclo de ensamblado-enlazado-ligado.

1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como archivo de cdigo fuente. 2. El ensamblador lee el archivo de cdigo fuete y produce un archivo de cdigo objeto, una traduccin del programa a lenguaje mquina. De manera opcional, produce un archivo de listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa. 3. El enlazador lee el archivo de cdigo objeto y verifica si el programa contiene alguna llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de cdigo objeto y produce el archivo ejecutable. De manera opcional, el enlazador puede producir un archivo de mapa. 4. La herramienta cargador del sistema operativo lee el archivo ejecutable y lo carga en memoria, y bifurca la CPU hacia la direccin inicial del programa, para que ste empiece a ejecutarse.

1.8 Desplegado de mensajes en el monitor

Todos los grficos y el texto que se muestran en el monitor se escriben en la RAM de visualizacin de video, para despus enviarlos al monitor mediante el controlador de video. El controlador de video es en s un microprocesador de propsito especial, que libera a la CPU principal del trabajo de controlar el hardware de video.Un monitor de pantalla de cristal lquido (LCD) digital directo recibe un flujo de bits digitales directamente desde el controlador de video, y no requiere del barrido de trama.

Figura 1.12 Mensajes en el monitor.ConclusionesEl lenguaje ensamblador es una de las herramientas de programacin ms utilizadas por todas aquellas personas que desean tener un mayor grado de comprensin sobre el funcionamiento a nivel de dispositivo de una computadora. Nos brinda muchas formas de trabaja directamente con el microprocesador y as generar mdulos ejecutables ms pequeos.

referencias [1] Peter Abel, Lenguaje Ensamblador y Programacin para IBM y Compatibles ,3era edicin. Pag.9-11[2] M. Morris Mano, Arquitectura de Computadoras, 3ra Edicin. Pag 265-277[3] Andrew S. Tanenbaum, Sistemas operativos modernos, 3era edicin. Pag. 49-52[4] Kip r. Irvine , lenguaje ensamblador para computadoras basadas en Intel ,5ta edicin.Pag 62-63[5] William Stallings, organizacin y arquitectura de computadores. Pag. 438-445