martes, 30 de agosto de 2016

IDE'S PARA PROGRAMAR EN LENGUAJE ENSAMBLADOR

1. WinAsm

WinAsm Studio es un entorno de desarrollo integrado (IDE) gratuito para desarrollar programas en Windows 32-bit y DOS 16-bit utilizando Microsoft Macro Assembler MASM y FASM utilizando el Add-In para FASM. Ha sido escrito por Antonis Kyprianou (akyprian). 
Más información aquí (Web oficial): http://www.winasm.net/

2. Easy Code

Entorno visual de desarrollo en lenguaje ensamblador.

Easy Code es el entorno visual de programación en ensamblador hecho para generar aplicaciones de 32 bits para Windows. La interfaz de Easy Code, muy parecida a la de Visual Basic, le permite programar una aplicación en ensamblador de manera rápida y fácil como nunca antes había sido posible.
Más información aquí (Web oficial): http://www.easycode.cat/Spanish/index.htm

3. RadASM

RadASM es un IDE gratuito para ensambladores de 32 bits para Windows.
Soporta MASM, TASM, FASM, NASM, GoASM y HLA
Más información aquí (Web oficial): http://www.radasm.com/

4. Fresh IDE
Es un IDE visual para el lenguaje ensamblador con un compilador integrado Flat assembler (FASM). Está escrito en Fresh IDE y es una aplicación independiente compilable. Es totalmente compatible con FASM y puede ser compilado también con todas las versiones de FASM. El objetivo principal de Fresh IDE es hacer la programación en ensamblador tan rápido y eficiente como en los lenguajes de alto nivel, sin sacrificar el tamaño de una pequeña aplicación que potencia el lenguaje ensamblador. Se trata de una aplicación Windows, pero se ejecuta en Wine muy bien y puede crear, compilar, depurar y ejecutar aplicaciones para Windows y Linux en Windows y Linux. Descarga aquí.

5. Assembler IDE

Se trata de un entorno de desarrollo para código ensamblador, cuyo propósito es automatizar al máximo este proceso integrando el editor de código, el depurador (debugger) y el desensamblador.

Entre las posibilidades que nos ofrece el entorno Assembler IDE, destacan la depuración de código (debugging), el editor de código, el desensamblador o la compilación con NASM, TASM/MASM y FASM.

Como puedes comprobar se trata de una herramienta de lo más completita.

Y no dejes que te intimide el hecho de que el programa Assembler IDE esté únicamente disponible con los textos que aparecen en pantalla en idioma inglés, ya que sus desarrolladores han diseñado una interfaz de usuario que resulta muy clara, sencilla e intuitiva, de tal manera que cualquiera que se ponga a los mandos de esta aplicación la encontrará de lo más accesible.

Y no queremos poner el punto y final a esta reseña sin mencionar el que, sin lugar a dudas, será uno de los aspectos más interesantes y atractivos del programa: su inmejorable precio. Y es que, como estamos ante una aplicación que se distribuye mediante licencia "freeware", podremos descargar Assembler IDE gratis. Descarga aquí.

Algunos IDE de paga:

1. Visual Studio Professional ($499.99 USD)

Visual Studio 2015 es un completo entorno de desarrollo integrado para crear aplicaciones espectaculares para Windows, Android e iOS, además de aplicaciones web y servicios de nube innovadores.
  • Herramientas y servicios para proyectos de cualquier tamaño o complejidad
  • C#, Visual Basic, F#, C++, Python, Node.js y HTML/JavaScript
  • Planificación de sprint
  • Depuración y creación de perfiles avanzadas, pruebas automatizadas y manuales
  • DevOps con implementaciones automatizadas y supervisión continua
2. Codelite ($39 USD)
wxcrafter logo

Existen muchos entornos de desarrollo dedicados a C/C++, pero este por un motivo u otro no es tan conocido como otras opciones libres como Codeblocks o Dev-C++. Hablamos de Codelite: Un IDE multiplataforma para C/C++.
El proyecto codelite ya lleva bastantes años desde que inicio su andadura y cada vez su comunidad es mayor y cuenta con más características. Está escrito en C++ (Como cabe esperar de un IDE para C++) y usa las bibliotecas wxWidgets para la interfaz. Lo que nos asegura un IDE multiplataforma y que se adapta visualmente a todos los sistemas operativos.

Intel 8086 y 8088

El Intel 8086 y el Intel 8088  son los primeros microprocesadores de 16 bitsdiseñados por Intel. Fueron el inicio y los primeros miembros de la arquitectura x86.
El 8086 y el 8088 ejecutan el mismo conjunto de instrucciones. Internamente son idénticos, excepto que el 8086 tiene una colade 6 bytes para instrucciones y el 8088 de sólo 4. Exteriormente se diferencian en que el 8086 tiene un bus de datos de 16 bits y el del 8088 es de sólo 8 bits, por ello, el 8086 era más rápido. Por otro lado, el 8088 podía usar menos circuitos lógicos de soporte, lo que permitía la fabricación de sistemas más económicos.
El 8088 fue el microprocesador usado para la primera computadora personal de IBM, la IBM PC, que salió al mercado en agosto de 1981


Registros

Los registros del i8086 e i8088 se basaron en el diseño del Intel 8080 y el Intel 8085, y de hecho son compatibles a nivel de lenguaje ensamblador con el i8080. El conjunto de registros también es similar al del i8080, pero ampliados a 16 bits. Tanto el i8086 como el i8088 tienen cuatro registros de propósito general de 16 bits, que también pueden ser accedidos como ocho registros de 8 bits, y tienen cuatro registros índice de 16 bits.Los registros del procesador, se usan para contener los datos con que se está trabajando puesto que el acceso a los registros es mucho más rápido que los accesos a memoria.

DESEMPEÑO

Aunque fue opacado en parte por otras opciones de diseño en este particular chip, el bus multiplexado limitaba el desempeño ligeramente; las transferencias de cantidades de 16 bits o de 8 bits fueron hechas en ciclos de acceso a memoria de cuatro ciclos del reloj, que comparado a los típicos CPU contemporáneos de 8 bits, era más rápido cantidades de 16 bits, aunque más lento en cantidades de 8 bits.
 La Unidad de Interface del Bus alimentó el flujo de instrucciones a la Unidad de Ejecución a través de una cola prefetch de 6 bytes para el 8086 y 4 bytes para el 8088 acelerando operaciones en los registros y con los operandos inmediatos, mientras que las operaciones de memoria desafortunadamente llegaron a ser más lentas; cuatro años más tarde, este problema de desempeño fue corregido con el 8018680188, y el 80286.
Sin embargo, el 8086 y el 8088 vinieron con una completa arquitectura de 16 bits, con una ALU de ancho completo, significando que las instrucciones aritméticas de 16 bits ahora podían ser realizadas en un simple ciclo del ALU, en vez de los dos ciclos usando acarreo usadas por el 8080 y el 8085, acelerando tales instrucciones considerablemente.



lunes, 29 de agosto de 2016

SASM (SimpleASM) IDE*



Sencilla IDE multiplataforma de código abierto para NASM, MASM, GAS, lenguajes ensambladores FASM.
En SASM se puede desarrollar fácilmente y ejecutar programas escritos en NASM, MASM, gas o lenguajes ensambladores FASM.
Ingresa código y sólo tiene que ejecutar su programa. En Windows SASM puede ejecutar programas en ventana separada. Introduzca sus datos de entrada en el campo de acoplamiento "de entrada". En el campo "Salida" se puede ver el resultado de la ejecución del programa. En el que todos los mensajes y errores de compilación se muestran en el formulario de la parte inferior. Puede guardar fuente o ya compilado (exe) código de su programa en un archivo y cargar sus programas de archivo.
SASM apoya el trabajo con muchos proyectos abiertos - nuevos archivos se abren y se crean en nuevas pestañas. A la salida de SASM conjunto actual de archivos abiertos guardados. En el siguiente arranque se puede restaurar la sesión anterior. En la configuración se puede establecer la fuente, los colores y el texto inicial. SASM se traduce en Ruso e Inglés. Todas las ventanas de diálogo en SASM se está acoplando - se puede elegir uno de los muchos puestos de ellas de posición. También es posible reasignar las teclas de acceso rápido.
SASM soporta trabajar con 4 lenguajes ensambladores - NASM, MASM, GAS y FASM en 2 modos - x64 y x86.
Usted puede elegir el modo de configuración de la pestaña "Build". También allí se puede cambiar las opciones de ensamblador y enlazador y elegir programas para el montaje y la vinculación.


SASM

miércoles, 24 de agosto de 2016

LENGUAJE MAQUINA

El lenguaje de máquina o código máquina es el sistema de códigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de unautómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones más un conjunto de datos sobre el cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de la arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas.

COMPILADOR



Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje diferente. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.

CODIGO FUENTE

El código fuente de un programa informático (o software) es un conjunto de líneas de texto con los pasos que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está escrito por completo su funcionamiento.
El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje o código binario; así será más fácil para la máquina interpretarlo (lenguaje máquina o código objeto que sí pueda ser ejecutado por el hardwarede la computadora). Para esta traducción se usan los llamados compiladoresensambladoresintérpretes y otros sistemas de traducción.
El término código fuente también se usa para hacer referencia al código fuente de otros elementos del software, como por ejemplo el código fuente de una página web que está escrito en lenguaje de marcado HTML o en Javascript, u otros lenguajes de programación web, y que es posteriormente ejecutado por el navegador web para visualizar dicha página cuando es visitada.

Tipos de lenguajes

Lenguajes de bajo nivel
Código máquina
Ensamblador
Lenguajes de medio nivel
BCPL
C
Lenguajes de alto nivel
ADA
ALGOL
BASIC
Clipper
Cobol
C++
FORTH
Fortran
Haskell
Informix 4gl
Java
Lexico (con códigos en castellano o sinónimos en otros idiomas)
Lisp
Logo
Modula
PASCAL
Prolog
RPG
Visual Basic

Curso Ensamblador 001

Bajo Nivel:
Un lenguaje de programacion de características bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere a la reducida abstraccion entre el lenguaje y el hardware. Por ejemplo, se utiliza este tipo de lenguajes para programar tareas críticas de los sistemas operativos , de aplicaciones en tiempo real o controladores de dispositivos.

 Nivel Medio:
Se dice del lenguajes de programación como C, que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel. Estos lenguajes son clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.

Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de llamar a las funciones correspondientes).



 Nivel Alto:
Son tipos de lenguajes de programacion que permite al programador escribir programas que son mas om enos independientes de un tipo particular de computadora. Estos lenguajes son considerados de alto nivel, porque son mas parecidos al lenguaje natural humano y mas lejanos al lenguaje de las maquinas, la principal ventaja de los lenguajes de alto nivel sobre los de bajo nivel es que son mas faciles de leer, escribir y mantener por los humanos. Al final los programas escritos en alto nivel deben ser traducidos en un lenguaje maquina especifico empleando un compilador o un interprete. De esta manera pueden ser ejecutados por una maquina especifica






lunes, 22 de agosto de 2016

DEFINICION DE IDE (Entorno de desarrollo integrado)

Un entorno de desarrollo integrado entorno de desarrollo interactivo, en inglés Integrated Development Environment (IDE), es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software.
Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDE tienen auto-completado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus.
El límite entre un IDE y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.

VERSIONES DE LENGUAJE ENSAMBLADOR

ENSAMBLADORES CRUZADOS: permiten el soporte de medios fisicos como pantallas, impresoras, teclado, etc. y la programacion que ofrecen maquinas potentes que luego seran ejecutados en sistemas especializados.

ENSAMBLADORES RESIDENTES: permanecen en la memoria de la computadora, y cargan para su ejecucion
 al programa objeto producido. es el indicado para el desarrollo de pequeños sistemas de control.

MACROENSAMBLADORES: permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una ves que se a genereado el codigo objeto, normalmete son programas complejos y residentes.

MICROENSAMBLADORES: Indica al interprete las instrucciones de como debe actuar la CPU.

ENSAMBLADORES DE UNA FASE: leen una linea de programa fuente y la traducen directamente para producir una instruccion en lenguaje maquina, estos ensambladores son sencillos, baratos y coupan poco espacio.

ENSAMBLADORES DE DOS FASES: se llaman asi por que realizan la traduccion en dos etapas, en la primera fase revisan el codigo fuente y lo construyen en una tabla de simbolos, en la segunda fase vuelven a leer el programa fuente y pueden tradirlo por completo. estos ensabladores son los mas utilizados en la actualidad.

DEFINICION DE LENGUAJE ENSAMBLADOR

El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es unlenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadoresmicroprocesadoresmicrocontroladores 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 de processador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cadaarquitectura de processador tiene su propio lenguage ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (lasinstrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de 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 sonportátiles.