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

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. while. Otra carácterística importante de los lenguajes de alto nivel es que. INSTITUTO TECNOLOGICO DE TAPACHULA 2 . Figura . FORTRAN. En contraposición. BASIC.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. etc. Por ejemplo. en C se pueden usar palabras tales como: case. también agrupa a varias instrucciones de un lenguaje máquina. ensamblador y máquina. Pascal. De igual forma que. porque se pueden utilizar palabras de muy fácil comprensión para el programador. se necesitarían varias instrucciones en un lenguaje ensamblador para indicar lo mismo. COBOL.Relación entre las instrucciones de alto nivel. para la mayoría de las instrucciones de estos lenguajes. la mayoría de las instrucciones de un lenguaje ensamblador. escribir por pantalla el mensaje: "El número es positivo". for. etc. if. los lenguajes de bajo nivel son aquellos que están más cerca del "entendimiento" de la máquina. Otros lenguajes de alto nivel son: Ada. Ésta es la razón por la que a estos lenguajes se les considera de alto nivel. entonces.

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

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

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

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

Estos habían diseñado con anterioridad el sistema operativo UNIX. útil para aplicaciones técnicas y de gestión. que es el sistema operativo UNIX. 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. 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. De éstos se seleccionaron como base para la creación del nuevo lenguaje el INSTITUTO TECNOLOGICO DE TAPACHULA 7 . Su nombre proviene del filósofo y matemático francés del siglo xvii Blaise Pascal. etc. de proceso de textos. Entre sus características destaca el uso de programación estructurada para resolver tareas de bajo nivel. Estas características. a la vez que ha propiciado el surgimiento de una gran diversidad de versiones que extienden y adaptan a necesidades particulares el lenguaje original. en cuyo diseño había participado en los años 60. con el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de aplicaciones. LENGUAJE C Fue creado en 1972 por Dennis Ritchie a partir del trabajo elaborado por su colega de los laboratorios Bell Telephone . Ken Thompson. posteriormente su uso se ha extendido a aplicaciones técnico-científicas. de bases de datos. 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. Existen multitud de intérpretes y compiladores del lenguaje.LENGUAJES DE INTERFAZ principiantes). unidas a la popularización de las microcomputadoras y computadoras personales. Aunque fue diseñado inicialmente para la programación de sistemas. La utilización óptima de este lenguaje se consigue dentro de su entorno natural. basándose en el lenguaje AL-GOL. ha hecho que su utilización se haya extendido enormemente. así como la amplia librería de rutinas de que dispone. Entre sus principales novedades están las de ser un lenguaje interpretado y de uso conversacional. 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. poseyendo grandes facilidades para la programación de sistemas y diseño de gráficos. que inventó la primera máquina de tipo mecánico para sumar. PASCAL Fue creado por el matemático suizo Niklaus Wirth en 1970.

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

Importancia del lenguaje ensamblador La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador.LENGUAJES DE INTERFAZ especialmente cuando se requiere la manipulación directa de hardware. programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. crecen los programas fuentes. en comparación con un lenguaje de alto nivel. y nuevamente reduce la productividad de los programadores. Flexibilidad . altos rendimientos. 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... .. pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido. 2. pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso. o un uso de recursos controlado y reducido. Peligro de afectar recursos inesperadamente . INSTITUTO TECNOLOGICO DE TAPACHULA 9 . simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. 1. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados. por lo cual se debe de conocer el funcionamiento interno de este. Falta de portabilidad. Ventajas y desventajas del Lenguaje Ensamblador Ventajas 1.Porque para cada máquina existe un lenguaje ensamblador.Por las mismas razones que aumenta el tiempo.Es flexible porque todo lo que puede hacerse con una máquina. Esto es una desventaja porque dificulta el mantenimiento de los programas. que normalmente no aparecen al usar un lenguaje de alto nivel. puede hacerse en el lenguaje ensamblador de esta máquina. por ello. podemos afectar los recursos de la maquina.. o todo riesgo que podamos tener. 2.Como trabaja directamente con el microprocesador al ejecutar un programa. 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 .Que todo error que podamos cometer.. requiere de más cuidado por parte del programador. 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.. Eficiencia de tamaño . 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.. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas. Por otro lado. Programas fuente grandes .

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

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

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

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. y conjuntos Procesamiento de macros sofisticado (aunque está disponible en los ensambladores ordinarios desde finales 1960 para el IBM/360. INSTITUTO TECNOLOGICO DE TAPACHULA 13 . clases. 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). entre otras máquinas) Características de programación orientada a objetos Uso del término[editar] Note que. Los ensambladores de dos pasos crean una tabla con todos los símbolos y sus valores en el primer paso. uniones. que no es tan importante como lo fue en un momento dados los avances en velocidad y capacidades del computador. incluyendo las estructuras/records.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. La ventaja de un ensamblador de un solo paso es la velocidad. después usan la tabla en un segundo paso para generar código. Esto permite a los programas ser definidos de maneras más lógicas y más significativas. 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. La ventaja del ensamblador de dos pasos es que los símbolos pueden ser definidos dondequiera en el código fuente del programa. haciendo los programas de ensamblador de dos paso más fáciles leer y mantener. en el uso profesional normal.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.

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

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

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). 5. Por ejemplo. en un lenguaje ensamblador para la arquitectura x86. un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que". mientras que el segundo usa la sintaxis de AT&T. 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. INSTITUTO TECNOLOGICO DE TAPACHULA 16 . variaciones y diferencias en el conjunto de mnemónicos o en la sintaxis de su lenguaje ensamblador. Ensamblado[editar] La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador. y la traducción inversa la puede efectuar un desensamblador. 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. 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. solo que está expresado de manera diferente. Sin embargo. A diferencia de los lenguajes de alto nivel. y "si = 0" sobre el resultado de la condición anterior. Para el mismo procesador y el mismo conjunto de instrucciones de CPU. para un código máquina condicional como "si X mayor o igual que". mientras que para otro ensamblador para la misma arquitectura se expresaría al revés: MOV 5. aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. cada uno de ellos. 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. AL. en algunos casos. El primero usa la sintaxis de Intel. Por ejemplo. Ambos lenguajes ensambladores harían exactamente lo mismo. diferentes programas ensambladores pueden tener.

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

Sign up to vote on this title
UsefulNot useful