Вы находитесь на странице: 1из 35

INSTITUTO DE ESTUDIOS

SUPERIORES DE CHIAPAS
Salazar Narváez

Ing. en Sistemas Computacionales

CHACÓN AGUIRRE PAULINA


YANNETH
Asignatura:
Lenguaje
Ensamblador
Catedrático:
4to Lic. Enrique Martínez
Introducci
ón
En la siguiente presentación hablaremos un poco del Modelo de John
von Neumann el cual se usa hoy día para describir los lenguajes de
programación convencionales y es la base de prácticamente todos los
modelos de ordenadores.

Así también se hablara de los lenguajes de programación, su


clasificación y dentro de los cuales encontraremos al lenguaje
ensamblador que es un lenguaje simbólico de bajo nivel con un
conjunto de instrucciones que esencialmente es ideal para el lenguaje
máquina.
Veremos cuales son sus ventajas y desventajas del lenguaje
ensamblador, también las aplicaciones y los tipos que existen.
Modelo de John von
Neumann
Un poco de Historia.

John von Neumann acudió al Istitute of Advenced Studies de Princeton


para construir su propia versión de EDVAC, la máquina IAS.

Una cosa que pronto fue obvia para él era que programar
computadoras con un gran número de interruptores era lento, tedioso
e inflexible. Von Neumann se dio cuenta de que el programa podía
reprensarse en forma digital en la memoria de la computadora, junto
con los datos. Él percibió también que la torpe aritmética decimal en
serie utilizada por ENIAC, en la que cada dígito estaba representada
por 10 bulbos (uno encendido y nueve apagado) podía ser sustituida
por una aritmética binaria.

El diseño básico, que el describió por primera vez, ahora se le conoce


como máquina de von Neumann
Bosquejo de la
arquitectura

Memoria

Entrada

Unidad de
Unidad aritmética
control
Lógica. Salida

Acumulad
or

La original máquina de von


Neumann
La máquina de von Neumann tenía cinco partes básicas:

La memoria: constaba de 4096 palabras, cada una de las cuales


contenía 40 bits que podían ser 1 o 0. cada palabra contenía dos
instrucciones de 20 bits o bien un entero con signo de 40 bits. Ocho
bits de cada instrucción estaban dedicados a indicar el tipo de
instrucción y 12 bits se dedicaban a especificar una de las 4096
palabras de memoria.

La unidad aritmética: dentro de aquí había un registro interno de 40


bits llamado acumulador. Una instrucción típica sumaba una palabra
de la memoria al acumulador o almacenaba el contenido del
acumulador a la memoria.

La unidad de control.

Y el equipo de entrada y salida.


Modelo de John von
Neumann.

Durante su ejecución, los programas únicamente pretenden “modificar


la memoria”. Debemos conocer las localizaciones de los datos antes
de ejecutar los programas para recoger después los resultados. Esto
es internamente patente en el funcionamiento y la semántica de los
lenguajes de programación convencionales. En estos lenguajes de
programación la instrucción más importante es la de asignación.
Todos los lenguajes de programación convencionales disponen de
modos de asignación más o menos significativos.

Las computadoras con este diseño también permiten a los programas


modificarse a sí mismos mientras se ejecutan, efectivamente
permitiendo a la computadora programarse a si misma.
Un ordenador con arquitectura Von Neumann realiza los siguientes
pasos secuencialmente:

3. Obtiene la siguiente instrucción desde la memoria en la dirección


indicada por el contador de programa y la guarda en el registro de
instrucción.

5. Aumenta el contador de programa en la longitud de la instrucción


para apuntar a la siguiente.

7. Decodifica la instrucción mediante la unidad de control. Esta se


encarga de coordinar el resto de componentes del ordenador para
realizar una función determinada.

9. Se ejecuta la instrucción. Ésta puede cambiar el valor del contador


del programa, permitiendo así operaciones repetitivas. El contador
puede cambiar también cuando se cumpla una cierta condición
aritmética, haciendo que el ordenador pueda 'tomar decisiones',
que pueden alcanzar cualquier grado de complejidad, mediante la
aritmética y lógica anteriores.

11. Vuelve al paso 1.


Lenguajes de
programación
A CADA instrucción le
corresponde UNA acción
del procesador.
Lenguaje de programación:

Es un conjunto de símbolos y reglas sintácticas y semánticas que


definen su estructura y el significado de sus elementos y expresiones,
y utilizado para controlar el comportamiento físico y lógico de una
máquina.

Código que permite la comunicación con el hardware para la ejecución


de órdenes.

Los lenguajes de programación se clasifican en:

 Según su nivel de abstracción


 Según la forma de ejecución
 Según el paradigma de programación
Según su nivel de
abstracción
Lenguaje de Maquina

El lenguaje máquina es el único que entiende directamente la


computadora, utiliza el alfabeto binario que consta de los dos únicos
símbolos 0 y 1, denominados bits.

Fue el primer lenguaje utilizado en la programación de computadoras,


pero dejó de utilizarse por su dificultad y complicación, siendo
sustituido por otros lenguajes más fáciles de aprender y utilizar, que
además reducen la posibilidad de cometer errores.
Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca
o ninguna abstracción del microprocesador de un ordenador.
Consecuentemente es fácilmente trasladado a lenguaje de máquina.
La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje
de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el
hardware.

El lenguaje de bajo nivel por excelencia es el ensamblador. Las


instrucciones en lenguaje ensamblador son instrucciones conocidas
como nemotécnicos. Por ejemplo, nemotécnicos típicos de
operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en
español, SUM, RES ,DIV, etc.
Un programa escrito en lenguaje ensamblador no puede ser
ejecutado directamente por la computadora en esto se diferencia
esencialmente del lenguaje máquina, sino que requiere una fase
de traducción al lenguaje máquina.

El programa original escrito en lenguaje ensamblador se denomina


programa fuente y el programa traducido en lenguaje máquina se
conoce como programa objeto, ya directamente entendible por la
computadora.

El traductor de programas fuente a objeto es un programa llamado


ensamblador, existente en casi todos los computadores.
Lenguajes de medio nivel
Hay lenguajes de programación que son considerados por algunos
expertos como lenguajes de medio nivel (como es el caso del lenguaje
C) al tener ciertas características que los acercan a los lenguajes de
bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo
hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.
Lenguaje de alto nivel.

Se caracterizan por expresar los algoritmos de una manera adecuada


a la capacidad cognitiva humana, en lugar de a la capacidad
ejecutora de las máquinas. la limitación era que se orientaban a un
área específica y sus instrucciones requerían de una sintaxis
predefinida.

Se clasifican como lenguajes procedimentales. Otra limitación de los


lenguajes de alto nivel es que se requiere de ciertos conocimientos
de programación para realizar las secuencias de instrucciones lógicas.

Los lenguajes de muy alto nivel se crearon para que el usuario común
pudiese solucionar tal problema de procesamiento de datos de una
manera más fácil y rápida.
Según la forma de
ejecución
Lenguaje compilado

Es término un tanto impreciso para referirse a un lenguaje de


programación que típicamente se implementa mediante un compilador.
Esto implica que una vez escrito el programa, éste se traduce a partir
de su código fuente por medio de un compilador en un archivo
ejecutable para una determinada plataforma por ejemplo Solaris para
Sparc, Windows NT para Intel, etc..

Los lenguajes compilados son lenguajes de alto nivel en los que las
instrucciones se traducen del lenguaje utilizado a código máquina para
una ejecución rápida.
Lenguaje interpretado
Fue diseñado para ser ejecutado por medio de un intérprete, en
contraste con los lenguajes compilados. También se les conoce como
lenguajes de script. Muchos autores rechazan la clasificación de
lenguajes de programación entre interpretados y compilados,
considerando que el modo de ejecución (por medio de intérprete o de
compilador) del programa escrito en el lenguaje es independiente del
propio lenguaje.
Los lenguajes que suelen ser interpretados algunos de ellos son:

 ActionScript
 Basic4GL (Basic para OpenGL. Permite generar ejecutables Windows
completos)
 BeanShell (Java en lenguaje de Scripts)
 GML
 JavaScript (todas las plataformas)
 Logo (Linux, Windows y Mac)
 Lush (Lisp para gráficos Linux)
 PHP
 Python (todas las plataformas)
 Ruby
Según el paradigma
de programación
Un paradigma de programación representa un enfoque particular o
filosofía para la construcción del software. No es mejor uno que otro,
sino que cada uno tiene ventajas y desventajas. Dependiendo de la
situación un paradigma resulta más apropiado que otro.

Atendiendo al paradigma de programación, se pueden clasificar los


lenguajes en:

 El paradigma imperativo o por procedimientos son un


conjunto de instrucciones que le indican a la computadora cómo
realizar una tarea y es considerado el más común y está
representado, por ejemplo, por el C o por BASIC.

 El paradigma funcional es un paradigma de programación


declarativa basado en la utilización de funciones matemáticas y está
representado por la familia de lenguajes LISP (en particular
Scheme), ML o Haskell.

 El paradigma lógico consiste en la aplicación del corpus de


conocimiento sobre lógica para el diseño de lenguajes de
programación, un ejemplo es PROLOG.

 El paradigma orientado a objetos usa objetos y sus


Lenguaje Ensamblador
Definición:
Es un tipo de lenguaje de bajo nivel utilizado para escribir programas
informáticos, y constituye la representación más directa del código
máquina específico para cada arquitectura de computadoras legible
por un programador.

Fue usado ampliamente en el pasado para el desarrollo de software,


pero actualmente sólo se utiliza en contadas ocasiones, especialmente
cuando se requiere la manipulación directa del hardware o se
pretenden rendimientos inusuales de los equipos.
Ventajas y Desventajas
del Lenguaje
Ensamblador
Ventajas
1.     Velocidad .- Como trabaja directamente con el microprocesador
al ejecutar un programa, pues como este lenguaje es el mas cercano a
la máquina la computadora lo procesa mas rápido.

2.     Eficiencia de tamaño .- 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.     Flexibilidad .- Es flexible porque todo lo que puede hacerse con


una máquina, puede hacerse en el lenguaje ensamblador de esta
máquina; los lenguajes de alto nivel tienen en una u otra forma
limitantes para explotar al máximo los recursos de la máquina. 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

1. Tiempo de programación .- Como es un lenguaje de bajo nivel


requiere más instrucciones para realizar el mismo proceso, en
comparación con un lenguaje de alto nivel. Por otro lado, requiere de
más cuidado por parte del programador, pues es propenso a que los
errores de lógica se reflejen más fuertemente en la ejecución.

2. Programas fuente grandes .- Por las mismas razones que


aumenta el tiempo, crecen los programas fuentes; simplemente
requerimos más instrucciones primitivas para describir procesos
equivalentes. Esto es una desventaja porque dificulta el
mantenimiento de los programas, y nuevamente reduce la
productividad de los programadores.
3. Peligro de afectar recursos inesperadamente .- Que todo
error que podamos cometer, o todo riesgo que podamos tener,
podemos afectar los recursos de la maquina, programar en este
lenguaje lo más común que pueda pasar es que la máquina se
bloquee o se reinicialize. Porque con este lenguaje es perfectamente
posible (y sencillo) realizar secuencias de instrucciones inválidas, que
normalmente no aparecen al usar un lenguaje de alto nivel.

4. Falta de portabilidad .- Porque para cada máquina existe un


lenguaje ensamblador; por ello, 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.
Aplicaciones del
Lenguaje Ensamblador
El uso del lenguaje ensamblador no es para la gente común y
corriente, sino para profesionistas en el área de computación que
están obligados a conocer este lenguaje, ya que proporciona una
serie de características que no se pueden encontrar en los
lenguajes de alto nivel.

Algunas de estas características son:

• Se puede acceder a cualquier localidad de la memoria RAM sin


ninguna restricción.

• Se pueden programar virus, debido a que se tiene un acceso


total a casi todo el hardware de la computadora vía interrupciones
de software.

• Se pueden programar drivers de cualquier dispositivo.

• Se puede acceder directamente a los registros internos del CPU.


Se puede acceder directamente a los dispositivos de entrada y/o
salida.

Los programas objeto generados a través del ensamblador son mas


veloces que los generados en cualquier otro lenguaje, debido a que
Tipos de Lenguaje
Ensamblador
Algunos tipos son:

• Ensambladores básicos.
básicos Son de muy bajo nivel, y su tarea consiste
básicamente en ofrecer nombres simbólicos a las distintas
instrucciones, parámetros y cosas tales como los modos de
direccionamiento. Además, reconoce una serie de directivas que
indican ciertos parámetros de funcionamiento del ensamblador.

• Ensambladores modulares, o macro ensambladores.


ensambladores Hacen
todo lo que puede hacer un ensamblador, y además proporcionan una
serie de directivas para definir e invocar macroinstrucciones (o
simplemente, macros).

• Ensambladores modulares 32-bits o de alto nivel. Son


ensambladores que aparecieron como respuesta a una nueva
arquitectura de procesadores de 32 bits, muchos de ellos teniendo
compatibilidad hacia atrás pudiendo trabajar con programas con
estructuras de 16 bits. Además de realizar la misma tarea que los
anteriores, permitiendo también el uso de macros, permiten utilizar
• Ensambladores Cruzados, son los 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.

• 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.

• Ensambladores de dos fases. Los ensambladores de dos fases se


denominan así debido a que realizan la traducción en dos etapas. En la
primera fase, leen el programa fuente y construyen una tabla de
símbolos; de esta manera, en la segunda fase, vuelven a leer el
programa fuente y pueden ir traduciendo totalmente, puesto que
conocen la totalidad de los símbolos utilizados y las posiciones que se
les ha asignado. Estos ensambladores son los más utilizados en la
Conclusión
El modelo de von Neumann como se dijo consta de que partes que
son: memoria, unidad de control, unidad aritmética lógica, un
acumulador y los equipos de entra y salida. Aunque existen muchos
tipos de computadoras digitales según se tenga en cuenta su tamaño,
velocidad de proceso, complejidad de diseño físico, etc., los principios
fundamentales básicos de funcionamiento son esencialmente los
mismos en todos ellos.

Los lenguajes de programación son importantes ya que sin ellos no


existiría la interacción de la maquina con el usuario.

Y el lenguaje ensamblador es el lenguaje creado a base de


instrucciones para intentar sustituir el lenguaje máquina por uno más
similar al utilizado por el hombre.

Se espera que todo lo investigado sea de gran utilidad para


investigaciones futuras ya que son temas de gran utilidad.
Bibliografía
Libro
s. Titulo del libro: Titulo del libro:
Fundamentos de Programación. Organización de computadoras,
Autor: un enfoque estructurado.
Joyanes, Fernández Azuela Matilde , Autor:
Rodríguez Baena Luis Andrew S. Tanenbaum
Editorial. Editorial.
Mc Graw Hill. Mc Graw Hill.
Edición. Edición.
Primera Edición. Cuarta Edición.

Paginas
Web
http://www.todo-programacion.com.ar/archives/2005/04/lenguaje_de_m
http://es.wikipedia.org/wiki/Assembly
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
http://www.mitecnologico.com/Main/UsoAplicacionesLenguajeEnsambl
http://www.mitecnologico.com/Main/TiposLenguajesEnsambladores
http://es.wikipedia.org/wiki/Assembler#Tipos_de_ensambladores