The Internet belongs to everyone. Let’s keep it that way.

Protect Net Neutrality
Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

LENGUAJE ENSAMBLADOR

Lenguaje Imperativo
by

ANGEL RODRIGUEZ

on 2 April 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of LENGUAJE ENSAMBLADOR

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. HISTORIA Los lenguajes ensambladores fueron primero desarrollados en los años 1950, cuando fueron referidos como lenguajes de programación de segunda generación. Por ejemplo, el SOAP (Symbolic Optimal Assembly Program) era un lenguaje ensamblador de 1957 para el computador IBM 650. Los lenguajes ensambladores eliminaron mucha de la propensión a errores y del consumo de tiempo de la programación de los lenguajes de primera generación que se necesitaba con los primeros computadores, liberando a los programadores del tedio tal como recordar códigos numéricos y cálculo de direcciones Históricamente, un gran número de programas han sido escritos enteramente en lenguaje ensamblador. Los sistemas operativos fueron casi exclusivamente escritos en lenguaje ensamblador hasta la aceptación ámplia del lenguaje de programación C en los años 1970 y principios de los 1980. También, muchas aplicaciones comerciales fueron escritas en lenguaje ensamblador, incluyendo una gran cantidad del software escrito por grandes corporaciones para mainframes de IBM. Los típicos ejemplos de programas grandes en lenguaje ensamblador de ese tiempo son los sistemas operativos IBM PC DOS y aplicaciones tempranas tales como la hoja de cálculo Lotus 1-2-3, y casi todos los juegos populares para la familia Atari 800 de computadores personales. Incluso en los años 1990, la mayoría de los videojuegos de cónsola fueron escritos en ensamblador, incluyendo la mayoría de los juegos para la Mega Drive/Genesis y el Super Nintendo Entertainment System Según algunos insiders de la industria, el lenguaje ensamblador era el mejor lenguaje de programación a usar para obtener el mejor desempeño del Sega Saturn, una cónsola para la cual era notoriamente desafiante desarrollar y programar juegos.8 El popular juego de arcade NBA Jam (1993) es otro ejemplo. USO ACTUAL Han habido siempre debates sobre la utilidad y el desempeño del lenguaje ensamblador relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene nichos específicos donde es importante (ver abajo). Pero, en general, los modernos compiladores de optimización[cita requerida] para traducir lenguajes de alto nivel en código que puede correr tan rápidamente como el lenguaje ensamblador escrito a mano, a pesar de los contraejemplos que pueden ser encontrados Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje ensamblador. Por ejemplo cuando: interactuando directamente
con el hardware,
por ejemplo en drivers de dispositivo
y manejadores de interrupción usando instrucciones específicas del
procesador no explotadas o disponibles por el compilador. Un ejemplo común es la
instrucción de rotación bitwise en
el núcleo de muchos algoritmos de cifrado no existe ningún lenguaje de
alto nivel, en un procesador
nuevo o especializado, por ejemplo es requerido control total sobre
el ambiente, en situaciones de
seguridad extremadamente alta
donde nada puede darse por
sentado. se hace ingeniería inversa en
binarios existentes que pueden
o no haber sido escritos
originalmente en un lenguaje
de alto nivel, por ejemplo al
crackear la protección anticopia
del software propietario VIDEO TIPOS DE LENGUAJE Ensambladores Cruzados
(Cross-Assembler). Se denominan así los ensambladores que
se utilizan en una computadora que
posee un procesador diferente al que
tendrán las computadoras donde va a
ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios físicos
(discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas
potentes para desarrollar programas que
luego los van a ejecutar sistemas muy especializados en determinados tipos de
tareas Ensambladores Residentes Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecución, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se hacía en cross-assembler, y sin necesidad de programas simuladores. Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, también ocupará memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Macroensambladores. Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto Microensambladores. Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un
determinado código de operación. Ensambladores de una fase. Estos ensambladores leen una línea del programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina o la ejecuta si se trata de una pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van apareciendo las definiciones de variables, etiquetas ENSAMBLADO 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. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. Sin embargo, en algunos casos, 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 Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de mnemónicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador para la arquitectura x86, se puede expresar la instrucción para mover 5 al registro AL de la siguiente manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresaría al revés: MOV 5, AL. EJEMPLOS Por ejemplo, en el lenguaje ensamblador para un procesador x86:

La sentencia
MOV AL, 061h

Asigna el valor hexadecimal 61 (97 decimal) al registro "AL".

El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de máquina
Binario: 10110000 01100001 (hexadecimal: B061) 10110 000 01100001
| | |
| | +---- Número 61h en binario
| |
| +--- Registro AL
+-------- Instrucción MOV

En el segundo byte se especifica el número 61h, escrito en binario como 01100001, que se asignará al registro AL, quedando la sentencia ejecutable como:
10110000 01100001

La cual puede ser entendida y ejecutada directamente por el procesador. DISEÑO DEL LENGUAJE Un típico lenguaje ensamblador consiste en 3 tipos de sentencias de instrucción que son usadas para definir las operaciones del programa:
Mnemónicos de opcode
Secciones de datos
Directivas de ensamblador IST P=16F877
INCLUDE "P16F877.INC"
__CONFIG H'3D39'

ORG 0X00
GOTO INICIO

INICIO BSF STATUS,RP0
MOVLW .6
MOVWF ADCON1
CLRF TRISC
BCF STATUS,RP0

CERO MOVF PORTB,W
XORLW B'00000001'
BTFSS STATUS,Z
GOTO UNO
MOVLW B'01000000'
MOVWF PORTC
GOTO CERO FIN
Full transcript