Este documento describe el lenguaje ensamblador y su relación con el microprocesador. Explica que el lenguaje ensamblador es una representación simbólica del código de máquina que facilita la programación para los humanos. También describe la evolución de los microprocesadores desde los primeros modelos de 4 bits hasta los modernos de 64 bits, e indica que la CPU tiene 14 registros internos que pueden usarse en modo dual de 8 o 16 bits.
Cuadro comparativo acerca de las modulaciones AM,FM,ASK,FSK,PSK,QAM utilizadas en las telecomunicaciones. Definicones, ventajas, desventajas y aplicaciones de estas.
Cuadro comparativo acerca de las modulaciones AM,FM,ASK,FSK,PSK,QAM utilizadas en las telecomunicaciones. Definicones, ventajas, desventajas y aplicaciones de estas.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
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.