10
Lenguaje ensamblador El lenguaje ensamblador, o assembler (assembly language en inglés ) es un lenguaje de programación de bajo nivel para los computadores , microprocesadores , microcontroladores , y otros circuitos integrados programables. 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. Esta representación es usualmente definida por el fabricante de hardware , y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones ), los registros del procesador, las posiciones de memoria , y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel , que, idealmente son portables . Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. 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. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración . Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y son llamados macro ensambladores . Fue usado principalmente en los inicios del desarrollo de software , cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware , altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados. Orientación de los lenguajes de programación hacia lo científico

Lenguaje ensamblador

Embed Size (px)

Citation preview

Page 1: Lenguaje ensamblador

Lenguaje ensambladorEl lenguaje ensamblador, o assembler (assembly language en inglés) es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. 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. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que, idealmente son portables.

Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. 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. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.

Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y son llamados macro ensambladores.

Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido.

Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.

Orientación de los lenguajes de programación hacia lo científico

Lenguaje de Programación FORTRAN

Su nombre proviene del ingles de: FORmula TRANslator. Es un lenguaje de programación para el desarrollo de aplicaciones matemáticas y científicas, fue el primer lenguaje de programación de alto nivel. Estos lenguajes de alto nivel tienen entre otras las ventajas que pueden utilizarse en cualquier computadora y son más afines al lenguaje humano.

Uno de los lenguajes de programación orientado a procedimientos es el FORTRAN. Un lenguaje orientado a procedimiento es aquel en el que el programador al escribir el programa lo hace con un orden determinado para resolver el problema. Estos lenguajes tienen la ventaja de que con una sola instrucción propia hacen referencia a varias del lenguaje de máquina.

El FORTRAN nace en los años 50, se utiliza principalmente para aplicaciones científicas y el análisis numérico. Durante toda su vida ha pasado por varias versiones, inicialmente fue un lenguaje imperativo, actualmente en sus últimas versiones comprobamos que es un lenguaje de programación orientado a objetos y a procedimientos.

Page 2: Lenguaje ensamblador

El FORTRAN fue bien acogido en la comunidad científica por su excelente rendimiento en todo este tipo de aplicaciones. Por ello lo utilizaron para el desarrollo de programas de cómputo intensivo. Posteriormente se le incluyo la aritmética de números complejos lo mejoro notablemente.

Algunos expertos opinan que el FORTRAN se acabará extinguiendo, pero comprobamos que actualmente se sigue usando. Una de las razones por la que aun no se ha extinguido es porque a las compañías que han invertido muchísimo dinero en el desarrollo de un determinado software, no les es rentable traducirlo a otro lenguaje de programación porque es una labor muy tediosa y cara.

Pascal (lenguaje de programación)Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipado. Esto implica que:

1. El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.

2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.

El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.

Características únicas

Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.

C (lenguaje de programación)C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como

Page 3: Lenguaje ensamblador

estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.

Propiedades

Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).

Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples

archivos de código fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue

pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros. Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y

polimorfismo. Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un

id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").

Hacia lo comercial

Visual FoxProSaltar a: navegación, búsqueda

Visual FoxPro

Autor

Microsoft Corporation

http://msdn.microsoft.com/vfoxpro

Información general

Lanzamiento

inicial21 de junio de 1995 (info)

Última versión

estable

Visual FoxPro 9.0 Service Pack 2 (SP2)

(info)

11 de octubre de 2007; hace 4 años

GéneroLenguaje de programación de base de

datos

Sistema

operativoMicrosoft Windows

Page 4: Lenguaje ensamblador

Plataformax86 y superior

PowerPC (VFP 3.0 para Mac)

Licencia Microsoft EULA

Estado actual Con soporte

Idiomas

IDE: Inglés, Alemán, Español

Runtime: Adicionalmente a los ya

mencionados, Francés, Chino, Ruso,

Checo, Coreano

En español

Visual FoxPro es un lenguaje de programación procedural, orientado a objetos que posee un Sistema Gestor de Bases de datos o Database Management System (DBMS) y Sistema administrador de bases de datos relacionales, producido por Microsoft.

Características

Visual FoxPro ofrece a los desarrolladores un conjunto de herramientas para crear aplicaciones de bases de datos para el escritorio, entornos cliente/servidor, tablet PC o para la Web.

Entre sus características se pueden enumerar:

Capacidades para el manejar datos nativos y remotos. Flexibilidad para crear soluciones de bases de datos. Lenguaje de Programación Orientado a objetos. Utilización de Sentencias SQL en forma nativa. Manejo de vistas, cursores y control completo de estructuras relacionales. Su propio gestor de base de datos incorporado. Sin embargo, también puede conectarse con servidores de

base de datos, tales como Oracle, Microsoft SQL Server o MySQL. Cuenta con un motor de generación de informes renovado y flexible para soluciones más robustas. Desde la versión 9.0, amplio soporte de XML, tanto como fuente de datos (por ej., servicios Web basados en

XML) como por generar reportes en formato XML.

La última versión liberada es la 9.0. Esta cuenta con el SP1 y el (más reciente) SP2 (en inglés) en los que hay algunas nuevas características y especialmente brindan estabilidad al producto.

Una empresa llamada etecnologia "www.etecnologia.net" ha desarrollado el .NET EXTENDER que permite utilizar el .net framework en Visual FoxPro, y han anunciado que a finales del 2009 van a sacar su "VFP Developer Studio" herramienta que convierte a VFP en un lenguaje .Net. A 31 de mayo del 2009, este producto ya soporta el 92% de los comandos y funciones de VFP y se puede comprar por $250.00.

En la actualidad, a pesar de que Microsoft ha decicido no continuar con Microsoft Visual FoxPro, existe una comunidad de desarrolladores que sigue trabajando en él, PortalFox y Mundo Visual FoxPro son las más importantes entre los desarrolladores de habla hispana.

Visual Basic

Page 5: Lenguaje ensamblador

Visual Basic es un lenguaje de programación dirigido por eventos, desarrollado por Alan Cooper para Microsoft. Este lenguaje de programación es un dialecto de BASIC, con importantes agregados. Su primera versión fue presentada en 1991, con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas y, en cierta medida, también la programación misma.

La última versión fue la 6, liberada en 1998, para la que Microsoft extendió el soporte hasta marzo de 2008.

En 2001 Microsoft propuso abandonar el desarrollo basado en la API Win32 y pasar a un framework o marco común de librerías, independiente de la versión del sistema operativo, .NET Framework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fácil transición de código entre ellos); fue el sucesor de Visual Basic 6.

Aunque Visual Basic es de propósito general, también provee facilidades para el desarrollo de aplicaciones de bases de datos usando Data Access Objects, Remote Data Objects, o ActiveX Data Objects.

Visual Basic (Visual Studio) contiene un entorno de desarrollo integrado o IDE que integra un editor de textos para edición del código fuente, un depurador, un compilador (y enlazador) y un editor de interfaces gráficas o GUI.

Características

Los compiladores de Visual Basic generan código que requieren una o más librerías de enlace dinámico para que funcione, conocidas comúnmente como DLL (sigla en inglés de dynamic-link library); en algunos residente en el archivo llamado MSVBVMxy.DLL (siglas de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la versión) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime X.XX"). Estas DLL proveen las funciones básicas implementadas en el lenguaje, conteniendo rutinas en código ejecutable que son cargadas bajo demanda en tiempo de ejecución. Además existe un gran número de bibliotecas del tipo DLL, por ejemplo las que facilitan el acceso a la mayoría de las funciones del sistema operativo o también las que proveen funciones para la integración con otras aplicaciones.

En el Entorno de desarrollo integrado (IDE) de Visual Basic se puede ejecutar el programa que esté desarrollándose, es decir en modo intérprete (en realidad pseudo-compila el programa muy rápidamente y luego lo ejecuta, simulando la función de un intérprete puro). Desde ese entorno también se puede generar el programa en código ejecutable (exe). Ese programa así generado en disco puede luego ser ejecutado fuera del ambiente de programación (incluso en modo stand alone), aunque será necesario que las librerías DLL requeridas se encuentren instaladas en el sistema para posibilitar su ejecución.

Visual Basic provee soporte para empaquetado y distribución, es decir, permite generar un módulo instalador que contiene el programa ejecutable y las bibliotecas DLL necesarias para su ejecución. Con ese módulo la aplicación desarrollada se distribuye y puede ser instalada en cualquier equipo (que tenga un sistema operativo compatible).

Así como bibliotecas DLL, hay numerosas aplicaciones desarrolladas por terceros que permiten disponer de variadas y numerosas funciones y mejoras para Visual Basic, incluyendo algunas para empaquetado y distribución, y hasta para otorgar mayor funcionalidad a mismo entorno de programación (IDE).

Hacia lo general

Page 6: Lenguaje ensamblador

Logo (lenguaje de programación)Logo es un lenguaje de programación de alto nivel, en parte funcional, en parte estructurado; de muy fácil aprendizaje, razón por la cual suele ser el lenguaje de programación preferido para trabajar con niños y jóvenes. Fue diseñado con fines didácticos por Danny Bobrow, Wally Feurzeig y Seymour Papert, los cuales se basaron en las características del lenguaje Lisp. A pesar de que Logo no fue creado con la finalidad de usarlo para enseñar programación, puede usarse para enseñar la mayoría de los principales conceptos de la programación, ya que proporciona soporte para manejo de listas, archivos y entrada/salida.

Papert desarrolló un enfoque basado en su experiencia con Piaget a principios de los sesenta. Fundamentalmente consiste en presentar a los niños retos intelectuales que puedan ser resueltos mediante el desarrollo de programas en Logo. El proceso de revisión manual de los errores contribuye a que el niño desarrolle habilidades metacognitivas al poner en práctica procesos de autocorrección. Es conocido por poder manejar con facilidad gráficas tortuga, listas, archivos y recursividad.

Logo es uno de los pocos lenguajes de programación con instrucciones en español en algunos intérpretes, entre ellos: FMSLogo, LogoWriter, WinLogo, Logo Gráfico, XLogo, MSWLogo y LogoEs. Logo tiene más de 180 intérpretes y compiladores, según constan en el proyecto "Logo Tree".

XLogo, MSWLogo y LogoES tienen la particularidad de ser además software libre.

BASICSaltar a

En la programación de computadoras, el BASIC, siglas de Beginner's All-purpose Symbolic Instruction Code,1 es una familia de lenguajes de programación de alto nivel. El BASIC original, el Dartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, Estados Unidos, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias. En ese tiempo, casi todo el uso de los computadores requería codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formación como científicos y matemáticos. BASIC originalmente fue desarrollado como una herramienta de enseñanza. El lenguaje y sus variantes llegaron a estar ampliamente disponibles en los microcomputadores a finales de los años 1970 y en los años 1980. El BASIC sigue siendo popular hasta el día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual Basic o Gambas en GNU/Linux. Por el año 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su único lenguaje.

Disponibilidad y variantes del lenguaje

BASIC está disponible para casi todas las plataformas y sistemas operativos existentes. Una implementación gratuita que cumple con estándares y es multiplataforma es Bywater BASIC (bwBASIC). El intérprete está escrito en C y viene bajo la licencia GNU. Está diseñado para interfaz de texto o consola (no gráfica), no incluye soporte para crear interfaces gráficas de usuario (GUI's, Graphical User Interface). Hay un BASIC gratuito que si incluye soporte para GUI, es similar a Visual Basic y se ejecuta en Windows y GNU/Linux, es Phoenix Object BASIC.

Las versiones de intérpretes/compiladores más conocidos son la línea de productos Quick BASIC y QBASIC, éste último es sólo intérprete, ambos son de Microsoft. En la actualidad lo es el moderno Visual BASIC, que Microsoft ha tratado de mantener al menos mínimamente compatible con incluso las primeras versiones de sus BASIC (en realidad es escasamente compatible), si bien existe FreeBASIC que es un compilador libre, compatible en sintaxis con QBASIC/QuickBASIC.

Page 7: Lenguaje ensamblador

Otras versiones comerciales incluyen PowerBASIC de PowerBASIC, PureBasic de Fantaisie Software, así como TrueBASIC de TrueBASIC, que cumple con los últimos estándares oficiales de BASIC. (True BASIC Inc. fue fundada por los creadores originales de Dartmouth BASIC.)

REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft Windows y GNU/Linux, comercializada por los actuales propietarios de Rapid-Q, otra implementación inicialmente libre de BASIC actualmente abandonada. Una versión de un dialecto simple de BASIC para la parrot virtual machine, muestra cómo se implementa un intérprete de BASIC en un lenguaje similar al ensamblador. SmallBASIC es un dialecto que ejecuta en muchas plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia GNU (GPL).

Existen muchas implementaciones de BASIC freeware o GNU, como BCX, YaBasic, HBasic, XBasic, Gambas o Just BASIC, entre otras.

Diferencia Del Algoritmo y lenguaje de programacion Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) un algoritmo. Nótese que es la secuencia de instrucciones en sí (la ejecución) la que debe ser finita, no el número de pasos realizados.

Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa.

Según Niklaus Wirth, un programa está formado por algoritmos y estructura de datos.

Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:

* programación estructurada* programación modular* programación orientada a objetos (POO)

* programación declarativa