P. 1
Lenguajes de Alto Nivel y Ensambladores

Lenguajes de Alto Nivel y Ensambladores

|Views: 2|Likes:
Publicado poramadorhgfjhgkhkl

More info:

Published by: amadorhgfjhgkhkl on Jun 27, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/28/2015

pdf

text

original

LENGUAJES DE INTERFAZ

INSTITUTO TECNOLOGICO DE TAPACHULA

LENGUAJES DE INTERFAZ

CATEDRATICO: LIC. NICOLAS CABRERA HIDALGO

IMPORTANCIA DE LA PROGRAMACION EN LEGUAJE ENSAMBLADOR

ALUMNO: LOPEZ AGUILAR AMADO

Nº DE CONTROL 10510533

6º SEMESTRE

CARRERA: ING. SISTEMAS COMPUTACIONALES

TAPACHULA CHIAPAS DE CORDOVA Y ORDOÑEZ.

JUNIO 2013.

INSTITUTO TECNOLOGICO DE TAPACHULA

1

entonces. en C se pueden usar palabras tales como: case. for. para la mayoría de las instrucciones de estos lenguajes.Relación entre las instrucciones de alto nivel. para construir con ellas instrucciones como: if( numero > 0 ) printf( "El número es positivo" ) que traducido al castellano viene a decir que: si numero es mayor que cero. Figura . se necesitarían varias instrucciones en un lenguaje ensamblador para indicar lo mismo. porque se pueden utilizar palabras de muy fácil comprensión para el programador. De igual forma que. también agrupa a varias instrucciones de un lenguaje máquina. Pascal. while. ensamblador y máquina. Otra carácterística importante de los lenguajes de alto nivel es que. etc. escribir por pantalla el mensaje: "El número es positivo". En contraposición. los lenguajes de bajo nivel son aquellos que están más cerca del "entendimiento" de la máquina.LENGUAJES DE INTERFAZ ¿Qué es un lenguaje de alto nivel? Un lenguaje de alto nivel permite al programador escribir las instrucciones de un programautilizando palabras o expresiones sintácticas muy similares al inglés. BASIC. INSTITUTO TECNOLOGICO DE TAPACHULA 2 . Otros lenguajes de alto nivel son: Ada. la mayoría de las instrucciones de un lenguaje ensamblador. etc. Ésta es la razón por la que a estos lenguajes se les considera de alto nivel. Por ejemplo. FORTRAN. if. COBOL.

– Solución: usar la máquina para traducir a lenguaje binario (código máquina): programa traductor.). abreviaturas. pero más cercano a la máquina. – Programar directamente de esa forma sería posible. • Lenguajes de programación: instrucciones representadas simbólicamente (mediante palabras. condiciones. – Lenguaje de alto nivel (LAN): Java. etc.) • Ilustraremos nuestros ejemplos con C: – Alto nivel. relativamente cercano a su forma de pensar: – Variables.. propenso a errores y lejos del modo de pensar humano.) y de lenguajes concretos (C. tipos de datos. . funciones/procedimientos. • Tipos de lenguajes de programación: – Lenguaje ensamblador (de bajo nivel). Haskell. – Lenguaje de programación nativo de Unix/Linux INSTITUTO TECNOLOGICO DE TAPACHULA 3 . C.LENGUAJES DE INTERFAZ  Las instrucciones que procesa la CPU están almacenadas en memoria principal en binario (0 y 1): – Se dice que son instrucciones máquina. orientado a objetos. pero muy difícil. etc. etc. LENGUAJE DE ALTO NIVEL • Permiten al programador expresar sus programas en un lenguaje formal. • Multitud de paradigmas (imperativo. asignación de variables. C++. bucles. C++. funcional. Ejemplo ensamblador Intel-IA32 Problema: el procesador no entiende “add”. etc.. Java.

se vuelve a recorrer el vector para imprimir sus contenidos (función printf. – Datos (ya en formatos de almacenamiento interno: enteros en C2. reales en punto flotante.) : INSTITUTO TECNOLOGICO DE TAPACHULA 4 . saltos. y se almacena el resultado en la misma posición (array[i] = array[i]*i. se hace una operación sobre él. • Contenido de un fichero objeto: – Instrucciones en lenguaje máquina. pero aún expresado en texto ASCII). etc. que va recorriendo el array (bucle for).h) COMPILADORES Y EMSAMBLADORES • Compilador: – Transforma el código en lenguaje de alto nivel (en texto ASCII) a ensamblador (lenguaje ya “pegado” a la máquina. tiene una función principal (main). • En cada paso del bucle se lee una posición del array. de la librería stdio.LENGUAJES DE INTERFAZ • Ejemplo: • El programa anterior declara un vector (array) de 10 datos de tipo entero. • Finalmente.) – Información de reubicación (para accesos a memoria.). • Ensamblador: – Convierte el programa ensamblador en un fichero objeto. texto en ASCII. y una variable entera (i). • Después. que ya contiene datos binarios. etc.

LENGUAJES DE INTERFAZ • Necesaria porque los programas se dividen en módulos objeto compilados por separado... • En ese momento.COBOL .C# . EJEMPLOS DE LENGUAJES DE ALTO NIVEL DE PROGRAMACIÓN Ejemplos de estos lenguajes de alto nivel son PASCAL .MATLAB . • . SNOBOL( para aplicaciones de procesamiento de textos).PL/SQL . C y ADA (para aplicaciones de programación de sistemas) y PL/I (para aplicaciones de propósitos generales) . APL y FORTRAN (para aplicaciones científicas ).Logo .Fortran . se “pegarán todos los módulos”.Clipper .Java . se fijarán las referencias cruzadas entre ellos (acceso a datos o llamadas a funciones de otro módulo).Basic .SISTEMA BERNAL ITM ..Lexico .RPG .Lenguajes funcionales * Haskell * Lisp INSTITUTO TECNOLOGICO DE TAPACHULA 5 .que luego en enlazador (linker) juntará en uno sólo. LISP y PROLOG (para aplicaciones de inteligencia artificial).FoxPro o Visual Foxpro . Principales lenguajes de programación de alto nivel – Ada . y se usará la información anterior para fijar las direcciones definitivas en el programa completo resultante. COBOL (para aplicaciones de procesamiento de datos)..ALGOL .Modula-2 .

entre las que destaca la realizada en 1966 por ANSI (American National Standard Institute) en la que se definieron nuevas reglas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina.9-1978: Programming Language FORTRAN» y define dos niveles del lenguaje denominados FORTRAN 77 completo y FORTRAN 77 básico. apareció una nueva versión más evolucionada que se llamó FORTRAN V o FORTRAN 77. tratamiento de cadenas de caracteres y edición de informes. Es un lenguaje especializado en aplicaciones técnicas y científicas. es auto. Kemeny y Thomas E. a fin de disponer de un lenguaje universal para aplicaciones comerciales como expresa su nombre (COmmon Business Oriented Language). la inexistencia de funciones matemáticas y.documentado y tiene gran capacidad en el manejo de archivos. así como en la edición de informes escritos. El PL/I (Programming Language 1) se desarrolló inspirándose en los lenguajes ALGOL. útil para aplicaciones técnico-científicas. En 1977. de proceso de textos. A lo largo de su existencia han aparecido diferentes versiones. por último. BASIC Fue diseñado por los profesores John G. comerciales. pues antes de su aparición todos los programas se escribían en lenguaje ensamblador o en lenguaje máquina. COBOL y FORTRAN. PL/1 Fue creado a comienzos de los años 60 por IBM para ser usado en sus equipos del sistema 360. Entre sus inconvenientes están sus rígidas reglas de formatos de escritura. esta versión está reflejada en el documento «ANSI X3. con el objetivo de obtener un lenguaje lo más general posible. fue definido alrededor del año 1955 en los Estados Unidos por la compañía IBM. caracterizándose por su potencia en los cálculos matemáticos. tomando las mejores características de los anteriores y añadiendo algunas nuevas. COBOL Es el lenguaje más usado en las aplicaciones de gestión. Esta versión se denominó FORTRAN IV o FORTRAN 66. manejo de archivos. patrocinado por el Departamento de Defensa de los Estados Unidos. de bases de datos y de programación de sistemas. es decir. su no adecuación a las técnicas de programación estructurada. la extensión excesiva en sus sentencias e incluso duplicación en algunos casos. como se indica en su nombre Benginner’s All -purpose Symbolic Instruction Code (Código de instrucción simbólico de propósito general para INSTITUTO TECNOLOGICO DE TAPACHULA 6 .LENGUAJES DE INTERFAZ CARACTERÍSTICAS DE ALGUNOS LENGUAJES DE ALTO NIVEL FORTRAN Abreviatura de Fórmula Translator (traductor de fórmulas). creado en 1960 por un comité denominado CODASYL. comenzó la transportabilidad del lenguaje. la necesidad de describir todos los elementos al máximo detalle. pero estando limitado en las aplicaciones de gestión. Es el más antiguo de los lenguajes de alto nivel. Kurtz del Dartmouth College en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los principiantes. Entre sus características se pueden citar su parecido al lenguaje natural (inglés). siendo el segundo un subconjunto del primero.

basándose en el lenguaje AL-GOL. Estos habían diseñado con anterioridad el sistema operativo UNIX. Existen multitud de intérpretes y compiladores del lenguaje. La utilización óptima de este lenguaje se consigue dentro de su entorno natural. Entre sus principales novedades están las de ser un lenguaje interpretado y de uso conversacional. de proceso de textos. con el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de aplicaciones. Su nombre proviene del filósofo y matemático francés del siglo xvii Blaise Pascal. PASCAL Fue creado por el matemático suizo Niklaus Wirth en 1970. De éstos se seleccionaron como base para la creación del nuevo lenguaje el INSTITUTO TECNOLOGICO DE TAPACHULA 7 . ADA Es el último intento de obtener un único lenguaje para todo tipo de aplicaciones e incluye los últimos avances en técnicas de programación. que inventó la primera máquina de tipo mecánico para sumar. unidas a la popularización de las microcomputadoras y computadoras personales. poseyendo grandes facilidades para la programación de sistemas y diseño de gráficos. de bases de datos. y su intención al desarrollar el lenguaje C fue la de conseguir un lenguaje idóneo para la programación de sistemas que fuese independiente de la máquina con el cual escribir su sistema UNIX. Entre sus características destaca el uso de programación estructurada para resolver tareas de bajo nivel. Estas características. LENGUAJE C Fue creado en 1972 por Dennis Ritchie a partir del trabajo elaborado por su colega de los laboratorios Bell Telephone . útil para aplicaciones técnicas y de gestión. así como la amplia librería de rutinas de que dispone. ha hecho que su utilización se haya extendido enormemente. Aunque en principio la idea del diseñador era proporcionar un lenguaje adecuado para la enseñanza de los conceptos y técnicas de programación. Ken Thompson. en cuyo diseño había participado en los años 60.LENGUAJES DE INTERFAZ principiantes). a la vez que ha propiciado el surgimiento de una gran diversidad de versiones que extienden y adaptan a necesidades particulares el lenguaje original. Aunque fue diseñado inicialmente para la programación de sistemas. posteriormente su uso se ha extendido a aplicaciones técnico-científicas. Su diseño fue encargado por el Departamento de Defensa de los Estados Unidos a la empresa HoneywellBull después de una selección rigurosa entre varias propuestas realizadas sobre una serie de requerimientos del lenguaje y de haber evaluado negativamente veintitrés lenguajes existentes. que es el sistema operativo UNIX. etc.

Esto está en contraste con los lenguajes de alto nivel. Fue usado principalmente en los inicios del desarrollo de software. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa. que idealmente son portátiles. o assembler (assembly language en inglés). condesa de Lovelace. y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones). en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina. los registros del procesador. programación concurrente. Particularmente. el ALGOL y el PL/I. y son llamados macro ensambladores.LENGUAJES DE INTERFAZ PASCAL. la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo). Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). presentando como principal inconveniente su gran extensión. Entre las características del lenguaje se encuentran la compilación separada. 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. La estandarización del lenguaje se publicó en 1983 con el nombre de ADA en honor de la considerada primera programadora de la historia Augusta Ada Byron. libertad de formatos de escritura. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. INSTITUTO TECNOLOGICO DE TAPACHULA 8 . es un lenguaje de programación de bajo nivel para los computadores. los tipos abstractos de datos. El lenguaje ensamblador. las posiciones de memoria y otras características del lenguaje. programación estructurada. cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. etc. 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. controlar el proceso de ensamblaje. microprocesadores. Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel. microcontroladores y otros circuitos integrados programables. y la ayuda de depuración. Esta representación es usualmente definida por el fabricante de hardware.. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación.

1. Por otro lado. tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Peligro de afectar recursos inesperadamente . O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite Desventajas Tiempo de programación . requiere de más cuidado por parte del programador. pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido. podemos afectar los recursos de la maquina. Importancia del lenguaje ensamblador La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador.Por las mismas razones que aumenta el tiempo. evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso.. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas. 2. Eficiencia de tamaño .. que normalmente no aparecen al usar un lenguaje de alto nivel. programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize.Como trabaja directamente con el microprocesador al ejecutar un programa.. pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución. crecen los programas fuentes..Porque para cada máquina existe un lenguaje ensamblador. en comparación con un lenguaje de alto nivel.. los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel 3. Programas fuente grandes . Esto es una desventaja porque dificulta el mantenimiento de los programas.LENGUAJES DE INTERFAZ especialmente cuando se requiere la manipulación directa de hardware. Flexibilidad . o todo riesgo que podamos tener. altos rendimientos.Es flexible porque todo lo que puede hacerse con una máquina. por lo cual se debe de conocer el funcionamiento interno de este.Que todo error que podamos cometer. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados. INSTITUTO TECNOLOGICO DE TAPACHULA 9 . o un uso de recursos controlado y reducido. por ello. ... Falta de portabilidad. puede hacerse en el lenguaje ensamblador de esta máquina. 2. y nuevamente reduce la productividad de los programadores. simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Ventajas y desventajas del Lenguaje Ensamblador Ventajas 1.

CX = Registro contador. 1 si es negativo. su mitad inferior DL contiene el número de puertos. el resultado tiene paridad par. bit 2): Si vale uno. Este indicador se usa con las instrucciones de ajuste decimal. bit 6): Si este indicador vale 1. Como los números negativos se representan en la notación de complemento a dos. bit 0): Si vale 1. la CPU reconoce pedidos de interrupción externas. bit 10): Si vale 1. bit 9): Si vale 1. no se reconocen tales interrupciones DF (Direction Flag. lo que quiere decir que las cadenas se procesarán de "izquierda a derecha". Los cuatro bits más significativos están indefinidos. AF (Auxiliary carry Flag. las instrucciones con cadenas sufrirán "autodecremento". PF (Parity Flag.  Bus interno son los canales por donde pasa la información que la máquina va a procesar (bus de entrada) o procesada (bus de salida). Este indicador se puede utilizar para detectar errores en transmisiones. dividido en CH y CL. es decir.. Si vale 0.Se utiliza como contador en bucles(LOOP). un número par de bits a 1. dividido en AH y AL (8 bits cada uno).Interviene en las operaciones aritméticas y lógicas. Registros de Estado Hay nueve indicadores de un bit en este registro de 16 bits.  Unidad aritmética y lógica es la responsable de realizar como su nombre lo indica operaciones aritméticas y lógicas. Registros de uso general AX = Registro acumulador. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF. DX = Registro de datos.Se utiliza en transferencias de datos entre la memoria y el procesador. la CPU automáticamente genera una interrupción interna después de cada instrucción. esto es. ZF (Zero Flag. indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. indica que hubo "arrastre" (en caso de suma) o "préstamo" (en caso de resta). permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción. En este modo.Se utiliza en operaciones de multiplicación y división junto con Ax y en operaciones de entrada y salida de puertos.. Relación del lenguaje ensamblador con los componentes internos del procesador  En la memoria se almacena la información en celdas especiales llamados registros los cuales tienen un nivel alto y un nivel bajo. IF (Interrupt Flag.. SF (Sign Flag. mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno. Si vale 0. BX = Registro base. y en desplazamientos(CL). CF (Carry Flag. dividido en DH y DL. después de la operación arroja un resultado. en operaciones con cadenas(REP).  Unidad de control Se encarga de coordinar de que los otros componentes ejecuten las operaciones correctamente. se procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. bit 7): Refleja el bit más significativo del resultado. bit 8): Si vale 1. este bit representa el signo: 0 si es positivo.LENGUAJES DE INTERFAZ 3. dividido en BH y BL. bit 4): Si vale 1. el resultado de la operación es cero. habrá "auto-incremento". TF (Trap Flag. el procesador está en modo paso a paso.. INSTITUTO TECNOLOGICO DE TAPACHULA 10 .

Estas dos áreas de la Memoria Interna de Datos se diferencian por el modo de direccionamiento usado para accesarlas. nombres simbólicos. El tamaño máximo de la Memoria de Programa es de 64 Kbytes. Todos los Registros de Funciones Especiales tienen direcciones mayores a 127 y se ubican en los 128 bytes superiores de la Memoria Interna de Datos. la pila o stack del programa. al registro de la palabra de estado del programa y al Acumulador. tablas y cadenas de caracteres (strings) usadas en los programas. aunque también se puede direccionar un banco de Memoria Externa de Datos de 256 bytes usando los dos primeros registros de propósito general . un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino. Relación entre el código binario y el lenguaje ensamblador En el código binario se utilizan ceros y unos. ya que ahí es donde residen cuatro bancos de registros de propósito general. bit 11): Si vale 1. INSTITUTO TECNOLOGICO DE TAPACHULA 11 . mientras que los 128 bytes superiores solo se pueden accesar con el modo de direccionamiento Indirecto. temporizadores y puerto serie del circuito integrado. entre los cuales a continuación se mencionan los siguientes:  Memoria de Programa  Memoria Externa de Datos  Memoria Interna de Datos  Registros de Funciones Especiales  Memoria de Bit. el espacio de Memoria de Bit se usa para almacenar variables y banderas de un bit. Esta memoria se direcciona principalmente usando el registro de 16 bits llamado Data Pointer. La relación entre estos dos lenguajes sería que el binario es el lenguaje que la máquina entiende y el ensamblador se acerca mas lenguaje de esta. Estos registros incluyen al Stack Pointer. Por otra parte. El tamaño máximo de la Memoria de Bit es de 256 bits. Los Registros de Funciones Especiales solo se pueden accesar usando el modo de direccionamiento Directo. La cantidad máxima de Registros de Funciones Especiales es 128.LENGUAJES DE INTERFAZ OF (Overflow flag. La Memoria Externa de Datos contiene todas las variables y estructuras de datos que no caben en la memoria interna del Microprocesador. Contiene un espacio para los denominados Registros de Funciones Especiales destinado para los puertos de entrada/salida. mientras que el lenguaje ensamblador es una colección de símbolos mnemónicos que representan: operaciones. operadores y símbolos especiales. esto es. datos. El espacio de la Memoria de Programa contiene todas las instrucciones. Manejo de la memoria: Direccionamiento (interno y externo) El manejo de la memoria depende de que procesador tenga la máquina. hubo un desborde en una operación aritmética con signo. El espacio de Memoria Interna de Datos funcionalmente es la memoria de datos más importante. 128 de los bits comparten su espacio con 16 bytes del espacio de la Memoria Interna de Datos y los otros 128 bits lo hacen con los Registros de Funciones Especiales. Esta memoria se direcciona principalmente por el registro de 16 bits Data Pointer . El tamaño máximo de la Memoria Interna de Datos es de 256 bytes. 4. 128 bits de los 256 bits de un área de memoria direccionable por bit y todas las variables y estructuras de datos operadas directamente por el programa.

generar cortas secuencias de instrucciones como expansión en línea en vez de llamar a subrutinas. e impedir que se interrumpa durante su ejecución. un programa ensamblador (assembler en inglés) moderno crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes.  También se puede controlar el tiempo en que tarda una rutina en ejecutarse.  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. y HP PA-RISC. Sun SPARC.LENGUAJES DE INTERFAZ CARACTERISTICAS    El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina. son el último paso antes de generar el código ejecutable. generalmente es necesario reescribirlo completamente. Típicamente. en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes 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. Al cambiar a una máquina con arquitectura diferente. Los ensambladores modernos. entre otras cosas.1 El uso de referencias simbólicas es una característica clave del lenguaje ensamblador. evitando tediosos cálculos y actualizaciones manuales de las direcciones después de cada modificación del programa. especialmente para las arquitecturas basadas en RISC. 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. En los compiladores para lenguajes de alto nivel. El lenguaje ensamblador es difícilmente portable. tales como MIPS. es decir. puede necesitar ser modificado. Programa ensamblador[editar] Artículo principal: Ensamblador. un código escrito para un microprocesador. La mayoría de los ensambladores también incluyen facilidades de macros para realizar sustitución textual . optimizan la planificación de instrucciones para explotar la segmentación del CPU eficientemente.ej. es decir. así como también para el x86 (-64). y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades. INSTITUTO TECNOLOGICO DE TAPACHULA 12 . es un lenguaje de bajo nivel. ya que. para poder ser usado en otra máquina distinta. Número de pasos[editar] Hay dos tipos de ensambladores basados en cuántos pasos a través de la fuente son necesarios para producir el programa ejecutable. Los ensambladores son generalmente más simples de escribir que los compiladores para los lenguajes de alto nivel. y han estado disponibles desde los años 1950.

haciendo los programas de ensamblador de dos paso más fáciles leer y mantener. en el uso profesional normal.2 Ensambladores de alto nivel[editar] Los más sofisticados ensambladores de alto nivel proporcionan abstracciones del lenguaje tales como: Estructuras de control avanzadas Declaraciones e invocaciones de procedimientos/funciones de alto nivel Tipos de datos abstractos de alto nivel.LENGUAJES DE INTERFAZ Los ensambladores de un solo paso pasan a través del código fuente una vez y asumen que todos los símbolos serán definidos antes de cualquier instrucción que los refiera. que no es tan importante como lo fue en un momento dados los avances en velocidad y capacidades del computador. entre otras máquinas) Características de programación orientada a objetos Uso del término[editar] Note que. después usan la tabla en un segundo paso para generar código. La ventaja del ensamblador de dos pasos es que los símbolos pueden ser definidos dondequiera en el código fuente del programa. Las dos expresiones siguientes utilizan el término "ensamblador": "El CP/CMS fue escrito en ensamblador del IBM S/360" "El ASM-H fue un ensamblador del S/370 ampliamente usado" La primera se refiere al lenguaje y la segundo se refiere al programa. y conjuntos Procesamiento de macros sofisticado (aunque está disponible en los ensambladores ordinarios desde finales 1960 para el IBM/360. incluyendo las estructuras/records. La ventaja de un ensamblador de un solo paso es la velocidad. Los ensambladores de dos pasos crean una tabla con todos los símbolos y sus valores en el primer paso. el término ensamblador es frecuentemente usado tanto para referirse al lenguaje ensamblador como también al programa ensamblador (que convierte el código fuente escrito en el lenguaje ensamblador a código objeto que luego será enlazado para producir lenguaje de máquina). El ensamblador debe por lo menos poder determinar la longitud de cada instrucción en el primer paso para que puedan ser calculadas las direcciones de los símbolos. Esto permite a los programas ser definidos de maneras más lógicas y más significativas. clases. uniones. INSTITUTO TECNOLOGICO DE TAPACHULA 13 .

de acuerdo a su funcionalidad. y había que hacer subrutinas para realizar esas operaciones. Una CPU particular puede tener instrucciones que no tenga otro y viceversa. Los primeros microprocesadores de 8 bits no tenían operaciones para multiplicar o dividir números. 32 y 64 bits dependiendo de la arquitectura de la CPU. en los sistemas muy viejos también de 12. módulo. NOT Operaciones de bits. y distinta representación de los tipos de datos en memoria. Las instrucciones de la CPU pueden agruparse. Aunque la mayoría de los microprocesadores son capaces de cumplir esencialmente las mismas funciones. 36 y 48 bits) Estas son operaciones realizadas por la Unidad aritmético lógica de la CPU Operaciones aritméticas. resta. aunque no necesariamente tienen todas las instrucciones de cada grupo. Como suma. y pueden ser muy diferentes de una arquitectura de CPU a otra. OR. cambio de signo Operaciones booleanas. por ejemplo. XOR. en: Operaciones con enteros: (de 8. Los microprocesadores difieren en el tipo y número de operaciones que soportan. la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia. Operaciones lógicas bit a bit como AND. 18. y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa. 24. Otras CPU puede que no tengan operaciones de punto flotante y habría que hacer o conseguir bibliotecas que realicen esas operaciones. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda. Cada arquitectura de microprocesador tiene su propio lenguaje de máquina. multiplicación. 16. Instrucciones de CPU[editar] La mayoría de las CPU tienen más o menos los mismos grupos de instrucciones.LENGUAJES DE INTERFAZ Lenguaje[editar] El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de máquina de la CPU. división. a través del bit del acarreo o sin él) Comparaciones Operaciones de mover datos: Entre los registros y la memoria: INSTITUTO TECNOLOGICO DE TAPACHULA 14 . también pueden tener diferente cantidad de registros. Las operaciones que se pueden realizar varían de una CPU a otra.

Suma. desde un origen a un destino. cambio de signo. como las siguientes: Operaciones aritméticas. valor absoluto. "mover datos" significa en realidad copiar datos. resta. multiplicación. Seno. tangente. en la CPU. o de la memoria. Una CPU puede tener operaciones de punto flotante con números reales mediante el coprocesador numérico (si lo hay). 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. división. sin que el dato desaparezca del origen. coseno. arcotangente Operaciones con logaritmos. parte entera Operaciones trascendentales Operaciones trigonométricas. potencias y raíces INSTITUTO TECNOLOGICO DE TAPACHULA 15 . 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 números reales: El estándar para las operaciones con números reales en las CPU está definido por el IEEE 754.LENGUAJES DE INTERFAZ Aunque la instrucción se llama "mover". desde y hacia un puerto.

Para el mismo procesador y el mismo conjunto de instrucciones de CPU. solo que está expresado de manera diferente. El primero usa la sintaxis de Intel.LENGUAJES DE INTERFAZ Otras El lenguaje ensamblador tiene mnemónicos para cada una de las instrucciones de la CPU en adición a otros mnemónicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras sentencias en tiempo de ensamblado). en un lenguaje ensamblador para la arquitectura x86. CONCLUSION El lenguaje ensamblador a pesar de ser mas rápido de cualquier otro lenguaje es también el mas complejo por eso es utilizado para complementar los limitantes de los lenguajes de programación de alto nivel. en algunos casos. mientras que el segundo usa la sintaxis de AT&T. aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. diferentes programas ensambladores pueden tener. mientras que para otro ensamblador para la misma arquitectura se expresaría al revés: MOV 5. A diferencia de los lenguajes de alto nivel. INSTITUTO TECNOLOGICO DE TAPACHULA 16 . Por ejemplo. un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que". para un código máquina condicional como "si X mayor o igual que". Los Ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos. Sin embargo. Ensamblado[editar] La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador. Pero existen ramas donde es imprescindible el uso de lenguaje ensamblador como lo es la electrónica donde los recursos de los aparatos son limitados y es necesario utilizar lenguaje ensamblador. se puede expresar la instrucción para mover 5 al registro AL de la siguiente manera: MOV AL. un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria y simplificar la programación. 5. y la traducción inversa la puede efectuar un desensamblador. variaciones y diferencias en el conjunto de mnemónicos o en la sintaxis de su lenguaje ensamblador. AL. Ambos lenguajes ensambladores harían exactamente lo mismo. cada uno de ellos. Por ejemplo. y "si = 0" sobre el resultado de la condición anterior.

net/iagardea/lenguaje-ensamblador INSTITUTO TECNOLOGICO DE TAPACHULA 17 .LENGUAJES DE INTERFAZ FUENTES http://es.es/patricio/ensam/ensam1.webscolar.org/wiki/Lenguaje_ensamblador http://www.multimania.org/wiki/Lenguaje_ensamblador http://es.slideshare.wikipedia.wikipedia.com/lenguajes-de-alto-nivel-de-programacion http://usuarios.htm http://es.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->