SlideShare una empresa de Scribd logo
Instituto de estudios superiores
metropolitano
Carrera: Ing. En tecnología de la información.
Asignatura: lenguaje ensamblador
Catedrático: Ing. Juan Reynoso Hernández
Cuatrimestre: Tercer cuatrimestre.
Nombre del alumno: Edier Domínguez Espinosa.
Lenguaje ensamblador
1.1.- Introducción.
1.2.- Fundamentos de lenguaje ensamblador.
1.3.- El Microprocesador.
1.4.- Función del microprocesador en lenguaje ensamblador.
1.5.- Interrupciones.
1.6.- Estructura de un programa en lenguaje ensamblador.
1.7.- Procesamiento de ensamble, enlace y ejecución.
1.8.- Entorno de Programación.
1.9.- Evolución de Windows.
1.10.- Coclucion.
1.11.- Bibliografía.
1.1.- Introducción:
Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir,
de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban
como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno.
Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina, consistente en asociar a
los códigos de operación (OPCODES) palabras clave que faciliten su uso por parte del programador.
Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y
viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado,
la computadora no entiende directamente el Lenguaje Ensamblador; es necesario traducirle a Lenguaje
de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían
tablas de programa similares al ejemplo de la calculadora que vimos anteriormente. Pero, al ser tan
directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que
convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de
Máquina).
1.2.- Fundamentos de 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, micro controladores 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 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 son portátiles.
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 se llaman
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, alto rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el
desarrollo de controladores de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas
operativos, debido a la necesidad del acceso directo a las instrucciones de la máquina. Muchos
dispositivos programables (como los micros controladores) aún cuentan con el ensamblador como la
única manera de ser manipulados.
Importancia del lenguaje ensamblador
La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el
microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de
que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden
realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.
Ventajas y desventajas del Lenguaje Ensamblador
- Ventajas
1.- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este
lenguaje es el más 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 limitante para
explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer
tareas específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas
limitantes.
- 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 grande.
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 máquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se
bloquee o se reinicialicé. 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.
1.3.- Microprocesador.
La evolución del microprocesador
El microprocesador surgió de la evolución de distintas tecnologías predecesoras, básicamente de la
computación y de la tecnología de semiconductores. El inicio de esta última data de mitad de la década
de 1950; estas tecnologías se fusionaron a principios de los años 1970, produciendo el primer
microprocesador. Dichas tecnologías iniciaron su desarrollo a partir de la segunda guerra mundial; en
este tiempo los científicos desarrollaron computadoras específicas para aplicaciones militares. En la
posguerra, a mediados de la década de 1940, la computación digital emprendió un fuerte crecimiento
también para propósitos científicos y civiles. La tecnología electrónica avanzó y los científicos hicieron
grandes progresos en el diseño de componentes de estado sólido (semiconductores). En 1948 en los
laboratorios Bell crearon el transistor.
En los años 1950, aparecieron las primeras computadoras digitales de propósito general. Se fabricaron
utilizando tubos al vacío o bulbos como componentes electrónicos activos. Módulos de tubos al vacío
componían circuitos lógicos básicos, tales como compuertas y flip-flops. Ensamblándolos en módulos
se construyó la computadora electrónica (la lógica de control, circuitos de memoria, etc.). Los tubos de
vacío también formaron parte de la construcción de máquinas para la comunicación con las
computadoras.
Para la construcción de un circuito sumador simple se requiere de algunas compuertas lógicas. La
construcción de una computadora digital precisa numerosos circuitos o dispositivos electrónicos. Un
paso trascendental en el diseño de la computadora fue hacer que el dato fuera almacenado en
memoria. Y la idea de almacenar programas en memoria para luego ejecutarlo fue también de
fundamental importancia (Arquitectura de von Neumann).
La tecnología de los circuitos de estado sólido evolucionó en la década de 1950. El empleo del silicio
(Si), de bajo costo y con métodos de producción masiva, hicieron del transistor el componente más
usado para el diseño de circuitos electrónicos. Por lo tanto el diseño de la computadora digital se
reemplazó del tubo al vacío por el transistor, a finales de la década de 1950.
A principios de la década de 1960, el estado de arte en la construcción de computadoras de estado
sólido sufrió un notable avance; surgieron las tecnologías en circuitos digitales como: RTL (Lógica
Transistor Resistor), DTL (Lógica Transistor Diodo), TTL (Lógica Transistor Transistor), ECL (Lógica
Complementada Emisor).
A mediados de los años 1960 se producen las familias de circuitos de lógica digital, dispositivos
integrados en escala SSI y MSI que corresponden a baja y mediana escala de integración de
componentes. A finales de los años 1960 y principios de los 70 surgieron los sistemas a alta escala de
integración o LSI. La tecnología LSI fue haciendo posible incrementar la cantidad de componentes en
los circuitos integrados. Sin embargo, pocos circuitos LSI fueron producidos, los dispositivos de
memoria eran un buen ejemplo.
Las primeras calculadoras electrónicas requerían entre 75 y 100 circuitos integrados. Después se dio
un paso importante en la reducción de la arquitectura de la computadora a un circuito integrado simple,
resultando uno que fue llamado microprocesador, unión de las palabras «Micro» del griego μικρο-,
«pequeño», y procesador. Sin embargo, es totalmente válido usar el término genérico procesador, dado
que con el paso de los años, la escala de integración se ha visto reducida de micro métrica a
nanométrica; y además, es, sin duda, un procesador.
El primer microprocesador fue el Intel 4004,1 producido en 1971. Se desarrolló originalmente para una
calculadora y resultó revolucionario para su época. Contenía 2.300 transistores, era un
microprocesador de arquitectura de 4 bits que podía realizar hasta 60.000 operaciones por segundo
trabajando a una frecuencia de reloj de alrededor de 700 kHz.
El primer microprocesador de 8 bits fue el Intel 8008, desarrollado a mediados de 1972 para su uso en
terminales informáticos. El Intel 8008 integraba 3300 transistores y podía procesar a frecuencias
máximas de 800 kHz.
El primer microprocesador realmente diseñado para uso general, desarrollado en 1974, fue el Intel
8080 de 8 bits, que contenía 4500 transistores y podía ejecutar 200.000 instrucciones por segundo
trabajando a alrededor de 2 MHz.
El primer microprocesador de 16 bits fue el 8086, seguido del 8088. El 8086 fue el inicio y el primer
miembro de la popular arquitectura x86, actualmente usada en la mayoría de los computadores. El chip
8086 fue introducido al mercado en el verano de 1978, pero debido a que no había aplicaciones en el
mercado que funcionaran con 16 bits, Intel sacó al mercado el 8088, que fue lanzado en 1979.
Llegaron a operar a frecuencias mayores de 4 MHz.
El microprocesador elegido para equipar al IBM Personal Computer/AT, que causó que fuera el más
empleado en los PC-AT compatibles entre mediados y finales de los años 1980 fue el Intel 80286
(también conocido simplemente como 286); es un microprocesador de 16 bits, de la familia x86, que
fue lanzado al mercado en 1982. Contaba con 134.000 transistores. Las versiones finales alcanzaron
velocidades de hasta 25 MHz.
Uno de los primeros procesadores de arquitectura de 32 bits fue el 80386 de Intel, fabricado a
mediados y fines de la década de 1980; en sus diferentes versiones llegó a trabajar a frecuencias del
orden de los 40 MHz.
El microprocesador DEC Alpha se lanzó al mercado en 1992, corriendo a 200 MHz en su primera
versión, en tanto que el Intel Pentium surgió en 1993 con una frecuencia de trabajo de 66 MHz. El
procesador Alpha, de tecnología RISC y arquitectura de 64 bits, marcó un hito, declarándose como el
más rápido del mundo, en su época. Llegó a 1 GHz de frecuencia hacia el año 2001. Irónicamente, a
mediados del 2003, cuando se pensaba quitarlo de circulación, el Alpha aún encabezaba la lista de los
microprocesadores más rápidos de Estados Unidos.2
Los microprocesadores modernos tienen una capacidad y velocidad mucho mayores, trabajan en
arquitecturas de 64 bits, integran más de 700 millones de transistores, como es en el caso de las
serie Core i7, y pueden operar a frecuencias normales algo superiores a los 3 GHz (3000 MHz).
1.4.- Función del microprocesador en lenguaje ensamblador.
La Unidad Central de Proceso (CPU, por sus siglas en inglés) tiene 14 registros internos cada uno de
16 bits. Los primeros cuatro, AX, BX, CX y DX, son de uso general y se pueden usar también como
registros de 8 bits. Es decir, AX se puede dividir en AH y AL (AH es el byte alto, high, y AL es el byte
bajo, low) Lo mismo es aplicable a los otros tres (BX en BH y BL, CX en CH y CL y DX en DH y DL)
Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits)
Los registros de la CPU son conocidos por sus nombres propios, que son:
· AX (acumulador)
· BX (registro base)
· CX (registro contador)
· DX (registro de datos)
· DS (registro del segmento de datos)
· ES (registro del segmento extra)
· SS (registro del segmento de pila)
· CS (registro del segmento de código)
· BP (registro de apuntadores base)
· SI (registro índice fuente)
· DI (registro índice destino)
· SP (registro del apuntador de pila)
· IP (registro del apuntador de siguiente instrucción)
· F (registro de banderas)
El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos. El BX
sirve como apuntador base o índice. El CX se utiliza en operaciones de iteración, como un contador
que automáticamente se incrementa o decremento de acuerdo con el tipo de instrucción usada. El DX
se usa como puente para el acceso de datos.
El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos.
Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única
excepción es cuando tenemos programas del tipo *.COM, ya que en éstos sólo puede existir un
segmento. El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero
también puede ser una extensión del DS.
El SS tiene la tarea exclusiva de manejar la posición de memoria donde se encuentra la pila (stack)
Esta es una estructura usada para almacenar datos en forma temporal, tanto de un programa como de
las operaciones internas de la computadora personal (PC, por sus siglas en inglés) En términos de
operación interna, la CPU usa este segmento para almacenar las direcciones de retorno de las
llamadas a rutinas. El registro de segmentos más importante es el CS o segmento de código. Es aquí
donde se encuentra el código ejecutable de cada programa, el cual está directamente ligado a los
diferentes modelos de memoria.
El registro BP (base pointer) se usa para manipular la pila sin afectar al registro de segmentos SS. Es
útil cuando se usa interfaz entre lenguajes de alto nivel y el ensamblador. Puesto que dicha interfaz se
basa en el concepto de la pila BP, nos permite acceder parámetros pasados sin alterar el registro de
segmento SS. Los registros SI y DI son útiles para manejar bloques de cadenas en memoria, siendo el
primero el índice fuente y el segundo el índice destino. En otras palabras, SI representa la dirección
donde se encuentra la cadena y DI la dirección donde será copiada.
El registro SP apunta a un área específica de memoria que sirve para almacenar datos bajo la
estructura LIFO (último en entrar, primero en salir), conocida como pila (stack) El registro IP
(instrucción pointer) apunta a la siguiente instrucción que será ejecutada en memoria.
A continuación se describe el significado de cada bit del registro F (banderas)
Todas las banderas apagadas:
NV UP DI PL NZ NA PO NC
Todas las banderas prendidas:
OV DN EI NG ZR AC PE CY
Significado de los bits:
• Overflow NV = no hay desbordamiento
OV = Sí lo hay
• Direction UP = hacia adelante
DN = hacia atrás
• Interrupts DI = desactivadas
EI = activadas
• Sign PL = positivo
NG = negativo
• Zero NZ = no es cero
ZR = sí lo es
• Auxiliary Carry NA = no hay acarreo auxiliar
AC = hay acarreo auxiliar
• Parity PO = paridad non
PE = paridad par
· Carry NC = no hay acarreo
CY = sí lo hay
El registro de banderas es un registro de 16 bits, pero no todos los bits se usan.
1.5.- Interrupciones.
Las interrupciones son un mecanismo por el que un dispositivo externo puede provocar que el
procesador interrumpa momentáneamente la ejecución del programa para atender su petición y luego
continuar con el programa desde el punto en que lo había dejado. Pero el procesador 8086 amplía este
concepto y permite que un programa pueda generar una interrupción en cualquier momento. A este tipo
de interrupciones se las conoce como interrupciones software para diferenciarlas de las interrupciones
hardware, generadas por dispositivos externos al procesador. Existen, no obstante, de 8 a 15
interrupciones que no se llaman de la misma forma que las interrupciones de software, sino mediante
el controlador de interrupciones, como interrupciones hardware.
1.6.- Estructura de un programa en lenguaje ensamblador.
• Debug es una herramienta que nos sirve para conocer el funcionamiento de algunas instrucciones del
lenguaje ensamblador, y permite realizar programas de tipo COM. • VER APÉNDICE B
• MacroAssembler de Microsoft, nos permite con una estructura más sencilla y sólida, generar
programas de tipo EXE y COM.
• Un programa EXE (EXEcution) difiere de un programa COM (COMmand) en que puede ser más
grande de 64 k (los COM, al usar el mismo segmento para CS, DS, ES y SS no pueden superar este
límite).
• Al trabajar con MacroAssembler, nuestro código fuente estará almacenado en un archivo ASCII, el
cual deberá ser creado con un editor de textos. Esta característica nos permitirá gestionar el código
fuente de una manera mucho más flexible.
• Es necesario conocer la estructura básica de un programa escrito en lenguaje ensamblador,
• Básicamente nuestros programas podrían estar englobados en cuatro bloques fundamentales:
- Declaraciones y definiciones
- Segmento de datos
- Segmento de pila
- Segmento de código Declaraciones y definiciones
• Definición de constantes, importación de código o información al compilador. Segmento de datos •
Reserva de espacio para las variables que usa el programa.
• Para la creación de un segmento, se utiliza la directiva SEGMENT, la cual indica el comienzo del
mismo.
• El segmento, en el código fuente, define un bloque de sentencias fuente, ya sean directivas o
instrucciones.
• El final del segmento viene dado por la directiva ENDS (END Segment). Segmento de pila
• Todos los programas han de llevar pila, con el fin de depositar la información necesaria para las
llamadas a funciones, o bien almacenar datos temporalmente. En este bloque se define un tamaño
para la pila.
• El segmento de pila se define como cualquier otro segmento, pero especificando la palabra reservada
STACK.
• En este segmento reservamos únicamente espacio para la pila, es decir, definimos su tamaño.
Segmento de código.
• Definición de todos los procedimientos e instrucciones del programa.
• Un procedimiento es un conjunto de sentencias, las cuales se engloban entre la directiva PROC
(PROCedure) y la directiva ENDP (END Procedure).
1.7.- Procesamiento de ensamble, enlace y ejecución.
Un ensamblador es el programa que convierte un listado de código fuente en código objeto, es decir,
lenguaje máquina (el que finalmente interpretará el procesador).
 El código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador
que forma el programa, así como ciertas directivas o comandos para el propio ensamblador, que ha
sido creado utilizando un editor de texto.
 El código objeto consta del código en lenguaje máquina y de la información necesaria para enlazarlo
con otros módulos objeto.
Enlace y ejecución
Al construir un programa algunos de sus módulos pueden colocarse en el mismo módulo fuente y
ensamblarse juntos, otros pueden estar en módulos diferentes y ser ensamblados separadamente.
 Si se ensamblan por separado, el módulo principal, que contiene la primera instrucción que se va a
ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno
de los otros módulos deben terminar con una sentencia END sin ningún operando.
En cualquier caso, los módulos objeto resultantes, algunos de los cuales pueden estar agrupados en
librerías, deben ser enlazados para formar el módulo de carga, antes de que se pueda ejecutar el
programa.
 Además de dar como salida el módulo de carga, el linker o enlazador imprime un mapa de memoria
que indica donde serán cargados los módulos objeto en la memoria.
 Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del
ordenador y comienza la ejecución.
 Independientemente del sistema, la combinación linker/cargador debe crear todos los segmentos y
asignaciones de dirección necesarios para permitirle al programa funcionar correctamente.
1.8.- Entorno de Programación.
Creando un directorio de trabajo
• El proceso de crear y perfeccionar programas en lenguaje ensamblador involucra muchas clases
diferentes de archivos de DOS, así como numerosas herramientas de software.
• Diferente al cuidadoso, completo e integrado ambiente de desarrollo en Pascal, Delphi o Visual Basic,
en el desarrollo del lenguaje ensamblador se involucran una gran cantidad de elementos con algún
montaje necesario.
• Se recomienda crear utilizando los comandos de DOS, un subdirectorio de desarrollo en el disco duro
de la computadora, poniendo todas los distintos elementos en él, por facilidad podríamos llamarlo ASM,
pero puede llevar el nombre que se desee.
• El directorio creado deberá contener lo siguiente:
- El editor de texto o ambiente de desarrollo. ¾ El programa ensamblador
- Los subdirectorios derivados del des empaquetamiento de programas instalados.
- El programa ligador.
- El programa DEBUG. Una copia de DEBUG.EXE viene instalada en todas las copias de DOS en
Windows, se debe encontrar el archivo DEBUG.EXE en su sistema y copiarlo al su directorio de
trabajo.
- Listados de programa de código fuente.
• VER APÉNDICE C.
Trabajando con los programas
• Ya creado el directorio de trabajo es necesario acceder a el por medio de un shell, que sería una
ventana de DOS para el sistema operativo Windows y una terminal para los ambientes de Linux. • Por
medio del shell se van a ejecutar los programas: ¾ Ensamblador
- Ligador o LINK y
- El DEBUG.
• Es necesario aprender los comandos y parámetros de los programa que se van a utilizar (así como
DOS en su caso) para poder realizar adecuadamente la ejecución de los mismos.
• Aunque es suficiente con el shell para ejecutar los programas que se necesitan para desarrollar
programas en el lenguaje ensamblador, existen herramientas graficas para ambiente Windows como
son el Windbg que puede realizar tareas similares al DEBUG de DOS y entornos integrados de
desarrollo como NASM-IDE.
• Es necesario mencionar que la sintaxis ocupada en programas para Linux es diferente a la que se
ocupa para el ambiente Windows.
1.9.- Evolución de Windows.
Un día como hoy en la década de los 90, Microsoft lanzó un revolucionario sistema operativo: Windows
95. Para conmemorar su aniversario, te presentamos una línea del tiempo de la evolución del popular
software creado por Bill Gates y Paul Allen mucho tiempo atrás.
Antecedentes 1975-1981
Corría el año de 1975 cuando Bill Gates y Paul Allen formaron una sociedad que denominaron
Microsoft. Su cometido: darle una micro computadora a todas los hogares del mundo que sustituya a
las máquinas de escribir y al papel carbón.
IBM le presentó a la compañía un proyecto denominado Chess. Con Steve Ballmer como el más
reciente miembro del equipo, Microsoft concentró sus esfuerzos en un nuevo sistema operativo, el
software que maneja al hardware y sirve como puente entre lo físico y los programas, como un
procesador de palabras. El fundamento para que corran los programas, al que llamaron MS-DOS (que
significa Microsoft Disk Operación System).
Un año más tarde ambas compañías presentaron sus creaciones y las PCs de IBM con MS-DOS
empezaron a distribuirse al público.
Así, comandos como “C:” se convirtieron en lenguaje de todos los días en oficinas del mundo entero.
Si bien el sistema probó su efectividad no era fácil de entender ni dominar para la mayoría de los
usuarios. Entonces sus creadores se propusieron hacerlo más accesible.
1982–1985: Nace Windows 1.0
Microsoft anunció su Nuevo proyecto en 1983, aunque les tomó dos años lanzar su versión final.
Primero llevó el nombre Interface Manager, pero poco a poco la otra propuesta, Windows se quedó
como el nombre definitivo. Este surgió durante el desarrollo de “cajas” o “ventanas” de navegación
fundamentales en la plataforma.
El 20 de Noviembre los usuarios recibieron un sistema que funcionaba, ya no con códigos si no con un
mouse que cruzaba la pantalla. “Es un software único diseñado para el usuario serio de PC” dijo Bill
Gates a la prensa. Aparecieron por primera vez herramientas que son ya de todos los días: menús en
cascada, barras de navegación, íconos y cajas de diálogo. Fue posible por primera vez también abrir
varios programas sin tener que cerrar el anterior. Los programas que incluyó Windows 1.0 fueron Paint,
Windows Writer, Notepad, Calculator, un calendario, un reloj y un juego: Reversi.
Un año después, Microsoft lanzó una actualización de Windows 1.0 y le agregó un tres: Windows 1.03.
El cambio más importante fue el incremento en el espacio del disco duro, de 1Mb a 2.2 Mb.
Windows 2.03
En 1987 Microsoft presenta su Windows 2.0 a tiempo para navidad: el 9 de Diciembre. El soporte de
gráficos mejorado permitió encimar ventanas, controlar la imagen de pantalla y el uso de atajos con el
tablero. También hizo su aparición estelar el Panel de Control.
Esta fue la primera vez que desarrolladores externos crearon los primeros programas para el sistema
de Microsoft. Windows corría con el procesador 286 de Intel. Poco después este último actualizó a 386
y Windows lo siguió con su Windows/386 que aprovechó las mejoras en usabilidad y velocidad.
Un año más tarde Microsoft se convirtió en la compañía número uno en ventas en materia de software.
Windows 3.0
Llegó el primero año de la década de los 90, seguido dos años después por Windows 3.1. Juntos
alcanzaron ventas por 10 millones de copias, lo cual lo convirtió en el sistema Windows más popular
de todos los tiempos (hasta nuestros días).
Los gráficos del sistema tenían la novedad de 16 colores, los íconos mejoraron y aparecieron por
primera vez las herramientas Program Manager, File Manager y Print Manager. Para instalarlo era
necesario el uso de diskettes (floppy disks) acompañados de complicados y pesados instructivos. Más
programas aparecieron en el panorama para incluir en Windows 3.0, entre ellos más juegos. Solitario
llegó a miles de hogares por primera vez, al igual que Minesweeper y Hearts.
Windows NT 3.1
En 1993 apareció Windows NT 3.1 con un sistema operativo de 32 bits. El mismo año apareció 3.11
con el agregado de grupos de trabajo y soporte para redes. Por primera vez, las computadoras con
Windows podían conectarse entre sí.
En 1995, la última versión de Windows 3.0, 3.51 WorkStation salió a la luz. Esta contaba con mayor
soporte de gráficos, y aplicaciones para desarrollo de software, análisis financiero, investigación
científica y tareas empresariales.
Windows 95
En agosto 24, Microsoft lanzó su Windows 95, el software que rompió todos los records hasta el
momento con siete millones de copias vendidas en tan solo cinco semanas. La campaña publicitaria
anunciaba “It’s here” (está aquí) y fue acompañada del hit de los Rolling Stones “Start me Up” para
anunciar su nuevo botón “Start.”
La mitad de la década fue la era de los fax/módems, el correo electrónico, el descubrimiento de
Internet, los nuevos juegos multimedia y el génesis del software educativo. Para acoplarse a los
nuevos tiempos, la nueva versión de Windows (nombrada Chicago durante su desarrollo) contaba con
soporte para Internet por marcación, capacidades multimedia, redes integradas y más herramientas
para la computación móvil. Al momento de su lanzamiento (un 24 de agosto como hoy), el 80% de las
computadoras del mundo corrían con MS-DOS o con versiones previas de Windows.
La versión 95 se convirtió en la sustituta de todos ellos. Para su funcionamiento requería una PC con
procesador 386XD o más alto (486 de preferencia) y al menos 4 MB de RAM. La instalación con
diskettes dejó de ser forzosa gracias al moderno CD ROM. Además Windows 95 era el sistema
operativo más inclusivo; disponible en 12 idiomas distintos. Un año más tarde, la versión Windows NT
4.0 brindó soporte mejorado y más seguro a Internet y a intranets corporativas.
Windows 98
El 25 de Junio de 1998 apareció la nueva versión de Windows, diseñada especialmente para
consumidores. Los cambios principales incluyeron lectura de discos DVS y USBs además de la Quick
Launch Bar para abrir programas con mayor facilidad. Windows 98 fue el último sistema operativo
basado en MS-DOS.
Windows 2000
El nuevo milenio trajo consigo al Professional de Windows, diseñado para sustituir a Windows 95, 98 y
NT Workstation 4.0 para uso individual en casa y en negocios. Facilitó la instalación de hardware con
soporte añadido a una variedad amplia de hardware Plug and Play incluyendo productos inalámbricos,
dispositivos USB, IEEE 1394 e infrarrojos.
Windows Me 2000
Apareció poco después. Estaba diseñado para el uso en casa e incluía la novedosa configuración
System Restore que permitía devolver al software a su estado previo a la aparición de un problema.
También incluyó Windows Media Player 7 para reproducir distintos formatos.
Windows XP
El 25 de octubre de 2001, Microsoft lanzó una nueva actualización: XP. Sus mayores atractivos eran su
nuevo aspecto y un nuevo centro de atención y ayuda. Estaba disponible en 25 idiomas. XP
permaneció durante un tiempo prolongado como el software principal de Microsoft. Representó también
un cambio en el usuario, que estaba más consciente del problema el malware. XP era más seguro y
educativo a ese respecto.
Poco tiempo después apareció una versión mejorada: Windows XP Professional.
Curiosidad: El comercial fue musicalizado por el hit de Madonna, Ray of Light. El escritorio incluyó
como imagen por default una fotografía que ahora es la más vista de la historia.
Windows Vista
Cinco años después, llego Windows Vista. El sistema operativo de 2006 tenía el sistema de seguridad
más fuerte hasta el momento en la historia de la compañía. User Account Control permitía prevenir la
instalación de malware y Ultimate Bit Locker protegía la información de los usuarios aún más, debido a
la popularidad de las lap tops y por ende el intercambio de información. Otro gran cambio vino de la
mano de Windows Media Player, desde el cual se pueden reproducir todo tipo de formatos, ver
televisión y editar video.
Windows 7 2009-2011
Windows 7 llegó en octubre de 2009 y sigue vigente en muchos equipos (en 2010 vendía siete copias
al segundo) y se convirtió en su momento en el sistema operativo con mayor rapidez de venta en la
historia.
Windows 8
Lanzado en Octubre de 2012. También lanzó su nuevo SO para móviles Windows Phone 8.
Windows 8.1
La actualización de Windows 8 tiene el "nombre código" de Windows Blue, pero todo parece indicar
que se llamará Windows 8.1. Aunque aún no se sabe a ciencia cierta qué comprenderán las novedades
del sistema, los ejecutivos han aclarado que no se trata de un nuevo SO, pues quieren que "haya
Windows 8 para rato." El próximo mes de Junio, Microsoft dará un primer vistazo a 8.1.
1.10.- Conclusión.
Tal vez no sea el lenguaje de programación más sencillo de aprender, pero el lenguaje ensamblador es
y seguirá siendo una de las herramientas de programación más utilizadas por todas aquellas personas
que desean tener un mayor grado de comprensión sobre el funcionamiento a nivel de dispositivo de
una computadora personal.
El lenguaje ensamblador no está relegado únicamente a computadoras antiguas con sistemas
operativos en modo texto como el MS-DOS. Existe en la actualidad una gran cantidad de programas
ensambladores que nos permiten programar en ambientes operativos gráficos como Windows y una
muestra de ello es el ensamblador que se utilizó para probar los programas de ejemplo de este trabajo.
Por lo tanto, si alguien piensa que el lenguaje ensamblador ya pasó de moda, tal vez debería
reconsiderar su postura y visitar algunas de las páginas en Internet que se dedican a cubrir temas
sobre programación en lenguaje ensamblador y que se actualizan diariamente, tal vez lo que descubra
le haga cambiar de opinión.
1.11.- Bibliografía.
● http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguaje-ensamblador.shtml
● https://cosyen.files.wordpress.com/2011/02/exposicion-equipo-4.pdf
● http://www.swagger.mx/tecnologia/la-evolucion-de-windows-de-microsoft-1975-2012
● http://club.telepolis.com/mydream/Asm/
● http://www.ittux.edu.mx/sites/default/files/MICROCOMPUTADORAS_AL_DETALLE.pdf

Más contenido relacionado

La actualidad más candente

DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSDISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSGonzalo Murga Sotelo
 
Cuál es la diferencia entre dato y señal
Cuál es la diferencia entre dato y señalCuál es la diferencia entre dato y señal
Cuál es la diferencia entre dato y señalLUZDER VARELA
 
xDSL
xDSLxDSL
Probabilidad de error en modulación digital
Probabilidad de error en modulación digitalProbabilidad de error en modulación digital
Probabilidad de error en modulación digital
Francisco Apablaza
 
Conexión en cascada
Conexión en cascadaConexión en cascada
Conexión en cascada
joselin33
 
Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficación
Andhy H Palma
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
José Antonio Sandoval Acosta
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorLuis Zurita
 
Técnicas de Modulacion
Técnicas de ModulacionTécnicas de Modulacion
Técnicas de Modulacion
Hugo Alberto Rivera Diaz
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
Borreguito Inolvidable
 
Sistemas de comunicacion f.g. stremler solucion capitulos 3,4,5,6 (1)
Sistemas de comunicacion   f.g. stremler solucion capitulos 3,4,5,6 (1)Sistemas de comunicacion   f.g. stremler solucion capitulos 3,4,5,6 (1)
Sistemas de comunicacion f.g. stremler solucion capitulos 3,4,5,6 (1)Carlos Tomas Segura Magaña
 
Protocolos de las capas del modelo OSI
Protocolos de las capas del modelo OSIProtocolos de las capas del modelo OSI
Protocolos de las capas del modelo OSIb3rmud3z
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
Anel Sosa
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
Anel Sosa
 
Sistema de Comunicación. Redes de Telecomunicaciones
Sistema de Comunicación. Redes de TelecomunicacionesSistema de Comunicación. Redes de Telecomunicaciones
Sistema de Comunicación. Redes de Telecomunicaciones
mamogetta
 
Conmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesConmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesJarvey Gonzalez
 

La actualidad más candente (20)

DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOSDISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS
 
Cuál es la diferencia entre dato y señal
Cuál es la diferencia entre dato y señalCuál es la diferencia entre dato y señal
Cuál es la diferencia entre dato y señal
 
xDSL
xDSLxDSL
xDSL
 
Probabilidad de error en modulación digital
Probabilidad de error en modulación digitalProbabilidad de error en modulación digital
Probabilidad de error en modulación digital
 
Conexión en cascada
Conexión en cascadaConexión en cascada
Conexión en cascada
 
Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficación
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensamblador
 
Técnicas de Modulacion
Técnicas de ModulacionTécnicas de Modulacion
Técnicas de Modulacion
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
 
Sistemas de comunicacion f.g. stremler solucion capitulos 3,4,5,6 (1)
Sistemas de comunicacion   f.g. stremler solucion capitulos 3,4,5,6 (1)Sistemas de comunicacion   f.g. stremler solucion capitulos 3,4,5,6 (1)
Sistemas de comunicacion f.g. stremler solucion capitulos 3,4,5,6 (1)
 
Protocolos de las capas del modelo OSI
Protocolos de las capas del modelo OSIProtocolos de las capas del modelo OSI
Protocolos de las capas del modelo OSI
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Arquitectura del cpu
Arquitectura del cpuArquitectura del cpu
Arquitectura del cpu
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Informe 4 digitales
Informe 4 digitalesInforme 4 digitales
Informe 4 digitales
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Sistema de Comunicación. Redes de Telecomunicaciones
Sistema de Comunicación. Redes de TelecomunicacionesSistema de Comunicación. Redes de Telecomunicaciones
Sistema de Comunicación. Redes de Telecomunicaciones
 
Conmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesConmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetes
 

Destacado

Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
juan1993are
 
Div, idiv, Neg ensamblador
Div, idiv, Neg ensambladorDiv, idiv, Neg ensamblador
Div, idiv, Neg ensamblador
David Flores Gallegos
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
SpiderHal
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basicoGustavo Davila
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
Jesus Cuellar Sanchez
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
Omar Sanchez
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
area21
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
RAFAEL HONORES VERA
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
DeisyVilchez
 
Lenguaje c josequerales
Lenguaje c josequeralesLenguaje c josequerales
Lenguaje c josequerales
leonardo213200
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
luisaquiroga4
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
thalia margarita serrano diaz
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
Instituto Tecnológico de Tuxtla Gutiérrez
 
2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su EntornoMeztli Valeriano Orozco
 

Destacado (20)

Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Div, idiv, Neg ensamblador
Div, idiv, Neg ensambladorDiv, idiv, Neg ensamblador
Div, idiv, Neg ensamblador
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje c josequerales
Lenguaje c josequeralesLenguaje c josequerales
Lenguaje c josequerales
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
1.4 ensambladores y compiladores
1.4 ensambladores y compiladores1.4 ensambladores y compiladores
1.4 ensambladores y compiladores
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADORUNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
 
2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno
 
Ots 2014 2 a5
Ots 2014 2 a5Ots 2014 2 a5
Ots 2014 2 a5
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Unidad 1 interfaz
Unidad 1 interfazUnidad 1 interfaz
Unidad 1 interfaz
 

Similar a Lenguaje ensamblador

Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivelANALI GOMEZ
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
José Eduardo Palomo Purata
 
Antologia Lenguaje Ensamblador.pdf
Antologia Lenguaje Ensamblador.pdfAntologia Lenguaje Ensamblador.pdf
Antologia Lenguaje Ensamblador.pdf
Lyndablanquet
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
En La Vereda de Mi Casaa!
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
michelledelgado97
 
El software de base. Sistemas operativos y lenguajes
El software de base. Sistemas operativos y lenguajesEl software de base. Sistemas operativos y lenguajes
El software de base. Sistemas operativos y lenguajes
XarCrystal
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computaSampdp
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computaSampdp
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computaSampdp
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computaSampdp
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
Infomania pro
 
Ad1 rivera corpus jonathan 205
Ad1 rivera corpus jonathan 205Ad1 rivera corpus jonathan 205
Ad1 rivera corpus jonathan 205
Jonatan Rivera
 
Introduccion a los microprocesadores
Introduccion a los microprocesadoresIntroduccion a los microprocesadores
Introduccion a los microprocesadoresRuderocker Billy
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
colegio nacional huaca
 
informatica
informaticainformatica
informaticaMURBANO
 
Electronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdfElectronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdf
WalterCuellarFierro
 

Similar a Lenguaje ensamblador (20)

El computador
El computadorEl computador
El computador
 
Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivel
 
Programación
ProgramaciónProgramación
Programación
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
So1
So1So1
So1
 
Deber
DeberDeber
Deber
 
Antologia Lenguaje Ensamblador.pdf
Antologia Lenguaje Ensamblador.pdfAntologia Lenguaje Ensamblador.pdf
Antologia Lenguaje Ensamblador.pdf
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
El software de base. Sistemas operativos y lenguajes
El software de base. Sistemas operativos y lenguajesEl software de base. Sistemas operativos y lenguajes
El software de base. Sistemas operativos y lenguajes
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computa
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computa
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computa
 
Trabajo de introduc computa
Trabajo de introduc computaTrabajo de introduc computa
Trabajo de introduc computa
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
Ad1 rivera corpus jonathan 205
Ad1 rivera corpus jonathan 205Ad1 rivera corpus jonathan 205
Ad1 rivera corpus jonathan 205
 
Introduccion a los microprocesadores
Introduccion a los microprocesadoresIntroduccion a los microprocesadores
Introduccion a los microprocesadores
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
informatica
informaticainformatica
informatica
 
Electronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdfElectronica industrial MOD 3 programacion aplicada.pdf
Electronica industrial MOD 3 programacion aplicada.pdf
 

Último

EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 

Último (20)

EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 

Lenguaje ensamblador

  • 1. Instituto de estudios superiores metropolitano Carrera: Ing. En tecnología de la información. Asignatura: lenguaje ensamblador Catedrático: Ing. Juan Reynoso Hernández Cuatrimestre: Tercer cuatrimestre. Nombre del alumno: Edier Domínguez Espinosa.
  • 3. 1.1.- Introducción. 1.2.- Fundamentos de lenguaje ensamblador. 1.3.- El Microprocesador. 1.4.- Función del microprocesador en lenguaje ensamblador. 1.5.- Interrupciones. 1.6.- Estructura de un programa en lenguaje ensamblador. 1.7.- Procesamiento de ensamble, enlace y ejecución. 1.8.- Entorno de Programación. 1.9.- Evolución de Windows. 1.10.- Coclucion. 1.11.- Bibliografía.
  • 4. 1.1.- Introducción: Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno. Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina, consistente en asociar a los códigos de operación (OPCODES) palabras clave que faciliten su uso por parte del programador. Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente el Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían tablas de programa similares al ejemplo de la calculadora que vimos anteriormente. Pero, al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de Máquina).
  • 5. 1.2.- Fundamentos de 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, micro controladores 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 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 son portátiles. 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.
  • 6. 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 se llaman 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, alto rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las instrucciones de la máquina. Muchos dispositivos programables (como los micros controladores) aún cuentan con el ensamblador como la única manera de ser manipulados. Importancia del lenguaje ensamblador La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.
  • 7. Ventajas y desventajas del Lenguaje Ensamblador - Ventajas 1.- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el más 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 limitante para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes.
  • 8. - 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 grande. 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 máquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialicé. 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.
  • 9. 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.
  • 10. 1.3.- Microprocesador. La evolución del microprocesador El microprocesador surgió de la evolución de distintas tecnologías predecesoras, básicamente de la computación y de la tecnología de semiconductores. El inicio de esta última data de mitad de la década de 1950; estas tecnologías se fusionaron a principios de los años 1970, produciendo el primer microprocesador. Dichas tecnologías iniciaron su desarrollo a partir de la segunda guerra mundial; en este tiempo los científicos desarrollaron computadoras específicas para aplicaciones militares. En la posguerra, a mediados de la década de 1940, la computación digital emprendió un fuerte crecimiento también para propósitos científicos y civiles. La tecnología electrónica avanzó y los científicos hicieron grandes progresos en el diseño de componentes de estado sólido (semiconductores). En 1948 en los laboratorios Bell crearon el transistor. En los años 1950, aparecieron las primeras computadoras digitales de propósito general. Se fabricaron utilizando tubos al vacío o bulbos como componentes electrónicos activos. Módulos de tubos al vacío componían circuitos lógicos básicos, tales como compuertas y flip-flops. Ensamblándolos en módulos se construyó la computadora electrónica (la lógica de control, circuitos de memoria, etc.). Los tubos de vacío también formaron parte de la construcción de máquinas para la comunicación con las computadoras.
  • 11. Para la construcción de un circuito sumador simple se requiere de algunas compuertas lógicas. La construcción de una computadora digital precisa numerosos circuitos o dispositivos electrónicos. Un paso trascendental en el diseño de la computadora fue hacer que el dato fuera almacenado en memoria. Y la idea de almacenar programas en memoria para luego ejecutarlo fue también de fundamental importancia (Arquitectura de von Neumann). La tecnología de los circuitos de estado sólido evolucionó en la década de 1950. El empleo del silicio (Si), de bajo costo y con métodos de producción masiva, hicieron del transistor el componente más usado para el diseño de circuitos electrónicos. Por lo tanto el diseño de la computadora digital se reemplazó del tubo al vacío por el transistor, a finales de la década de 1950. A principios de la década de 1960, el estado de arte en la construcción de computadoras de estado sólido sufrió un notable avance; surgieron las tecnologías en circuitos digitales como: RTL (Lógica Transistor Resistor), DTL (Lógica Transistor Diodo), TTL (Lógica Transistor Transistor), ECL (Lógica Complementada Emisor). A mediados de los años 1960 se producen las familias de circuitos de lógica digital, dispositivos integrados en escala SSI y MSI que corresponden a baja y mediana escala de integración de componentes. A finales de los años 1960 y principios de los 70 surgieron los sistemas a alta escala de integración o LSI. La tecnología LSI fue haciendo posible incrementar la cantidad de componentes en los circuitos integrados. Sin embargo, pocos circuitos LSI fueron producidos, los dispositivos de memoria eran un buen ejemplo.
  • 12. Las primeras calculadoras electrónicas requerían entre 75 y 100 circuitos integrados. Después se dio un paso importante en la reducción de la arquitectura de la computadora a un circuito integrado simple, resultando uno que fue llamado microprocesador, unión de las palabras «Micro» del griego μικρο-, «pequeño», y procesador. Sin embargo, es totalmente válido usar el término genérico procesador, dado que con el paso de los años, la escala de integración se ha visto reducida de micro métrica a nanométrica; y además, es, sin duda, un procesador. El primer microprocesador fue el Intel 4004,1 producido en 1971. Se desarrolló originalmente para una calculadora y resultó revolucionario para su época. Contenía 2.300 transistores, era un microprocesador de arquitectura de 4 bits que podía realizar hasta 60.000 operaciones por segundo trabajando a una frecuencia de reloj de alrededor de 700 kHz. El primer microprocesador de 8 bits fue el Intel 8008, desarrollado a mediados de 1972 para su uso en terminales informáticos. El Intel 8008 integraba 3300 transistores y podía procesar a frecuencias máximas de 800 kHz. El primer microprocesador realmente diseñado para uso general, desarrollado en 1974, fue el Intel 8080 de 8 bits, que contenía 4500 transistores y podía ejecutar 200.000 instrucciones por segundo trabajando a alrededor de 2 MHz.
  • 13. El primer microprocesador de 16 bits fue el 8086, seguido del 8088. El 8086 fue el inicio y el primer miembro de la popular arquitectura x86, actualmente usada en la mayoría de los computadores. El chip 8086 fue introducido al mercado en el verano de 1978, pero debido a que no había aplicaciones en el mercado que funcionaran con 16 bits, Intel sacó al mercado el 8088, que fue lanzado en 1979. Llegaron a operar a frecuencias mayores de 4 MHz. El microprocesador elegido para equipar al IBM Personal Computer/AT, que causó que fuera el más empleado en los PC-AT compatibles entre mediados y finales de los años 1980 fue el Intel 80286 (también conocido simplemente como 286); es un microprocesador de 16 bits, de la familia x86, que fue lanzado al mercado en 1982. Contaba con 134.000 transistores. Las versiones finales alcanzaron velocidades de hasta 25 MHz. Uno de los primeros procesadores de arquitectura de 32 bits fue el 80386 de Intel, fabricado a mediados y fines de la década de 1980; en sus diferentes versiones llegó a trabajar a frecuencias del orden de los 40 MHz. El microprocesador DEC Alpha se lanzó al mercado en 1992, corriendo a 200 MHz en su primera versión, en tanto que el Intel Pentium surgió en 1993 con una frecuencia de trabajo de 66 MHz. El procesador Alpha, de tecnología RISC y arquitectura de 64 bits, marcó un hito, declarándose como el más rápido del mundo, en su época. Llegó a 1 GHz de frecuencia hacia el año 2001. Irónicamente, a mediados del 2003, cuando se pensaba quitarlo de circulación, el Alpha aún encabezaba la lista de los microprocesadores más rápidos de Estados Unidos.2
  • 14. Los microprocesadores modernos tienen una capacidad y velocidad mucho mayores, trabajan en arquitecturas de 64 bits, integran más de 700 millones de transistores, como es en el caso de las serie Core i7, y pueden operar a frecuencias normales algo superiores a los 3 GHz (3000 MHz).
  • 15. 1.4.- Función del microprocesador en lenguaje ensamblador. La Unidad Central de Proceso (CPU, por sus siglas en inglés) tiene 14 registros internos cada uno de 16 bits. Los primeros cuatro, AX, BX, CX y DX, son de uso general y se pueden usar también como registros de 8 bits. Es decir, AX se puede dividir en AH y AL (AH es el byte alto, high, y AL es el byte bajo, low) Lo mismo es aplicable a los otros tres (BX en BH y BL, CX en CH y CL y DX en DH y DL) Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits) Los registros de la CPU son conocidos por sus nombres propios, que son: · AX (acumulador) · BX (registro base) · CX (registro contador) · DX (registro de datos) · DS (registro del segmento de datos) · ES (registro del segmento extra) · SS (registro del segmento de pila) · CS (registro del segmento de código)
  • 16. · BP (registro de apuntadores base) · SI (registro índice fuente) · DI (registro índice destino) · SP (registro del apuntador de pila) · IP (registro del apuntador de siguiente instrucción) · F (registro de banderas) El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos. El BX sirve como apuntador base o índice. El CX se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa o decremento de acuerdo con el tipo de instrucción usada. El DX se usa como puente para el acceso de datos. El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.COM, ya que en éstos sólo puede existir un segmento. El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del DS.
  • 17. El SS tiene la tarea exclusiva de manejar la posición de memoria donde se encuentra la pila (stack) Esta es una estructura usada para almacenar datos en forma temporal, tanto de un programa como de las operaciones internas de la computadora personal (PC, por sus siglas en inglés) En términos de operación interna, la CPU usa este segmento para almacenar las direcciones de retorno de las llamadas a rutinas. El registro de segmentos más importante es el CS o segmento de código. Es aquí donde se encuentra el código ejecutable de cada programa, el cual está directamente ligado a los diferentes modelos de memoria. El registro BP (base pointer) se usa para manipular la pila sin afectar al registro de segmentos SS. Es útil cuando se usa interfaz entre lenguajes de alto nivel y el ensamblador. Puesto que dicha interfaz se basa en el concepto de la pila BP, nos permite acceder parámetros pasados sin alterar el registro de segmento SS. Los registros SI y DI son útiles para manejar bloques de cadenas en memoria, siendo el primero el índice fuente y el segundo el índice destino. En otras palabras, SI representa la dirección donde se encuentra la cadena y DI la dirección donde será copiada. El registro SP apunta a un área específica de memoria que sirve para almacenar datos bajo la estructura LIFO (último en entrar, primero en salir), conocida como pila (stack) El registro IP (instrucción pointer) apunta a la siguiente instrucción que será ejecutada en memoria.
  • 18. A continuación se describe el significado de cada bit del registro F (banderas) Todas las banderas apagadas: NV UP DI PL NZ NA PO NC Todas las banderas prendidas: OV DN EI NG ZR AC PE CY Significado de los bits: • Overflow NV = no hay desbordamiento OV = Sí lo hay • Direction UP = hacia adelante DN = hacia atrás • Interrupts DI = desactivadas EI = activadas • Sign PL = positivo NG = negativo
  • 19. • Zero NZ = no es cero ZR = sí lo es • Auxiliary Carry NA = no hay acarreo auxiliar AC = hay acarreo auxiliar • Parity PO = paridad non PE = paridad par · Carry NC = no hay acarreo CY = sí lo hay El registro de banderas es un registro de 16 bits, pero no todos los bits se usan.
  • 20. 1.5.- Interrupciones. Las interrupciones son un mecanismo por el que un dispositivo externo puede provocar que el procesador interrumpa momentáneamente la ejecución del programa para atender su petición y luego continuar con el programa desde el punto en que lo había dejado. Pero el procesador 8086 amplía este concepto y permite que un programa pueda generar una interrupción en cualquier momento. A este tipo de interrupciones se las conoce como interrupciones software para diferenciarlas de las interrupciones hardware, generadas por dispositivos externos al procesador. Existen, no obstante, de 8 a 15 interrupciones que no se llaman de la misma forma que las interrupciones de software, sino mediante el controlador de interrupciones, como interrupciones hardware.
  • 21. 1.6.- Estructura de un programa en lenguaje ensamblador. • Debug es una herramienta que nos sirve para conocer el funcionamiento de algunas instrucciones del lenguaje ensamblador, y permite realizar programas de tipo COM. • VER APÉNDICE B • MacroAssembler de Microsoft, nos permite con una estructura más sencilla y sólida, generar programas de tipo EXE y COM. • Un programa EXE (EXEcution) difiere de un programa COM (COMmand) en que puede ser más grande de 64 k (los COM, al usar el mismo segmento para CS, DS, ES y SS no pueden superar este límite). • Al trabajar con MacroAssembler, nuestro código fuente estará almacenado en un archivo ASCII, el cual deberá ser creado con un editor de textos. Esta característica nos permitirá gestionar el código fuente de una manera mucho más flexible. • Es necesario conocer la estructura básica de un programa escrito en lenguaje ensamblador, • Básicamente nuestros programas podrían estar englobados en cuatro bloques fundamentales: - Declaraciones y definiciones - Segmento de datos - Segmento de pila - Segmento de código Declaraciones y definiciones
  • 22. • Definición de constantes, importación de código o información al compilador. Segmento de datos • Reserva de espacio para las variables que usa el programa. • Para la creación de un segmento, se utiliza la directiva SEGMENT, la cual indica el comienzo del mismo. • El segmento, en el código fuente, define un bloque de sentencias fuente, ya sean directivas o instrucciones. • El final del segmento viene dado por la directiva ENDS (END Segment). Segmento de pila • Todos los programas han de llevar pila, con el fin de depositar la información necesaria para las llamadas a funciones, o bien almacenar datos temporalmente. En este bloque se define un tamaño para la pila. • El segmento de pila se define como cualquier otro segmento, pero especificando la palabra reservada STACK. • En este segmento reservamos únicamente espacio para la pila, es decir, definimos su tamaño. Segmento de código.
  • 23. • Definición de todos los procedimientos e instrucciones del programa. • Un procedimiento es un conjunto de sentencias, las cuales se engloban entre la directiva PROC (PROCedure) y la directiva ENDP (END Procedure).
  • 24. 1.7.- Procesamiento de ensamble, enlace y ejecución. Un ensamblador es el programa que convierte un listado de código fuente en código objeto, es decir, lenguaje máquina (el que finalmente interpretará el procesador).  El código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa, así como ciertas directivas o comandos para el propio ensamblador, que ha sido creado utilizando un editor de texto.  El código objeto consta del código en lenguaje máquina y de la información necesaria para enlazarlo con otros módulos objeto. Enlace y ejecución Al construir un programa algunos de sus módulos pueden colocarse en el mismo módulo fuente y ensamblarse juntos, otros pueden estar en módulos diferentes y ser ensamblados separadamente.  Si se ensamblan por separado, el módulo principal, que contiene la primera instrucción que se va a ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno de los otros módulos deben terminar con una sentencia END sin ningún operando.
  • 25. En cualquier caso, los módulos objeto resultantes, algunos de los cuales pueden estar agrupados en librerías, deben ser enlazados para formar el módulo de carga, antes de que se pueda ejecutar el programa.  Además de dar como salida el módulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde serán cargados los módulos objeto en la memoria.  Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del ordenador y comienza la ejecución.  Independientemente del sistema, la combinación linker/cargador debe crear todos los segmentos y asignaciones de dirección necesarios para permitirle al programa funcionar correctamente.
  • 26. 1.8.- Entorno de Programación. Creando un directorio de trabajo • El proceso de crear y perfeccionar programas en lenguaje ensamblador involucra muchas clases diferentes de archivos de DOS, así como numerosas herramientas de software. • Diferente al cuidadoso, completo e integrado ambiente de desarrollo en Pascal, Delphi o Visual Basic, en el desarrollo del lenguaje ensamblador se involucran una gran cantidad de elementos con algún montaje necesario. • Se recomienda crear utilizando los comandos de DOS, un subdirectorio de desarrollo en el disco duro de la computadora, poniendo todas los distintos elementos en él, por facilidad podríamos llamarlo ASM, pero puede llevar el nombre que se desee. • El directorio creado deberá contener lo siguiente: - El editor de texto o ambiente de desarrollo. ¾ El programa ensamblador - Los subdirectorios derivados del des empaquetamiento de programas instalados. - El programa ligador.
  • 27. - El programa DEBUG. Una copia de DEBUG.EXE viene instalada en todas las copias de DOS en Windows, se debe encontrar el archivo DEBUG.EXE en su sistema y copiarlo al su directorio de trabajo. - Listados de programa de código fuente. • VER APÉNDICE C. Trabajando con los programas • Ya creado el directorio de trabajo es necesario acceder a el por medio de un shell, que sería una ventana de DOS para el sistema operativo Windows y una terminal para los ambientes de Linux. • Por medio del shell se van a ejecutar los programas: ¾ Ensamblador - Ligador o LINK y - El DEBUG. • Es necesario aprender los comandos y parámetros de los programa que se van a utilizar (así como DOS en su caso) para poder realizar adecuadamente la ejecución de los mismos.
  • 28. • Aunque es suficiente con el shell para ejecutar los programas que se necesitan para desarrollar programas en el lenguaje ensamblador, existen herramientas graficas para ambiente Windows como son el Windbg que puede realizar tareas similares al DEBUG de DOS y entornos integrados de desarrollo como NASM-IDE. • Es necesario mencionar que la sintaxis ocupada en programas para Linux es diferente a la que se ocupa para el ambiente Windows.
  • 29. 1.9.- Evolución de Windows. Un día como hoy en la década de los 90, Microsoft lanzó un revolucionario sistema operativo: Windows 95. Para conmemorar su aniversario, te presentamos una línea del tiempo de la evolución del popular software creado por Bill Gates y Paul Allen mucho tiempo atrás. Antecedentes 1975-1981 Corría el año de 1975 cuando Bill Gates y Paul Allen formaron una sociedad que denominaron Microsoft. Su cometido: darle una micro computadora a todas los hogares del mundo que sustituya a las máquinas de escribir y al papel carbón. IBM le presentó a la compañía un proyecto denominado Chess. Con Steve Ballmer como el más reciente miembro del equipo, Microsoft concentró sus esfuerzos en un nuevo sistema operativo, el software que maneja al hardware y sirve como puente entre lo físico y los programas, como un procesador de palabras. El fundamento para que corran los programas, al que llamaron MS-DOS (que significa Microsoft Disk Operación System). Un año más tarde ambas compañías presentaron sus creaciones y las PCs de IBM con MS-DOS empezaron a distribuirse al público.
  • 30. Así, comandos como “C:” se convirtieron en lenguaje de todos los días en oficinas del mundo entero. Si bien el sistema probó su efectividad no era fácil de entender ni dominar para la mayoría de los usuarios. Entonces sus creadores se propusieron hacerlo más accesible. 1982–1985: Nace Windows 1.0 Microsoft anunció su Nuevo proyecto en 1983, aunque les tomó dos años lanzar su versión final. Primero llevó el nombre Interface Manager, pero poco a poco la otra propuesta, Windows se quedó como el nombre definitivo. Este surgió durante el desarrollo de “cajas” o “ventanas” de navegación fundamentales en la plataforma. El 20 de Noviembre los usuarios recibieron un sistema que funcionaba, ya no con códigos si no con un mouse que cruzaba la pantalla. “Es un software único diseñado para el usuario serio de PC” dijo Bill Gates a la prensa. Aparecieron por primera vez herramientas que son ya de todos los días: menús en cascada, barras de navegación, íconos y cajas de diálogo. Fue posible por primera vez también abrir varios programas sin tener que cerrar el anterior. Los programas que incluyó Windows 1.0 fueron Paint, Windows Writer, Notepad, Calculator, un calendario, un reloj y un juego: Reversi.
  • 31. Un año después, Microsoft lanzó una actualización de Windows 1.0 y le agregó un tres: Windows 1.03. El cambio más importante fue el incremento en el espacio del disco duro, de 1Mb a 2.2 Mb. Windows 2.03 En 1987 Microsoft presenta su Windows 2.0 a tiempo para navidad: el 9 de Diciembre. El soporte de gráficos mejorado permitió encimar ventanas, controlar la imagen de pantalla y el uso de atajos con el tablero. También hizo su aparición estelar el Panel de Control. Esta fue la primera vez que desarrolladores externos crearon los primeros programas para el sistema de Microsoft. Windows corría con el procesador 286 de Intel. Poco después este último actualizó a 386 y Windows lo siguió con su Windows/386 que aprovechó las mejoras en usabilidad y velocidad. Un año más tarde Microsoft se convirtió en la compañía número uno en ventas en materia de software. Windows 3.0 Llegó el primero año de la década de los 90, seguido dos años después por Windows 3.1. Juntos alcanzaron ventas por 10 millones de copias, lo cual lo convirtió en el sistema Windows más popular de todos los tiempos (hasta nuestros días).
  • 32. Los gráficos del sistema tenían la novedad de 16 colores, los íconos mejoraron y aparecieron por primera vez las herramientas Program Manager, File Manager y Print Manager. Para instalarlo era necesario el uso de diskettes (floppy disks) acompañados de complicados y pesados instructivos. Más programas aparecieron en el panorama para incluir en Windows 3.0, entre ellos más juegos. Solitario llegó a miles de hogares por primera vez, al igual que Minesweeper y Hearts. Windows NT 3.1 En 1993 apareció Windows NT 3.1 con un sistema operativo de 32 bits. El mismo año apareció 3.11 con el agregado de grupos de trabajo y soporte para redes. Por primera vez, las computadoras con Windows podían conectarse entre sí. En 1995, la última versión de Windows 3.0, 3.51 WorkStation salió a la luz. Esta contaba con mayor soporte de gráficos, y aplicaciones para desarrollo de software, análisis financiero, investigación científica y tareas empresariales.
  • 33. Windows 95 En agosto 24, Microsoft lanzó su Windows 95, el software que rompió todos los records hasta el momento con siete millones de copias vendidas en tan solo cinco semanas. La campaña publicitaria anunciaba “It’s here” (está aquí) y fue acompañada del hit de los Rolling Stones “Start me Up” para anunciar su nuevo botón “Start.” La mitad de la década fue la era de los fax/módems, el correo electrónico, el descubrimiento de Internet, los nuevos juegos multimedia y el génesis del software educativo. Para acoplarse a los nuevos tiempos, la nueva versión de Windows (nombrada Chicago durante su desarrollo) contaba con soporte para Internet por marcación, capacidades multimedia, redes integradas y más herramientas para la computación móvil. Al momento de su lanzamiento (un 24 de agosto como hoy), el 80% de las computadoras del mundo corrían con MS-DOS o con versiones previas de Windows. La versión 95 se convirtió en la sustituta de todos ellos. Para su funcionamiento requería una PC con procesador 386XD o más alto (486 de preferencia) y al menos 4 MB de RAM. La instalación con diskettes dejó de ser forzosa gracias al moderno CD ROM. Además Windows 95 era el sistema operativo más inclusivo; disponible en 12 idiomas distintos. Un año más tarde, la versión Windows NT 4.0 brindó soporte mejorado y más seguro a Internet y a intranets corporativas.
  • 34. Windows 98 El 25 de Junio de 1998 apareció la nueva versión de Windows, diseñada especialmente para consumidores. Los cambios principales incluyeron lectura de discos DVS y USBs además de la Quick Launch Bar para abrir programas con mayor facilidad. Windows 98 fue el último sistema operativo basado en MS-DOS. Windows 2000 El nuevo milenio trajo consigo al Professional de Windows, diseñado para sustituir a Windows 95, 98 y NT Workstation 4.0 para uso individual en casa y en negocios. Facilitó la instalación de hardware con soporte añadido a una variedad amplia de hardware Plug and Play incluyendo productos inalámbricos, dispositivos USB, IEEE 1394 e infrarrojos. Windows Me 2000 Apareció poco después. Estaba diseñado para el uso en casa e incluía la novedosa configuración System Restore que permitía devolver al software a su estado previo a la aparición de un problema. También incluyó Windows Media Player 7 para reproducir distintos formatos.
  • 35. Windows XP El 25 de octubre de 2001, Microsoft lanzó una nueva actualización: XP. Sus mayores atractivos eran su nuevo aspecto y un nuevo centro de atención y ayuda. Estaba disponible en 25 idiomas. XP permaneció durante un tiempo prolongado como el software principal de Microsoft. Representó también un cambio en el usuario, que estaba más consciente del problema el malware. XP era más seguro y educativo a ese respecto. Poco tiempo después apareció una versión mejorada: Windows XP Professional. Curiosidad: El comercial fue musicalizado por el hit de Madonna, Ray of Light. El escritorio incluyó como imagen por default una fotografía que ahora es la más vista de la historia. Windows Vista Cinco años después, llego Windows Vista. El sistema operativo de 2006 tenía el sistema de seguridad más fuerte hasta el momento en la historia de la compañía. User Account Control permitía prevenir la instalación de malware y Ultimate Bit Locker protegía la información de los usuarios aún más, debido a la popularidad de las lap tops y por ende el intercambio de información. Otro gran cambio vino de la mano de Windows Media Player, desde el cual se pueden reproducir todo tipo de formatos, ver televisión y editar video.
  • 36. Windows 7 2009-2011 Windows 7 llegó en octubre de 2009 y sigue vigente en muchos equipos (en 2010 vendía siete copias al segundo) y se convirtió en su momento en el sistema operativo con mayor rapidez de venta en la historia. Windows 8 Lanzado en Octubre de 2012. También lanzó su nuevo SO para móviles Windows Phone 8. Windows 8.1 La actualización de Windows 8 tiene el "nombre código" de Windows Blue, pero todo parece indicar que se llamará Windows 8.1. Aunque aún no se sabe a ciencia cierta qué comprenderán las novedades del sistema, los ejecutivos han aclarado que no se trata de un nuevo SO, pues quieren que "haya Windows 8 para rato." El próximo mes de Junio, Microsoft dará un primer vistazo a 8.1.
  • 37. 1.10.- Conclusión. Tal vez no sea el lenguaje de programación más sencillo de aprender, pero el lenguaje ensamblador es y seguirá siendo una de las herramientas de programación más utilizadas por todas aquellas personas que desean tener un mayor grado de comprensión sobre el funcionamiento a nivel de dispositivo de una computadora personal. El lenguaje ensamblador no está relegado únicamente a computadoras antiguas con sistemas operativos en modo texto como el MS-DOS. Existe en la actualidad una gran cantidad de programas ensambladores que nos permiten programar en ambientes operativos gráficos como Windows y una muestra de ello es el ensamblador que se utilizó para probar los programas de ejemplo de este trabajo. Por lo tanto, si alguien piensa que el lenguaje ensamblador ya pasó de moda, tal vez debería reconsiderar su postura y visitar algunas de las páginas en Internet que se dedican a cubrir temas sobre programación en lenguaje ensamblador y que se actualizan diariamente, tal vez lo que descubra le haga cambiar de opinión.
  • 38. 1.11.- Bibliografía. ● http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguaje-ensamblador.shtml ● https://cosyen.files.wordpress.com/2011/02/exposicion-equipo-4.pdf ● http://www.swagger.mx/tecnologia/la-evolucion-de-windows-de-microsoft-1975-2012 ● http://club.telepolis.com/mydream/Asm/ ● http://www.ittux.edu.mx/sites/default/files/MICROCOMPUTADORAS_AL_DETALLE.pdf