BREVE RESEÑA DE LA COMPUTACION

115
INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO BREVE RESEÑA DE LA COMPUTACION Las computadoras de la primera Generación emplearon bulbos para procesar información. Los operadores ingresaban los datos y programas en código especial por medio de tarjetas perforadas. El almacenamiento interno se lograba con un tambor que giraba rápidamente, sobre el cual un dispositivo de lectura/escritura colocaba marcas magnéticas. Esas computadoras de bulbos eran mucho más grandes y generaban más calor que los modelos contemporáneos. Eckert y Mauchly contribuyeron al desarrollo de computadoras de la Primera Generación formando una compañía privada y construyendo UNIVAC I , que el Comité del censo utilizó para evaluar el censo de 1950. La IBM tenía el monopolio de los equipos de procesamiento de datos a base de tarjetas perforadas y estaba teniendo un gran auge en productos como rebanadores de carne, básculas para comestibles, relojes y otros artículos; sin embargo no había logrado el contrato para el Censo de 1950. Comenzó entonces a construir computadoras electrónicas y su primera entrada fue con la IBM 701 en 1953. Después de un lento pero excitante comienzo la IBM 701 se convirtió en un producto comercialmente viable. Sin embargo en 1954 fue introducido el modelo IBM 650 , el cual es la razón por la que IBM disfruta hoy de una gran parte del mercado de las computadoras. La administración de la IBM asumió un gran riesgo y estimó una venta de 50 computadoras. Este número era mayor que la cantidad de computadoras instaladas en esa época en E.U. De hecho la IBM instaló 1000 computadoras. El resto es historia. Aunque caras y de uso limitado las computadoras fueron aceptadas rápidamente por las Compañías privadas y de Gobierno. A la mitad de los años 50 IBM y Remington Rand se consolidaban como líderes en la fabricación de computadoras. Segunda Generación (1959-1964) Transistor Compatibilidad Limitada:

Transcript of BREVE RESEÑA DE LA COMPUTACION

Page 1: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

BREVE RESEÑA DE LA COMPUTACION

Las computadoras de la primera Generación emplearon bulbos para procesar

información. Los operadores ingresaban los datos y programas en código especial

por medio de tarjetas perforadas. El almacenamiento interno se lograba con un

tambor que giraba rápidamente, sobre el cual un dispositivo de lectura/escritura

colocaba marcas magnéticas. Esas computadoras de bulbos eran mucho más

grandes y generaban más calor que los modelos contemporáneos.

Eckert y Mauchly contribuyeron al desarrollo de computadoras de la Primera

Generación formando una compañía privada y construyendo UNIVAC I, que el

Comité del censo utilizó para evaluar el censo de 1950. La IBM tenía el monopolio

de los equipos de procesamiento de datos a base de tarjetas perforadas y estaba

teniendo un gran auge en productos como rebanadores de carne, básculas para

comestibles, relojes y otros artículos; sin embargo no había logrado el contrato

para el Censo de 1950.

Comenzó entonces a construir computadoras electrónicas y su primera entrada fue

con la IBM 701 en 1953. Después de un lento pero excitante comienzo la IBM 701

se convirtió en un producto comercialmente viable. Sin embargo en 1954 fue

introducido el modelo IBM 650, el cual es la razón por la que IBM disfruta hoy de

una gran parte del mercado de las computadoras. La administración de la IBM

asumió un gran riesgo y estimó una venta de 50 computadoras.

Este número era mayor que la cantidad de computadoras instaladas en esa época

en E.U. De hecho la IBM instaló 1000 computadoras. El resto es historia. Aunque

caras y de uso limitado las computadoras fueron aceptadas rápidamente por las

Compañías privadas y de Gobierno. A la mitad de los años 50 IBM y Remington

Rand se consolidaban como líderes en la fabricación de computadoras.

Segunda Generación (1959-1964)Transistor Compatibilidad Limitada:

El invento del transistor hizo posible una nueva Generación de computadoras, más

rápidas, más pequeñas y con menores necesidades de ventilación. Sin embargo el

costo seguía siendo una porción significativa del presupuesto de una Compañía.

Las computadoras de la segunda generación también utilizaban redes de núcleos

Page 2: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

magnéticos en lugar de tambores giratorios para el almacenamiento primario.

Estos núcleos contenían pequeños anillos de material magnético, enlazados entre

sí, en los cuales podían almacenarse datos e instrucciones.

Los programas de computadoras también mejoraron. El COBOL desarrollado

durante la 1era generación estaba ya disponible comercialmente. Los programas

escritos para una computadora podían transferirse a otra con un mínimo esfuerzo.

El escribir un programa ya no requería entender plenamente el hardware de la

computación.

Las computadoras de la 2da Generación eran sustancialmente más pequeñas y

rápidas que las de bulbos, y se usaban para nuevas aplicaciones, como en los

sistemas para reservación en líneas aéreas, control de tráfico aéreo y simulaciones

para uso general. Las empresas comenzaron a aplicar las computadoras a tareas

de almacenamiento de registros, como manejo de inventarios, nómina y

contabilidad.

La marina de E.U. utilizó las computadoras de la Segunda Generación para crear el

primer simulador de vuelo. (Whirlwind I ). HoneyWell se colocó como el primer

competidor durante la segunda generación de computadoras. Burroughs, Univac,

NCR, CDC, HoneyWell, los más grandes competidores de IBM durante los 60s se

conocieron como el grupo BUNCH.

Tercera Generación (1964-1971)Circuitos Integrados, Compatibilidad con Equipo Mayor, Multiprogramación, Minicomputadora:

Las computadoras de la tercera generación emergieron con el desarrollo de los

circuitos integrados (pastillas de silicio) en las cuales se colocan miles de

componentes electrónicos, en una integración en miniatura. Las computadoras

nuevamente se hicieron más pequeñas, más rápidas, desprendían menos calor y

eran energéticamente más eficientes.

Antes del advenimiento de los circuitos integrados, las computadoras estaban

diseñadas para aplicaciones matemáticas o de negocios, pero no para las dos

cosas. Los circuitos integrados permitieron a los fabricantes de computadoras

incrementar la flexibilidad de los programas, y estandarizar sus modelos.

Page 3: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La IBM 360 una de las primeras computadoras comerciales que usó circuitos

integrados, podía realizar tanto análisis numéricos como administración ó

procesamiento de archivos. Los clientes podían escalar sus sistemas 360 a

modelos IBM de mayor tamaño y podían todavía correr sus programas actuales.

Las computadoras trabajaban a tal velocidad que proporcionaban la capacidad de

correr más de un programa de manera simultánea (multiprogramación).

Por ejemplo la computadora podía estar calculando la nomina y aceptando pedidos

al mismo tiempo. Minicomputadoras, Con la introducción del modelo 360 IBM

acaparó el 70% del mercado, para evitar competir directamente con IBM la

empresa Digital Equipment Corporation DEC redirigió sus esfuerzos hacia

computadoras pequeñas. Mucho menos costosas de comprar y de operar que las

computadoras grandes, las mini computadoras se desarrollaron durante la

segunda generación pero alcanzaron su mayor auge entre 1960 y 1970.

Cuarta Generación (1971 a la fecha)Microprocesador, Chips de memoria, Microminiaturización:

Dos mejoras en la tecnología de las computadoras marcan el inicio de la cuarta

generación: el reemplazo de las memorias con núcleos magnéticos, por las de

chips de silicio y la colocación de Muchos más componentes en un Chip: producto

de la microminiaturización de los circuitos electrónicos. El tamaño reducido del

microprocesador y de chips hizo posible la creación de las computadoras

personales (PC Personal Computer).

Hoy en día las tecnologías LSI (Integración a gran escala) y VLSI (integración a muy

gran escala) permiten que cientos de miles de componentes electrónicos se

almacenen en un chip. Usando VLSI, un fabricante puede hacer que una

computadora pequeña rivalice con una computadora de la primera generación que

ocupaba un cuarto completo.

IMPACTO DE LA COMPUTADORAS EN LA SOCIEDAD

El mundo moderno le debe parte de su evolución a las computadoras, ya que a través de ellas se ha brindado un mecanismo el cual permite que los niveles de

Page 4: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

desarrollo tanto económico, electrónico como cultural se acerquen de forma más rápida.

las computadoras están en nuestras vidas, se comienza a notar una dependencia y por lo tanto comienza a surgir una unión necesaria para desarrollar nuestras actividades y para alcanzar nuestras metas; pero además como lo hadicho, ARTHUR SCHLESINGER, en la revista del influyente Council of Foreign Relations, Foreign Affairs en su número de Septiembre/Octubre de 1997, en cuanto a la Democracia también se esperaque pasen cambios, en este sentido establecio que la Democracia moderna en sí misma es el fruto de ñla tecnologia y del capitalismo, furezas que son cosificadas y puestas como variables independientes y dinámicas.

En un cierto sentido, para SCHLEINGER, la tecnología está primero: ella crea el reloj, la imprenta, la brújula, la máquina de vapor….. y esas innovaciones conducen al aparecimiento del capitalismo, y con el tiempo generan el racionalismo, el individualismo….. y la Democracia. El coportamiento de la tecnología se conduce según la ley de la aceleración que en una época sustentó el progreso sobre un vasto multiplicador que dio velocidad a la sociedad de la industrializacion, dejandole algun tiempo para sus ajustes institucionales.

las computadoras han hecho que el individuo adquiera un nivel de racionalidad y por ende de critica, no obstante es de anotar que la vida diaria se mueve muco mas rapido, lo que permite que todo tienda a alinearse, es decir, todo pasa todo fluye sin atender gran parte de lo humano que tiene el ser humano.

Ahora bien el capitalismo ha encontrado en la evolucion de las maquinas su mejor refugio y permitido que en la sociedad se creen espacios que de una u otra forma permita una discriminacion, ya que no todo el mundo tiene acceso a la Red, de forma tal que que unos y otros vivan en mindos en mundos aparte en donde ya no es la Red lo que los une sino lo que los aparta. Es necesario hacer un esfuerzo grande para que ojala todas las personas podamos acceder a la Red, y de esta forma ese impacto social pueda cesar.

Al tema viene la pregunta ¿ el mundo de las computadoras o de los hombres ? y con ella se nos advierte que aunque las computadoras nos han permitido hacer la vida mas facil, es importante que el dominio por parte del hombre no decline, porque de lo contrario las computadoras nos harian parte de su vida. Ahora bien lo intereasnte es que aunque las computadoras sean de vital importancia no se permita que perdamos la naturaleza de lo humano y nos volvamos mecanicos de la naturaleza, al fin y al cabo desconocer la importnacia de la tecnolgia es como desconocer el trancurso de la historia, porque la tecnoligia es fruto del deasrrollo de los pueblos; entonces tanto el uno como el otro estan ligados por el desarrllo.

Page 5: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La tecnologia de la informacion es una de las disciplinas que rapidamente ha pasado del plano estrictamente cientifico al mundo cotidiano. Cada vez y con mayor frecuencia el hombre incorpora a su vida cotidiana una serie de instrumentos de naturaleza electornica que tienen como referncia obligada el acopio, proceasmiento om uso de datos, en su campo vital.

Además es de anotar que la comoutadora tambien puede ser considrada como mlla representacion fisica del cambio tecnologico, ella favorece su desarrllo e impulsa con ello, una gran variedad de procesos; los cambios sufridoa por las computadoras obedecieron en gran medida a transformaciones simlutaneas en los procesos decisorios desarrllados en las organizaciones por lo tanto estos cambios implican que las organizaciones se han transformado en entidades sociales que trasacienden el tiempo y el espacio incorporandoesn a un mundo virtual, una hiper realidad que difumina y acelera los hechos alejandolos en este procesode su esencia original. las computadoras ademas de camniar nuestras vidas han cambido el mundo. ---Estoy invitando a todos los maestros y profesionales de esta area y/o carrera a colaborar construyendo este sitio dedicado a esta hermosa y util profesion aportando el material apropiado a cada uno de los mas de 1,000 temas que lo componen.

Tambien los invito a aportar material a los mas de 30,000 temas que constituyen las 30 carreras profesionales que se imparten en los Institutos Tecnologicos de Mexico y se encuentran en este sitio.

www.MiTecnologico.com es un esfuerzo personal y de muchos amigos de MEXICO y el Mundo Hispano por devolver algo de lo mucho que hemos recibido en el proceso de la educacion superior, saludos Prof Lauro Soto, Ensenada, BC, Mexico

DEFINICIONES

LENGUAJE DE ALTO NIVEL,BAJO NIVEL, ENSAMBLADOR Y MAQUINA

Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una

manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las

máquinas.

Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan al lenguaje natural. Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:

Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador, que lo

Page 6: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

suministra el fabricante, para obtener el programa ejecutable en lenguaje binario de la máquina que se trate. Además, no se necesita conocer el hardware específico de dicha máquina.

Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos sin ningún significado aparente.

Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.

Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.

En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y

sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes

procedimentales.

Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de

programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se

crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de

una manera más fácil y rápida.

Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguajes de programación que

evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se

llaman de tercera generación o de alto nivel, en contraposición a los de bajo nivel o de nivel

próximo a la máquina.

[editar]Ventajas e inconvenientes

Ventajas

Genera un código más sencillo y comprensible.

Escribir un código válido para diversas máquinas y, posiblemente, sistemas operativos.

Inconvenientes

Reducción de velocidad al ceder el trabajo de bajo nivel a la máquina.

Algunos requieren que la máquina cliente posea una determinada plataforma.

[editar]Principales lenguajes de alto nivel

Ada

ALGOL

BASIC

Page 7: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

C++

C#

COBOL

Fortran

Java

Lisp

Modula-2

Pascal

Perl

PHP

PL/SQL

Python

Lenguaje de bajo nivelUn lenguaje de programación de bajo nivel es el que proporciona un set de instrucciones

aritmeticológicas sin la capacidad de encapsular dichas instrucciones en funciones que no estén ya

contempladas en la arquitectura del hardware

Contenido

[ocultar]

1 Complejidad Vs Dificultad

2 Interacción Máquina Vs Humano

3 Primera generación

4 Segunda generación

5 Véase también

[editar]Complejidad Vs Dificultad

Dicho lenguaje es muy simple o nada complicado, pero estructurar programas a ese nivel es muy difícil.

Dado que este lenguaje viene dado por las especificaciones técnicas del hardware, no permite una

abstracción fuera de lo estipulado para el microprocesador de un ordenador. Consecuentemente, es

fácilmente trasladado a lenguaje de máquina.

La estructura de los lenguajes son como sigue:

Page 8: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

1. Lenguaje Máquina - Las invocaciones a memoria, como los procesos aritmético lógicos son

posiciones literales de conmutadores físicos del hardware en su representación booleana.

Estos lenguajes son literales de tareas.

2. Lenguajes de bajo nivel - Son instrucciones que ensamblan los grupos de conmutadores

necesarios para expresar una mínima lógica aritmética. Están intimamente vinculados al

hardware. Por norma general están disponibles a nivel firmware, cmos o chip set. Estos

lenguajes estan orientados a procesos. Los procesos se componen de tareas. Contienen

tantas instrucciones como la arquitectura del hardware así haya sido diseñada.

Por ejemplo: La arquitectura CISC contiene muchas mas instrucciones a este nivel, que la

RISC.

Son denominados como ensambladores de un hardware concreto.

1. Lenguajes de medio nivel - Son aquellos que, basandose en los juegos de instrucciones

disponibles (chip set), permiten el uso de funciones a nivel aritmético, pero a nivel lógico

dependen de literales en esamblador. Estos lenguajes estan orientados a procedimientos.

Los procedimientos se componen de procesos.

Ejemplos: C, Basic.

1. Lenguajes de alto nivel - Son aquellos que permiten una máxima flexibilidad al

programador a la hora de abstraerse o de ser literal. Permiten un camino

bidireccional entre el lenguaje máquina y una expresión casi oral entre la escritura

del programa y su posterior compilación. Estos lenguajes estan orientado a objetos.

Los objetos se componen de propiedades cuya naturaleza emerge de

procedimientos.

Ejemplos: C++, Fortran, Cobol, Lisp.

1. Lenguajes de aplicaciones - Son aquellos que no permiten una

bidireccionalidad conceptual entre el lenguaje máquina y los lenguajes de alto

nivel, ni tampoco la literalidad a la hora de invocar conceptos lógicos. Se

basan en librerias creadas en lenguajes de alto nivel. Pueden permitir la

creacion de nuevas librerias, pero son propietarias y dependientes de las

suministradas por la aplicación. Estos lenguajes estan orientados a eventos.

Los eventos acontecen cuando las propiedades de un objeto interactuan con

otro.

Page 9: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Ejemplos: Visual Basic para aplicaciones.

1. Lenguajes de redes - Son aquellos que se basan en un convenio de

instrucciones totalmente independientes de la máquina, y

completamente dependientes de la red a la que están orientadas. Se

dividen en descriptivos (HTML, XML, VML), de cliente-Servidor (Java,

PHP) y de script.

La palabra bajo no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere

a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se utiliza este tipo

de lenguajes para programar controladores de dispositivos.

[editar]Interacción Máquina Vs Humano

En este tipo de lenguajes se trabaja a nivel de instrucciones, es decir, su

programación es al más fino detalle, además, está completamente

orientado a la máquina.

Adaptación - Máxima entre programación y aprovechamiento del

recurso de la máquina.

Velocidad - Máxima al contar con un acceso directo a los recursos, sin

capas intermedias.

Portabilidad - Mínima por estar restringido a las especificaciones del

fabricante.

Abstracción - Mínima por depender completamente de la técnica del

hardware.

Uso - Requiere de la máxima atención y de una organización

estructurada en base a los planos del hardware y del objetivo del

software.

[editar]Primera generación

El lenguaje de programación de primera generación (por sus siglas en

inglés: 1GL), es el lenguaje de código máquina. Es el único lenguaje que un

microprocesador entiende de forma nativa. El lenguaje máquina no puede

ser escrito o leído usando un editor de texto, y por lo tanto es raro que una

persona lo use directamente.

Page 10: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

[editar]Segunda generación

El lenguaje de programación de segunda generación (por sus siglas en

inglés: 2GL), es el lenguaje ensamblador. Se considera de segunda

generación porque, aunque no es lenguaje nativo del microprocesador, un

programador de lenguaje ensamblador debe conocer la arquitectura del

microprocesador (como por ejemplo las particularidades de sus registros o

su conjunto de instrucciones).

Lenguaje ensambladorUno o varios wikipedistas están trabajando actualmente en extender este

artículo o sección.Es posible que a causa de ello haya lagunas de contenido o deficiencias de formato. Si quieres puedes ayudar y editar, pero por favor antes de realizar correcciones mayores contáctalos en

sus páginas de discusión, o en la página de discusión del artículo para poder coordinar la redacción.

Para otros usos de este término, véase Ensamblador (desambiguación).

También ver: Ensamblador

Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente

en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul.

Abajo se ve un texto en hexadecimal y ASCII.

El lenguaje ensamblador, o assembler (assembly language en inglés ) es un lenguaje de

programación debajo nivel para los computadores, microprocesadores, microcontroladores, y

otros circuitos integradosprogramables. Implementa una representación simbólica de los códigos

de máquina binarios y otras constantes necesarias para programar una arquitectura dada

de CPU y constituye la representación más directa del código máquina específico para cada

arquitectura legible por un programador. Esta representación es usualmente definida por el

fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de

procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras

características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a

Page 11: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los

lenguajes de programación de alto nivel, que, idealmente son portables.

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

son llamados 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, altos rendimientos, o un uso de recursos controlado y reducido.

Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador

como la única manera de ser manipulados.

Page 12: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Contenido

[ocultar]

1 Características

2 Programa ensamblador

o 2.1 Número de pasos

o 2.2 Ensambladores de alto nivel

o 2.3 Uso del término

3 Lenguaje

o 3.1 Instrucciones de CPU

o 3.2 Ensamblado

o 3.3 Ejemplo

4 Diseño del lenguaje

o 4.1 Elementos básicos

4.1.1 Mnemónicos de opcode y mnemónicos extendidos

4.1.2 Secciones de datos

4.1.3 Directivas del ensamblador

o 4.2 Macros

o 4.3 Soporte para programación estructurada

5 Uso del lenguaje ensamblador

o 5.1 Perspectiva histórica

o 5.2 Uso actual

o 5.3 Aplicaciones típicas

6 Detalles adicionales

7 Ejemplos de lenguaje ensamblador

o 7.1 Ejemplo para la arquitectura x86

o 7.2 Ejemplo para el computador virtual (POCA)

o 7.3 Ejemplo para el µC Intel 8051

o 7.4 Ejemplo para el Microchip PIC16F84

8 Referencias

9 Lectura adicional

10 Véase también

11 Enlaces externos

Page 13: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

[editar]Características

El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que

su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.

El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un

microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina

distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario

reescribirlo completamente.

Los programas hechos, por un programador experto, en lenguaje ensamblador, son

generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y

ROM.) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar

cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más

rápidamente y ocupan menos espacio que con lenguajes de alto nivel.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por

un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy

ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el

lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están

disponibles en los lenguajes de alto nivel.

También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se

interrumpa durante su ejecución.

[editar]Programa ensamblador

Artículo principal: Ensamblador

Típicamente, un programa ensamblador (assembler en inglés) moderno crea código

objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes, y resolviendo

los nombres simbólicos para las localizaciones de memoria y otras entidades.1 El uso de

referencias simbólicas es una característica clave del lenguaje ensamblador, evitando tediosos

cálculos y actualizaciones manuales de las direcciones después de cada modificación del

programa. La mayoría de los ensambladores también incluyen facilidades de macros para realizar

sustitución textual - ej. generar cortas secuencias de instrucciones como expansión en línea en

vez de llamar a subrutinas.

Los ensambladores son generalmente más simples de escribir que los compiladores para

los lenguajes de alto nivel, y han estado disponibles desde los años 1950. Los ensambladores

modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC,

Page 14: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

y HP PA-RISC, así como también para el x86 (-64), optimizan la planificación de

instrucciones para explotar la segmentación del CPU eficientemente.

En los compiladores para lenguajes de alto nivel, son el último paso antes de generar el código

ejecutable.

[editar]Número de pasos

Hay dos tipos de ensambladores basados en cuántos pasos a través de la fuente son necesarios

para producir el programa ejecutable.

Los ensambladores de un solo paso pasan a través del código fuente una vez y asumen que

todos los símbolos serán definidos antes de cualquier instrucción que los refiera.

Los ensambladores del dos paso crean una tabla con todos los símbolos y sus valores en el

primer paso, después usan la tabla en un segundo paso para generar código. El ensamblador

debe por lo menos poder determinar la longitud de cada instrucción en el primer paso para

que puedan ser calculadas las direcciones de los símbolos.

La ventaja de un ensamblador de un solo paso es la velocidad, que no es tan importante como lo

fue en un momento dados los avances en velocidad y capacidades del computador. La ventaja del

ensamblador de dos pasos es que los símbolos pueden ser definidos dondequiera en el código

fuente del programa. Esto permite a los programas ser definidos de maneras más lógicas y más

significativas, haciendo los programas de ensamblador de dos paso más fáciles leer y mantener.2

[editar]Ensambladores de alto nivel

Los más sofisticados ensambladores de alto nivel proporcionan abstracciones del lenguaje tales

como:

Estructuras de control avanzadas

Declaraciones e invocaciones de procedimientos/funciones de alto nivel

Tipos de datos abstractos de alto nivel, incluyendo las estructuras/records, uniones, clases, y

conjuntos

Procesamiento de macros sofisticado (aunque está disponible en los ensambladores ordinarios

desde finales 1960 para el IBM/360, entre otras máquinas)

Características de programación orientada a objetos

[editar]Uso del término

Note que, en el uso profesional normal, el término ensamblador es frecuentemente usado tanto

para referirse al lenguaje ensamblador como también al programa ensamblador (que convierte

Page 15: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

el código fuente escrito en el lenguaje ensamblador a código objeto que luego será enlazado para

producir lenguaje de máquina). Las dos expresiones siguientes utilizan el término "ensamblador":

"El CP/CMS fue escrito en ensamblador del IBM S/360"

"El ASM-H fue un ensamblador del S/370 ampliamente usado"

La primera se refiere al lenguaje y la segundo se refiere al programa.

[editar]Lenguaje

El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de

máquina del CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra.

Cadaarquitectura de microprocesador tiene su propio lenguaje de máquina, y en consecuencia su

propio lenguaje ensamblador ya que este se encuentra muy ligado al la estructura del hardware

para el cual se programa. Los microprocesadores difieren en el tipo y número de operaciones que

soportan; también pueden tener diferente cantidad de registros, y distinta representación de los

tipos de datos en memoria. Aunque la mayoría de los microprocesadores son capaces de cumplir

esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes

ensamblador reflejan tal diferencia.

[editar]Instrucciones de CPU

La mayoría de los CPU tienen más o menos los mismos grupos de instrucciones, aunque no

necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden

realizar varían de un CPU a otro. Un CPU particular puede tener instrucciones que no tenga otro y

viceversa. Los primeros microprocesadores de 8 bits no tenían operaciones para multiplicar o

dividir números, por ejemplo, y había que hacer subrutinas para realizar esas operaciones. Otros

CPU puede que no tengan operaciones de punto flotante y habría que hacer o conseguir

bibliotecas que realicen esas operaciones.

Las instrucciones del CPU pueden agruparse, de acuerdo a su funcionalidad, en:

Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura del CPU)

Estas son operaciones realizadas por la Unidad aritmético lógica del CPU

Operaciones aritméticas. Como suma, resta, multiplicación, división, módulo, cambio de signo

Operaciones booleanas. Operaciones lógicas bit a bit como AND, OR, XOR, NOT

Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la

izquierda, a través del bit del acarreo o sin él)

Comparaciones

Page 16: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Operaciones de mover datos:

Entre los registros y la memoria:

Aunque la instrucción se llama "mover", en el CPU, "mover datos" significa en realidad copiar

datos, desde un origen a un destino, sin que el dato desaparezca del origen.

Se pueden mover valores:

desde un registro a otro

desde un registro a un lugar de la memoria

desde un lugar de la memoria a un registro

desde un lugar a otro de la memoria

un valor inmediato a un registro

un valor inmediato a un lugar de memoria

Operaciones de stack:

PUSH (escribe datos hacia el tope del stack)

POP (lee datos desde el tope del stack)

Operaciones de entrada/salida:

Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria,

desde y hacia un puerto

INPUT Lectura desde un puerto de entrada

OUTPUT Escritura hacia un puerto de salida

Operaciones para el control del flujo del programa:

Llamadas y retornos de subrutinas

Llamadas y retornos de interrupciones

Saltos condicionales de acuerdo al resultado de

la comparaciones

Saltos incondicionales

Operaciones con números reales:

El estándar para las operaciones con números

reales en los CPU está definido por el IEEE 754.

Page 17: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Un CPU puede tener operaciones de punto flotante con números reales mediante

el coprocesador numérico (si lo hay), como las siguientes:

Operaciones aritméticas. Suma, resta,

multiplicación, división, cambio de signo, valor

absoluto, parte entera

Operaciones trascendentales

Operaciones trigonométricas. Seno, coseno,

tangente, arcotangente

Operaciones con logaritmos, potencias y

raíces

Otras

El lenguaje ensamblador tiene mnemónicos para cada una de las instrucciones del CPU en adición a

otros mnemónicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras

sentencias en tiempo de ensamblado).

[editar]Ensamblado

La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y

la traducción inversa la puede efectuar un desensamblador. A diferencia de loslenguajes de alto nivel,

aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el

lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo

instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad

necesaria y simplificar la programación. Por ejemplo, para un código máquina condicional como "si X

mayor o igual que", un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que",

y "si = 0" sobre el resultado de la condición anterior. Los Ensambladores más completos también

proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de

datos.

Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas

ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de

mnemónicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador

para la arquitectura x86, se puede expresar la instrucción para mover 5 al registro AL de la siguiente

manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresaría al

revés: MOV 5, AL. Ambos lenguajes ensambladores harían exactamente lo mismo, solo que está

expresado de manera diferente. El primero usa la sintaxis de Intel, mientras que el segundo usa la

sintaxis de AT&T

Page 18: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

El uso del ensamblador no resuelve definitivamente el problema de cómo programar un sistema basado

en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a

fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y

muchas cosas más referentes a su estructura básica de funcionamiento.

[editar]Ejemplo

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden

al flujo de órdenes ejecutables por un microprocesador.

Por ejemplo, en el lenguaje ensamblador para un procesador x86:

La sentencia

MOV AL, 061h

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

El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de

máquina

Binario: 10110000

01100001 (hexadecimal: B061)

El mnemónico MOV es un código de operación u "opcode". El opcode es seguido por una lista de

argumentos o parámetros, completando una típica instrucción de ensamblador. En el ejemplo, AL es un

registro de 8 bits del procesador, al cual se le asignará el valor hexadecimal 61 especificado.

El código de máquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene

empaquetado la instrucción MOV y el código del registro hacia donde se va a mover el dato:

10110 000 | | | +--- Registro AL +-------- Intrucción MOV

En el segundo byte se especifica el número 61h, escrito en binario como 01100001, que se asignará al

registro AL, quedando la sentencia ejecutable como:

10110000 01100001

La cual puede ser entendida y ejecutada directamente por el procesador.

Page 19: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

[editar]Diseño del lenguaje

[editar]Elementos básicos

Hay un grado grande de diversidad en la manera en que los autores de los ensambladores categorizan

las sentencias y en la nomenclatura que usan. En particular, algunos describen cualquier cosa como

pseudo-operación (pseudo-Op), con excepción del mnemónico de máquina o del mnemónico extendido.

Un típico lenguaje ensamblador consiste en 3 tipos de sentencias de instrucción que son usadas para

definir las operaciones del programa:

Mnemónicos de opcode

Secciones de datos

Directivas de ensamblador

[editar]Mnemónicos de opcode y mnemónicos extendidos

A diferencia de las instrucciones (sentencias) de los lenguajes de alto nivel, instrucciones en el lenguaje

ensamblador son generalmente muy simples. Generalmente, una mnemónico es un nombre simbólico

para una sola instrucción en lenguaje de máquina ejecutable (un opcode), y hay por lo menos un

mnemónico de opcode definido para cada instrucción en lenguaje de máquina. Cada instrucción

consiste típicamente en una operación u opcode más cero o más operandos. La mayoría de las

instrucciones refieren a un solo valor, o a un par de valores. Los operandos pueden ser inmediatos

(típicamente valores de un byte, codificados en la propia instrucción), registros especificados en la

instrucción, implícitos o las direcciones de los datos localizados en otra parte de la memoria. Esto está

determinado por la arquitectura subyacente del procesador, el ensamblador simplemente refleja cómo

trabaja esta arquitectura. Los mnemónicos extendidos son frecuentemente usados para especificar una

combinación de un opcode con un operando específico, ej, el ensamblador del System/360 usa

a B como un mnemónico extendido para el BC con una máscara de 15 y NOP al BC con una máscara de

0.

Los mnemónicos extendidos son frecuentemente usados para soportar usos especializados de

instrucciones, a menudo para propósitos no obvios con respecto al nombre de la instrucción. Por

ejemplo, muchos CPU no tienen una instrucción explícita de NOP (No Operación), pero tienen

instrucciones que puedan ser usadas para tal propósito. En el CPU 8086, la instrucción XCHG

AX,AX (intercambia el registro AX consigo mismo) es usada para el NOP, con NOP siendo un pseudo-

opcode para codificar la instrucción XCHG AX,AX. Algunos desensambladores reconocen esto y

decodificarán la instrucción XCHG AX,AX como NOP. Similarmente, los ensambladores de IBM para

el System/360 usan los mnemónicos extendidos NOP y NOPR con las máscaras cero para BC y BCR.

Page 20: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Algunos ensambladores también soportan simples macroinstrucciones incorporadas que generan dos o

más instrucciones de máquina. Por ejemplo, con algunos ensambladores para elZ80, la instrucción

LD HL, BC

genera las instrucciones

LD L, C

LD H, B.3

LD HL, BC es un pseudo-opcode, que en este caso simula ser una instrucción de 16 bits, cuando se

expande se producen dos instrucciones de 8 bits que equivalen a la simulada de 16 bits.

[editar]Secciones de datos

Hay instrucciones usadas para definir elementos de datos para manejar datos y variables.

Definen el tipo de dato, la longitud y la alineación de los datos. Estas instrucciones también

pueden definir si los datos están disponibles para programas exteriores (programas

ensamblados separadamente) o solamente para el programa en el cual la sección de datos está

definida. Algunos ensambladores clasifican estas instrucciones como pseudo-ops.

[editar]Directivas del ensamblador

Los directivas del ensamblador, también llamadas los pseudo opcodes, pseudo-operaciones o pseudo-

ops, son instrucciones que son ejecutadas por un ensamblador en el tiempo de ensamblado, no por un

CPU en el tiempo de ejecución. Pueden hacer al ensamblado del programa dependiente de parámetros

entrados por un programador, de modo que un programa pueda ser ensamblado de diferentes maneras,

quizás para diversos aplicaciones. También pueden ser usadas para manipular la presentación de un

programa para hacerlo más fácil leer y mantener.

Por ejemplo, las directivas pudieran ser usadas para reservar áreas de almacenamiento y

opcionalmente su para asignar su contenido inicial. Los nombres de las directivas a menudo comienzan

con un punto para distinguirlas de las instrucciones de máquina.

Los ensambladores simbólicos le permiten a los programadores asociar nombres arbitrarios (etiquetas o

símbolos) a posiciones de memoria. Usualmente, cada constante y variable tiene un nombre para que

las instrucciones pueden referir a esas ubicaciones por nombre, así promoviendo el código

autodocumentado. En el código ejecutable, el nombre de cada subprograma es asociado a su punto de

entrada, así que cualquier llamada a un subprograma puede usar su nombre. Dentro de subprogramas,

a los destinos GOTO se le dan etiquetas. Algunos ensambladores soportan símbolos locales que son

léxicamente distintos de los símbolos normales (ej, el uso de "10$" como un destino GOTO).

Page 21: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La mayoríaPlantilla:Dubious de los ensambladores proporcionan un manejo flexible de símbolos,

permitiendo a los programadores manejar diversos espacios de nombres, calcular

automáticamente offsets dentro de estructuras de datos, y asignar etiquetas que refieren a valores

literales o al resultado de cálculos simples realizados por el ensamblador. Las etiquetas también pueden

ser usadas para inicializar constantes y variables con direcciones relocalizables.

Los lenguajes ensambladores, como la mayoría de los otros lenguajes de computador, permiten que

comentarios sean añadidos al código fuente, que son ignorados por el programa ensamblador. El buen

uso de los comentarios es aún más importante con código ensamblador que con lenguajes de alto nivel,

pues el significado y el propósito de una secuencia de instrucciones es más duro de descifrar a partir del

código en sí mismo.

El uso sabio de estas facilidades puede simplificar grandemente los problemas de codificar y mantener

el código de bajo nivel. El código fuente de lenguaje ensamblador crudo generado por compiladores o

desensambladores - código sin ningún comentario, ni símbolos con algún sentido, ni definiciones de

datos - es muy difícil de leer cuando deben hacerse cambios.

[editar]Macros

Muchos ensambladores soportan macros predefinidos, y otras soportan macros definidos (y

repetidamente redefinibles) por el programador que implican secuencias de líneas del texto en las

cuales las variables y las constantes están empotradas. Esta secuencia de líneas de texto puede incluir

opcodes o directivas. Una vez un macro ha sido definido, su nombre puede ser usado en lugar de un

mnemónico. Cuando el ensamblador procesa tal sentencia, reemplaza la sentencia por las líneas del

texto asociadas a ese macro, entonces las procesa como si hubieran existido en el archivo del código

fuente original (incluyendo, en algunos ensambladores, la expansión de cualquier macro que exista en el

texto de reemplazo).

Puesto que las macros pueden tener nombres "cortos" pero se expanden a varias o de hecho muchas

líneas de código, pueden ser usados para hacer que los programas en lenguaje ensamblador parezcan

ser mucho más cortos, requiriendo menos líneas de código fuente, como sucede con los lenguajes de

alto nivel. También pueden ser usados para añadir niveles de estructura más altos a los programas

ensamblador, opcionalmente introducen código de depuración empotrado vía parámetros y otras

características similares.

Muchos ensambladores tienen macros incorporados (o predefinidos) para las llamadas de sistema y

otras secuencias especiales de código, tales como la generación y el almacenamiento de los datos

realizados a través de avanzadas operaciones bitwise y booleanas usadas en juegos, software de

seguridad, gestión de datos, y criptografía.

Page 22: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Los macro ensambladores a menudo permiten a los macros tomar parámetros. Algunos ensambladores

incluyen lenguajes macro muy sofisticados, incorporando elementos de lenguajes de alto nivel tales

como parámetros opcionales, variables simbólicas, condiciones, manipulaciones de strings operaciones

aritméticas, todos usables durante la ejecución de un macro dado, y permitiendo a los macros guardar el

contexto o intercambiar información. Así un macro puede generar un gran número de instrucciones o

definiciones de datos en lenguaje ensamblador, basadas en los argumentos del macro. Esto pudiera ser

usado para generar, por ejemplo, estructuras de datos de estilo de records o bucles "desenrrollados", o

podría generar algoritmos enteros basados en parámetros complejos. Una organización, usando

lenguaje ensamblador, que ha sido fuertemente extendido usando tal suite de macros, puede ser

considerada que se está trabajando en un lenguaje de alto nivel, puesto que tales programadores no

están trabajando con los elementos conceptuales de más bajo nivel del computador.

Las macros fueron usados para adaptar sistemas de software de gran escala para clientes específicos

en la era del mainframe, y también fueron usados por el personal del cliente para satisfacer las

necesidades de sus patrones haciendo versiones específicas de los sistemas operativos del fabricante.

Esto fue hecho, por ejemplo, por los programadores de sistema que trabajaban con el Conversational

Monitor System / Virtual Machine (CMS/VM) de IBM y con los add-ons "real time transaction processing"

de IBM, CICS, Customer Information Control System, y ACP/TPF, el airline/financial system que

comenzó en los años 1970 y todavía corre con muchos sistemas de reservaciones

computarizados (CRS) y sistemas de tarjeta de crédito de hoy.

También es posible usar solamente las habilidades de procesamiento de macros de un ensamblador

para generar código escrito en lenguajes completamente diferentes, por ejemplo, para generar una

versión de un programa en COBOL usando un programa macro ensamblador puro conteniendo líneas

de código COBOL dentro de operadores de tiempo ensamblaje dando instrucciones al ensamblador

para generar código arbitrario.

Esto era porque, como en los años 1970 fue observado, el concepto de "procesamiento de macro" es

independiente del concepto de "ensamblaje", siendo el anterior, en términos modernos, más un

procesamiento de textos, que una generación de código objeto. El concepto de procesamiento de macro

apareció, y aparece, en el lenguaje de programación C, que soporta "instrucciones de preprocesador"

de fijar variables, y hace pruebas condicionales en sus valores. Observe que a diferencia de ciertos

macroprocesadores previos dentro de los ensambladores, el preprocesador de C no es Turing-

completo porque carecía la capacidad de bucle o "go to", esto último permitiendo a los programas hacer

bucles.

A pesar del poder del procesamiento macro, éste dejó de usarse en muchos lenguajes de alto nivel (una

importante excepción es C/C++) mientras que seguía siendo perenne para los ensambladores. Esto era

Page 23: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

porque muchos programadores estaban bastante confundidos por la sustitución de parámetros macro y

no distinguían la diferencia entre procesamiento macro, el ensamblaje y la ejecución.Plantilla:Dubious

La sustitución de parámetros macro es estrictamente por nombre: en el tiempo de procesamiento macro,

el valor de un parámetro es sustituido textualmente por su nombre. La clase más famosa

de bugs resultantes era el uso de un parámetro que en sí mismo era una expresión y no un nombre

primario cuando el escritor macro esperaba un nombre. En el macro:

foo: macro a

load a*b

la intención era que la rutina que llama proporcionaría el nombre de una variable, y la variable o

constante "global" b sería usada para multiplicar a "a". Si foo es llamado con el parámetroa-c, ocurre la

expansión macro load a-c*b. Para evitar cualquier posible ambigüedad, los usuarios de macro

procesadores pueden encerrar en paréntesis los parámetros formales dentro de las definiciones de

macros, o las rutinas que llaman pueden envolver en paréntesis los parámetos de entrada.4 Así, el

macro correcto, con los paréntesis, sería:

foo: macro a

load (a)*b

y su expansión, daría como resultado: load (a-c)*b

El PL/I y elC/C++ ofrecen macros, pero la esta facilidad solo puede manipular texto. Por otra parte, los

lenguajes homoicónicos, tales como Lisp, Prolog, y Forth, retienen el poder de los macros de lenguaje

ensamblador porque pueden manipular su propio código como datos.

[editar]Soporte para programación estructurada

Algunos ensambladores han incorporado elementos de programación estructurada para codificar el flujo

de la ejecución. El ejemplo más temprano de este acercamiento estaba en elConcept-14 macro set,

originalmente propuesto por el Dr. H.D. Mills (marzo de 1970), e implementado por Marvin Kessler en la

Federal Systems Division de IBM, que extendió el macro ensamblador del S/360 con bloques de control

de flujo IF/ELSE/ENDIF y similares.5 Esto era una manera de reducir o eliminar el uso de operaciones

GOTO en el código en lenguaje ensamblador, uno de los principales factores que causaban código

espagueti en el lenguaje ensamblador. Este acercamiento fue ampliamente aceptado a principios de los

años 1980 (los últimos días del uso de lenguaje ensamblador en gran escala).

Un curioso diseño fue A-natural, un ensamblador "orientado a la corriente" (stream-oriented) para los

procesadores 8080/Z80[cita requerida] de Whitesmiths Ltd. (desarrolladores del sistema operativo Idris, similar

al Unix), y lo que fue reportado como el primer compilador C comercial). El lenguaje fue clasificado como

un ensamblador, porque trabajaba con elementos de máquina crudos tales como opcodes, registros, y

Page 24: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

referencias de memoria; pero incorporaba una sintaxis de expresión para indicar el orden de ejecución.

Los paréntesis y otros símbolos especiales, junto con construcciones de programación estructurada

orientadas a bloques, controlaban la secuencia de las instrucciones generadas. A-natural fue construido

como el lenguaje objeto de un compilador C, en vez de la codificación manual, pero su sintaxis lógica

ganó algunos seguidores.

Ha habido poca demanda aparente para ensambladores más sofisticados debido a la declinación del

desarrollo de lenguaje ensamblador de larga escala.6 A pesar de eso, todavía se están desarrollando y

aplicando en casos donde las limitaciones de recursos o las particularidades en la arquitectura de

sistema objetivo previenen el efectivo uso de lenguajes de alto nivel.7

[editar]Uso del lenguaje ensamblador

[editar]Perspectiva histórica

Loslenguajes ensambladores fueron primero desarrollados en los años 1950, cuando fueron referidos

como lenguajes de programación de segunda generación. Por ejemplo, el SOAP (Symbolic Optimal

Assembly Program) era un lenguaje ensamblador de 1957 para el computador IBM 650. Los lenguajes

ensambladores eliminaron mucha de la propensión a errores y del consumo de tiempo de la

programación de los lenguajes de primera generación que se necesitaba con los primeros

computadores, liberando a los programadores del tedio tal como recordar códigos numéricos y cálculo

de direcciones. Una vez fueron ampliamente usados para todo tipo de programación. Sin embargo, por

los años 1980 (1990 en losmicrocomputadores), su uso había sido en gran parte suplantado por

los lenguajes de alto nivel,[cita requerida] en la búsqueda de una mejorada productividad en programación.

Hoy en día, aunque el lenguaje ensamblador es casi siempre manejado y generado por

los compiladores, todavía se usa para la manipulación directa del hardware, acceso a instrucciones

especializadas del procesador, o para resolver problemas de desempeño crítio. Los usos típicos

son drivers de dispositivo, sistemas embebidos de bajo nivel, y sistemas de tiempo real.

Históricamete, un gran número de programas han sido escritos enteramente en lenguaje ensamblador.

Los sistemas operativos fueron casi exclusivamente escritos en lenguaje ensamblador hasta la

aceptación ámplia del lenguaje de programación C en los años 1970 y principios de los 1980. También,

muchas aplicaciones comerciales fueron escritas en lenguaje ensamblador, incluyendo una gran

cantidad del software escrito por grandes corporaciones para mainframes de IBM. Los

lenguajes COBOL y FORTRAN eventualmente desplazaron mucho de este trabajo, aunque un número

de organizaciones grandes conservaran las infraestructuras de aplicaciones en lenguaje ensamblador

hasta bien entrados los años 1990.

Page 25: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La mayoría de los primeros microcomputadores confiaron en el lenguaje ensamblador codificado a

mano, incluyendo la mayoría de los sistemas operativos y de las aplicaciones grandes. Esto era porque

estos sistemas tenían limitaciones severas de recursos, impusieron idiosincráticas arquitecturas de

memoria y de pantalla, y proporcionaron servicios de sistema limitados y con errores. Quizás más

importante era la falta de compiladores de primera clase de lenguajes de alto nivel adecuados para el

uso en el microcomputador. Un factor psicológico también pudo haber jugado un papel: la primera

generación de programadores de los microcomputadores conservó una actitud de aficionado de

"alambres y alicates".

En un contexto más comercial, las más grandes razones para usar el lenguaje ensamblador era hacer

programas con mínimo tamaño, mínima sobrecarga, mayor velocidad y confiabilidad.

Los típicos ejemplos de programas grandes en lenguaje ensamblador de ese tiempo son los sistemas

operativos IBM PC DOS y aplicaciones tempranas tales como la hoja de cálculo Lotus 1-2-3 , y casi todos

los juegos populares para la familia Atari 800 de computadores personales. Incluso en los años 1990, la

mayoría de los videojuegos de cónsola fueron escritos en ensamblador, incluyendo la mayoría de los

juegos para la Mega Drive/Genesis y el Super Nintendo Entertainment System.[cita requerida] Según algunos

insiders de la industria, el lenguaje ensamblador era el mejor lenguaje de programación a usar para

obtener el mejor desempeño del Sega Saturn, una cónsola para la cual era notoriamente desafiante

desarrollar y programar juegos.8 El popular juego de arcade NBA Jam (1993) es otro ejemplo. El

ensamblador ha sido por largo trecho, el lenguaje de desarrollo primario en los computadores

hogareños Commodore 64, Atari ST, así como el ZX Spectrum. Esto fue así en gran parte porque los

dialectos del BASIC en estos sistemas ofrecieron insuficiente velocidad de ejecución, así como

insuficientes características para aprovechar completamente el hardware disponible. Algunos sistemas,

más notablemente el Amiga, incluso tienen IDEs con características de depuración y macros altamente

avanzados, tales como el freeware ASM-One assembler, comparable a las del Microsoft Visual

Studio (el ASM-Uno precede al Microsoft Visual Studio).

El ensamblador para el VIC-20 fue escrito por Don French y publicado por French Silk. Con 1639 bytes

de longitud, su autor cree que es el más pequeño ensamblador simbólico jamás escrito. El ensamblador

soportaba el direccionamiento simbólico usual y la definición de cadenas de caracteres o cadenas

hexadecimales. También permitía expresiones de direcciones que podían combinarse con las

operaciones de adición, substracción, multiplicación, división, AND lógico, OR lógico, y exponenciación.9

[editar]Uso actual

Han habido siempre debates sobre la utilidad y el desempeño del lenguaje ensamblador relativo a

lenguajes de alto nivel. El lenguaje ensamblador tiene nichos específicos donde es importante; ver

abajo. Pero, en general, los modernos compiladores de optimización[cita requerida] para traducir lenguajes de

Page 26: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

alto nivel en código que puede correr tan rápidamente como el lenguaje ensamblador escrito a mano, a

pesar de los contraejemplos que pueden ser encontrados.10 11 12 La complejidad de los procesadores

modernos y del subsistema de memoria hace la optimización efectiva cada vez más difícil para los

compiladores, así como para los programadores en ensamblador.13 14 Adicionalmente, y para la

consternación de los amantes de la eficiencia, el desempeño cada vez mayor del procesador ha

significado que la mayoría de los CPU estén desocupados la mayor parte del tiempo, con retardos

causados por embotellamientos predecibles tales como operaciones de entrada/salida y paginación de

memoria. Esto ha hecho la velocidad de ejecución cruda del código un no-problema para muchos

programadores.

Hay algunassituaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje ensamblador.

Por ejemplo cuando:

esrequerido un ejecutable binario independiente (stand-alone), es decir uno que deba ejecutarse sin

recursos a componentes de tiempo de ejecución o a bibliotecas asociadas con un lenguaje de alto nivel;

ésta es quizás la situación más común. Son programas empotrados que solo almacenan una pequeña

cantidad de memoria y el dispositivo está dirigido para hacer tareas para un simple propósito. Ejemplos

consisten en teléfonos, sistemas de combustible e ignición para automóbiles, sistemas de control del

aire acondicionado, sistemas de seguridad, y sensores

interacando directamente con el hardware, por ejemplo en drivers de dispositivo y manejadores de

interrupción

usando instrucciones específicas del procesador no explotadas o disponibles por el compilador. Un

ejemplo común es la instrucción de rotación bitwise en el núcleo de muchos algoritmos de cifrado

creando funciones vectorizadas para programas en lenguajes de alto nivel como C. En el lenguaje de

alto nivel esto es a veces ayudado por funciones intrínsecas del compilador que mapean directamente a

los mnemónicos del SIMD, pero sin embargo resulta en una conversión de ensamblador de uno a uno

para un procesador de vector asociado

es requerida la optimización extrema, ej, en un bucle interno en un algoritmo intensivo en el uso del

procesador. Los programadores de juegos toman ventaja de las habilidades de las características del

hardware en los sistemas, permitiendo a los juegos correr más rápidamente. También las grandes

simulaciones científicas requieren algoritmos altamente optimizados, ej, álgebra lineal con BLAS 10  15 o

la transformada de coseno discreta (ej, la versión SIMD en ensamblador del x264,16 (una biblioteca para

codificar streams de video)

Page 27: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

un sistema con severas limitaciones de recursos (ej, un sistema empotrado) debe ser codificado

a mano para maximizar el uso de los limitados recursos; pero esto está llegando a ser menos

común a medida que el precio del procesador decrece y el desempeño mejora

no existe ningún lenguaje de alto nivel, en un procesador nuevo o especializado, por ejemplo

escribiendo programas de tiempo real que necesitan sincronización y respuestas precisas, tales

como sistemas de navegación de vuelo, y equipo médico. Por ejemplo, en un sistema fly-by-

wire (vuelo por mandos eléctricos), la telemetría debe ser interpretada y hay que actuar dentro

de limitaciones estrictas

de tiempo. Tales sistemas deben eliminar fuentes de retrasos impredecibles, que pueden ser

creados por (algunos) lenguajes interpretados, recolección de basura automática, operaciones

de paginación, o multitarea preventiva. Sin embargo, algunos lenguajes de alto nivel incorporan

componentes de tiempo de ejecución e interfaces de sistema operativo que pueden introducir

tales retrasos. Elegir el ensamblador o lenguajes de bajo nivel para tales sistemas da a los

programadores mayor visibilidad y control sobre el proceso de los detalles

erequerido control total sobre el ambiente, en situaciones de seguridad extremadamente alta

donde nada puede darse por sentado.

se escriben virus de computadora, bootloaders, ciertos drivers de dispositivo, u otros elementos muy

cerca del hardware o al sistema operativo de bajo nivel

sescriben simuladores del conjunto de instrucciones para monitoreo, trazado y depuración de

errores donde la sobrecarga adicional es mantenida al mínimo

se hace ingeniería inversa en binarios existentes que pueden o no haber sido escritos originalmente en

un lenguaje de alto nivel, por ejemplo al crackear la protección anticopia del software propietario.

se hace ingeniería inversa y modificación de video juegos (también denominado ROM hacking), que es

posible por medio de varios métodos. El más ampliamente implementado es alterando el código del

programa a nivel de lenguaje ensamblador

se escribe código automodificable, algo para lo que el lenguaje ensamblador se presta bien

se escriben juegos y otros softwares para calculadoras gráficas 17

se escribe software compilador que genera código ensamblador, y por lo tanto los desarrolladores

deben ser programadores de lenguaje ensamblador

Page 28: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

se escriben algoritmos criptográficos que siempre deben tomar estrictamente el mismo tiempo para

ejecutar, previniendo ataques de tiempo

Sin embargo, el lenguaje ensamblador es todavía enseñado en la mayoría de los programas de ciencias

de la computación e ingeniería electrónica. Aunque hoy en día, pocos programadores trabajan

regularmente con el lenguaje ensamblador como una herramienta, los conceptos fundamentales

continúan siendo muy importantes. Tales tópicos fundamentales, como aritmética binaria, asignación de

memoria, procesamiento del stack, codificación de conjunto de caracteres, procesamiento de

interrupciones, y diseño de compiladores, serían duros de estudiar en detalle sin la comprensión de

cómo el computador opera a nivel del hardware. Puesto que el comportamiento del computador es

fundamentalmente definido por su conjunto de instrucciones, la manera lógica de aprender tales

conceptos es estudiar un lenguaje ensamblador. La mayoría de los computadores modernos tienen un

conjunto de instrucciones similares. Por lo tanto, estudiar un solo lenguaje ensamblador es suficiente

para aprender: i) los conceptos básicos; ii) reconocer situaciones donde el uso de lenguaje ensamblador

puede ser apropiado; y iii) ver cómo el código ejecutable eficiente puede ser creado por los lenguajes de

alto nivel18

[editar]Aplicaciones típicas

El lenguaje ensamblador hard-coded es típicamente usado en el ROM de arranque del sistema

(BIOS en los sistemas compatible IBM PC). Este código de bajo nivel es usado, entre otras cosas, para

inicializar y probar el hardware del sistema antes de cargar el sistema operativo, y está almacenado en

el ROM. Una vez que ha tomado lugar un cierto nivel de inicialización del hardware, la ejecución se

transfiere a otro código, típicamente escrito en lenguajes de alto nivel; pero el código corriendo

inmediatamente después de que es aplicada la energía usualmente está escrito en lenguaje

ensamblador. Lo mismo es cierto para los boot loaders.

Muchos compiladores traducen lenguajes de alto nivel a lenguaje ensamblador primero, antes de la

compilación completa, permitiendo que el código en ensamblador sea visto para propósitos

de depuración y optimización. Lenguajes de relativo bajo nivel, como C, con

frecuenciaproveen sintaxis especial para empotrar lenguaje ensamblador en cada plataforma de

hardware. El código portable del sistema entonces puede usar estos componentes específicos a un

procesador a través de una interface uniforme.

El lenguaje ensamblador también es valioso en ingeniería inversa, puesto que muchos programas

solamente son distribuidos en una forma de código de máquina. El código de máquina es usualmente

fácil de trasladar hacia lenguaje ensamblador para luego ser cuidadosamente examinado en esta forma,

pero es muy difícil de trasladar hacia un lenguaje de alto nivel. Herramientas como Interactive

Disassembler, hacen uso extenso del desensamblador para tales propósitos.

Page 29: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Un nicho que hace uso del lenguaje ensamblador es el demoscene. Ciertas competiciones requieren a

los concursantes restringir sus creaciones a un muy pequeño tamaño (ej, 256bytes, 1 KB, 4 KB ó 64

KB), y el lenguaje ensamblador es el lenguaje de preferencia para alcanzar este objetivo.19 Cuando los

recursos son una preocupación, es una necesidad la codificación en ensamblador, especialmente en

sistemas constreñidos por el procesamiento del CPU, como los primeros modelos del Amiga, y

el Commodore 64. El código optimizado en ensamblador es escrito "a mano" por los programadores en

un intento de minimizar el número de ciclos de CPU usados. Las limitaciones del CPU son tan grandes

que cada ciclo cuenta. Usar tales métodos ha habilitado, a sistemas como el Commodore 64, para

producir gráficos en 3D en tiempo real con efectos avanzados, una hazaña que puede ser considerada

improbable o incluso imposible para un sistema con un procesador de 0.99 MHz.[cita requerida]

[

editar]Dealles adicionales

Para un determinado computador personal, mainframe, sistema empotrado, y cónsola de juegos, tanto

del pasado como del presente, ha sido escrito al menos uno, y posiblemente docenas de

ensambladores. Para algunos ejemplos, vea la lista de ensambladores.

En los sistemas Unix, el ensamblador es llamado tradicionalmente as, aunque no es un simple cuerpo

de código, siendo típicamente escrito uno nuevo por cada port. Un número de variantes de Unix usan

el GAS

Dentro de los grupos de procesadores, cada ensamblador tiene su propio dialecto. A veces, algunos

ensambladores pueden leer el dialecto de otro, por ejemplo, TASM puede leer el viejo código del MASM,

pero no al revés. FASM y NASM tienen una sintaxis similar, pero cada uno soporta diferentes macros

que pueden ser difícil de trasladar de uno al otro. Las cosas básicas son siempre las mismas, pero las

características avanzadas serán diferentes20

También, los lenguajes ensambladores a veces pueden ser portables a través de diferentes sistemas

operativos en el mismo tipo de CPU. Las convenciones de llamadas entre los sistemas operativos con

frecuencia difieren ligeramente o en nada. y con cuidado es posible ganar portabilidad en el lenguaje

ensamblador, usualmente al enlazar con una biblioteca de lenguaje C que no cambia entre sistemas

operativos. Un simulador de conjunto de instrucciones (que idealmente sería escrito en lenguaje

ensamblador) puede, en teoría, procesar elcódigo objeto/binario de cualquier ensamblador) para lograr

la portabilidad incluso a través de plataformas (con una sobrecargue no mayor que la de un

Page 30: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

interpretador de bytecode típico). Esto es esencialmente lo que logra el microcódigo cuando una

plataforma de hardware cambia internamente.

Por ejemplo, muchas cosas en libc dependen del preprocesador para hacer, al programa antes de

compilar, cosas que son específicas del sistema operativo o específicas del C. De hecho, algunas

funciones y símbolos ni siquiera están garantizados que existan fuera del preprocesador. Peor aún, el

tamaño y el orden de los campos de las estructuras, tanto como el tamaño de

ciertas typedefs como off_t, no están disponibles en lenguaje ensamblador sin la ayuda de un script de

configuración, y difieren incluso entre versiones de Linux, haciendo imposible portar llamadas de

funciones en libc diferentes de los que toman simples enteros o punteros como parámetros. Para

manejar estos problemas, el proyecto FASMLIB provee una biblioteca de lenguaje ensamblador portable

para las plataformas Win32 y Linux, pero todavía está muy incompleta.21

Algunoslenguajes de muy alto nivel, como C y Borland Pascal, soportan ensamblado en línea, donde

relativamente secciones cortas de código en ensamblador puede ser empotradas dentro del código del

lenguaje de alto nivel. El lenguaje Forth comúnmente contiene un ensamblador usado para codificar

palabras.

La mayoría de la gente usa un emulador para depurar sus programas en lenguaje ensamblador.

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

2. Ventajas y desventajas del Lenguaje Ensamblador

Ventajas1.     Velocidad .- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido. 2.     Eficiencia de tamaño .- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel 3.     Flexibilidad .- Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite  

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

Page 31: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

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.Programas fuente grandes .- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce laproductividad de los programadores.Peligro de afectar recursos inesperadamente .- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel. Falta de portabilidad.- Porque para cada máquina existe un lenguaje ensamblador; por ello, evidentemente no es una selección apropiada de lenguajecuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.

3. Relación del lenguaje ensamblador con los componentes internos del procesador

        En la memoria se almacena la información en celdas especiales llamados registros los cuales tienen un nivel alto y un nivel bajo.        Unidad aritmética y lógica es la responsable de realizar como su nombre lo indica operaciones aritméticas y lógicas.        Unidad de control Se encarga de coordinar de que los otros componentes ejecuten las operaciones correctamente.        Bus interno son los canales por donde pasa la información que la máquina va a procesar (bus de entrada) o procesada (bus de salida).

Registros de uso general AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en las operaciones aritméticas y lógicas, después de la operación arroja un resultado. BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos entre la memoria y el procesador.CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en bucles(LOOP), en operaciones con cadenas(REP), y en desplazamientos(CL).DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de multiplicación y división junto con Ax y en operaciones de entrada y salidade puertos, su mitad inferior DL contiene el número de puertos.

Registros de EstadoHay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valoresdeterminados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno. 

Page 32: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) o "préstamo" (en caso de resta). Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF. PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectarerrores en transmisiones. AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal. ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero.SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos,este bit representa el signo: 0 si es positivo, 1 si es negativo. TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción. IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción externas. Si vale 0, no se reconocen tales interrupciones DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento", esto es, se procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación aritmética con signo, esto es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino.  

4. Relación entre el código binario y el lenguaje ensamblador

En el código binario se utilizan ceros y unos, mientras que el lenguaje ensamblador es una colección de símbolos mnemónicos que representan: operaciones, nombres simbólicos, operadores y símbolos especiales. La relación entre estos dos lenguajes sería que el binario es el lenguaje que la máquina entiende y el ensamblador se acerca mas lenguaje de esta.

Manejo de la memoria: Direccionamiento (interno y externo)El manejo de la memoria depende de que procesador tenga la máquina, entre los cuales a continuación se mencionan los siguientes:        Memoria de Programa        Memoria Externa de Datos        Memoria Interna de Datos        Registros de Funciones Especiales        Memoria de Bit.

El espacio de la Memoria de Programa contiene todas las instrucciones, datos, tablas y cadenas de caracteres (strings) usadas en los programas. Esta memoria se direcciona principalmente usando el registro de 16 bits llamado Data Pointer. El tamaño máximo de la Memoria de Programa es de 64 Kbytes.

Page 33: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La Memoria Externa de Datos contiene todas las variables y estructuras de datos que no caben en la memoria interna del Microprocesador. Esta memoria se direcciona principalmente por el registro de 16 bits Data Pointer , aunque también se puede direccionar un banco de Memoria Externa de Datos de 256 bytes usando los dos primeros registros de propósito general .El espacio de Memoria Interna de Datos funcionalmente es la memoria de datos más importante, ya que ahí es donde residen cuatro bancos de registros de propósito general; la pila o stack del programa; 128 bits de los 256 bits de un área de memoria direccionable por bit y todas las variables y estructuras de datos operadas directamente por el programa. El tamaño máximo de la Memoria Interna de Datos es de 256 bytes.Contiene un espacio para los denominados Registros de Funciones Especiales destinado para los puertos de entrada/salida, temporizadores y puertoserie del circuito integrado. Estos registros incluyen al Stack Pointer; al registro de la palabra de estado del programa y al Acumulador. La cantidad máxima de Registros de Funciones Especiales es 128.Todos los Registros de Funciones Especiales tienen direcciones mayores a 127 y se ubican en los 128 bytes superiores de la Memoria Interna de Datos. Estas dos áreas de la Memoria Interna de Datos se diferencian por el modo de direccionamiento usado para accesarlas. Los Registros de Funciones Especiales solo se pueden accesar usando el modo de direccionamiento Directo, mientras que los 128 bytes superiores solo se pueden accesar con el modo de direccionamiento Indirecto. Por otra parte, el espacio de Memoria de Bit se usa para almacenar variables y banderas de un bit. El tamaño máximo de la Memoria de Bit es de 256 bits, 128 de los bits comparten su espacio con 16 bytes del espacio de la Memoria Interna de Datos y los otros 128 bits lo hacen con los Registros de Funciones Especiales.

 

Lenguaje de máquinaLenguaje de máquina es el sistema de códigos directamente interpretable por un circuito

microprogramable, como el microprocesador de una computadora o el microcontrolador de

un autómata (un PLC) . Este lenguaje está compuesto por un conjunto de instrucciones que determinan

acciones a ser tomadas por la máquina. Un programa de computadora consiste en una cadena de estas

instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas

en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El

lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto

de instrucciones disponibles pueda ser similar entre ellas.

Page 34: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente

en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Abajo se

ve un texto en hexadecimal y ASCII.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos únicos

niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el

lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra

booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación.

Una visión típica de la arquitectura de computadores como una serie de capas de

abstracción: hardware, firmware,ensamblador, kernel, sistema operativoy aplicaciones.

Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en

redes de conmutación, sentó las bases para la aplicación del álgebra de Boole a las redes de

conmutación.

Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones

booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de

Page 35: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

laspuertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas

lógicos cada vez más complejos.

Shannon utilizaba el relé como dispositivo físico de conmutación en sus redes. El relé, a igual que una

lámpara eléctrica, posee dos estados: 1 ó 0, esto es, está activado, encendida, o está desactivado,

apagada.

El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos de

Shannon a circuitos con tubos de vacío, luego a redes transistorizadas, hasta llegar a los

modernos circuitos integrados cuyas cúspide lo forman los circuitos microprogramados.

Se denomina lenguaje máquina a la serie de datos que la parte física de la computadora o hardware, es capaz de interpretar.

Una computadora digital o, mejor dicho, su parte física, sólo distingue datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina valor 0 y valor 1 y que, físicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información.

La información que hace que el hardware de la computadora realice una determinada actividad de llama instrucción. Por consiguiente una instrucción es un conjunto de unos y ceros. Las instrucciones así formadas equivalen a acciones elementales de la máquina, por lo que al conjunto de dichas instrucciones que son interpretadas directamente por la máquina se denomina lenguaje máquina.

El lenguaje máquina fue el primero que empleo el hombre para la programación de las primeras computadoras. Una instrucción en lenguaje máquina puede representarse de la siguiente forma: 011011001010010011110110.

Esta secuencia es fácilmente ejecutada por la computadora, pero es de difícil interpretación, siendo aun mas difícil la interpretación de un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean frecuentes y la corrección de los mismos costosa, cuando no imposible, al igual que la verificación y modificación de los programas.

La anterior secuencia de dígitos binarios (bits) puede indicar a la computadora que: <<Traslade el contenido de la posición de memoria X a la posición de memoria Y.>>

Si lo vemos escrito de esta forma, lo entenderemos fácilmente, ya que está en nuestro lenguaje natural, pero la máquina elemental será incapaz de entender nada. Vemos, pues, que la forma de indicar a la máquina lo que debe hacer es totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben emplearse sistemas de traducción de una forma a otra.

Ya se ha dicho que en un principio el programador empleaba directamente el lenguaje máquina. En este caso el traductor era el programador; pero vimos también los problemas que esto causaba.

Con la práctica en el manejo de la máquina se cayó en la cuenta de que se podría utilizar la propia máquina para ayudar en la traducción de estos programas. Es decir, que si a una máquina elemental se le dotaba de un programa, también elemental, que tradujera un número determinado de caracteres de caracteres alfabéticos en una secuencia de unos y ceros, se podría escribir un programa constituido por una secuencia de grupos de caracteres alfabéticos, en la que cada uno

Page 36: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

de los grupos indicaría una acción a realizar por el ordenador y, una vez escrito el programa, sería la propia máquina la que pasaría los grupos de caracteres a bits.

Las ventajas de esto son evidentes, ya que para el hombre resulta mas fácil manipular grupos de caracteres y la traducción se haría de manera automática. Por ejemplo, se podría escribir: 

TRASLADAR 11010110, 00011101.

Esto indicaría que el contenido de la posición 11010110 había que pasarlo a la posición 00011101 si se sabe que al grupo alfabético TRASLADAR le corresponde la secuencia de bits 11110101. La máquina traduciría la anterior instrucción como:

11110101 11010110 00011101

Al grupo alfabético se le denomina mnemotécnico, y existirá un mnemotécnico por cada instrucción. Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de instrucciones de una determinada máquina. De esta forma aparecieron los lenguajes ensambladores (Assembler, en inglés). Poco a poco, con el avance de la programación (Software), estas primeras y sencillas ayudas se fueron haciendo más complejas, permitiendo que, además de los mnemotécnicos correspondientes a la operación a realizar, se pudieran emplear otros para indicar, por ejemplo, los operandos. La anterior instrucción se podría escribir de la siguiente forma: 

TRASLADAR POS-A POS-B

Que nos resulta de más fácil comprensión.

También se introdujo la posibilidad de indicar a la computadora la dirección de un salto en la secuencia de ejecución de un programa mediante la utilización de etiquetas. 

A los programas que permiten pasar del programa escrito de esta manera (programa fuente, en ensamblador) al lenguaje máquina también se les denomina normalmente ensambladores. Estos traductores, como ya se ha dicho, se fueron complicando cada vez más para que la labor del programador fuera más fácil, incluyendo los denominados directivos del ensamblador, que son órdenes o informaciones que el programador da al traductor, no instrucciones de lenguaje máquina. 

Aun con todas estas sofisticaciones y ayudas, el programador de lenguaje ensamblador debe conocer perfectamente el sistema físico (Hardware) de la máquina con que trabaja, pues aunque emplee mnemotécnicos, etiquetas, etc., éstas sirven para indicar una posición de memoria determinada, un registro o cualquier otra parte de la máquina. 

Por eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel, es decir, ligado con el <<hard>> concreto de una determinada máquina. Aquí radica la diferencia importante con los lenguajes más complejos, llamados de alto nivel, como el Basic, Pascal, Cobol, etc., ya que en éstos el programador no tiene porque reconocer el <<hard>> de la máquina. Trabaja con variables, constantes e instrucciones simbólicas, y es el traductor quien las transforma en las direcciones apropiadas.

Page 37: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Lenguaje compiladoUn lenguaje compilado es término un tanto impreciso para referirse a un lenguaje de

programación que típicamente se implementa mediante un compilador. Esto implica que una vez escrito

el programa, éste se traduce a partir de su código fuente por medio de un compilador en un archivo

ejecutable para una determinada plataforma (por ejemplo Solaris para Sparc,Windows NT para Intel,

etc.).

Los lenguajes compilados son lenguajes de alto nivel en los que las instrucciones se traducen del

lenguaje utilizado a código máquina para una ejecución rápida. Por el contrario unlenguaje

interpretado es aquel en el que las instrucciones se traducen o interpretan una a una siendo típicamente

unas 10 veces más lentos que los programas compilados.

Es teóricamente posible escribir un compilador o un intérprete para cualquier lenguaje, sin embargo en

algunos lenguajes una u otra implementación es más sencilla porque se diseñaron con una

implementación en particular en mente.

Algunos entornos de programación incluyen los dos mecanismos, primero el código fuente se traduce a

un código intermedio que luego se interpreta en una máquina virtual, pero que también puede

compilarse justo antes de ejecutarse. La máquina virtual y los compiladores Just in Time de Java son un

ejemplo de ello.

Algunos ejemplos típicos de lenguajes compilados:

Fortran

La familia de lenguajes de C, incluyendo C++ y Objective C pero no Java.

Ada , Pascal (incluyendo su dialecto Delphi)

Algol

OMPILADORES

Un compilador acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera. Este proceso de traducción se conoce

como compilación.

• el de los programas de partida (LA)

Page 38: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• el de los programas equivalentes traducidos (LB), normalmente el lenguaje de máquina

• el lenguaje en que está escrito el propio compilador (LC), que puede ser igual o diferente a LA. Aumenta la portabilidad del compilador si está escrito en el mismo lenguaje, es decir, se puede compilar a sí mismo.

Los programas interpretados suelen ser más lentos que los compilados, pero los intérpretes son más flexibles como entornos de programación y depuración.

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete informático corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar Partes de un compilador

Normalmente los compiladores están divididos en dos partes:

• Front End: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar.

• Back End: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End.

Esta división permite que el mismo Back End se utilice para generar el código máquina de varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el código fuente de un lenguaje de programación concreto sirva para la generación de código máquina en varias plataformas distintas.

El código que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker).

Tipos de compiladores Esta taxonomía de los tipos de compiladores no es excluyente, por lo que

puede haber compiladores que se adscriban a varias categorías:

• Compiladores cruzados: generan código para un sistema distinto del que están funcionando.

Page 39: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.

• Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.

• Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.

• Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.

Pauta de creación de un compilador: En las primeras épocas de la informática, el software de los compiladores era considerado como uno de los más complejos existentes.

Los primeros compiladores se realizaron programándolos directamente en lenguaje máquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador.

Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó intérpretes informáticos. Estas herramientas permiten generar el esqueleto del analizador sintáctico a partir de una definición formal del lenguaje de partida, especificada normalmente mediante una gramática formal y barata, dejando únicamente al programador del compilador la tarea de programar las acciones semánticas asociadas.

TRADUCTORES DE LENGUAJE

Traductor de lenguaje. Software de sistemas que convierte un código fuente del programador en su equivalente en lenguaje maquina.

Código fuente. Código de programación de nivel alto escrito por el programador.

Código objeto. Otro nombre para el código de lenguaje maquina. Intérprete. Traductor de lenguajes que convierte, ala vez, una sentencia de

programa a un código de máquina.

Sistema de numeraciónSistemas de numeración

Nociones

Page 40: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Número

Cifra

Numeral

Base Notaciones

Posicional

Aditiva Mixta

Numeraciones

Árabe

Armenia

Ática

Babilónica

China

Cirílica

Muisca

Egipcia

Etrusca

Griega

Hebrea

India

Japonesa

Maya

Romana

Un sistema de numeración es un conjunto de símbolos y reglas de generación que permiten construir todos

los números válidos.

Un sistema de numeración puede representarse como

donde:

 es el sistema de numeración considerado (p.ej. decimal, binario, etc.).

 es el conjunto de símbolos permitidos en el sistema. En el caso del sistema decimal son {0,1,...9}; en el binario son

{0,1}; en el octal son {0,1,...7}; en el hexadecimal son {0,1,...9,A,B,C,D,E,F}.

 son las reglas que nos indican qué números son válidos en el sistema, y cuáles no. En un sistema de numeración

posicional las reglas son bastante simples, mientras que la numeración romana requiere reglas algo más elaboradas.

Estas reglas son diferentes para cada sistema de numeración considerado, pero una regla común a todos es que para

construir números válidos en un sistema de numeración determinado sólo se pueden utilizar los símbolos permitidos en ese

sistema.

Para indicar en qué sistema de numeración se representa una cantidad se añade como subíndice a la derecha el número

de símbolos que se pueden representar en dicho sistema.

Page 41: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Contenido

[ocultar]

1 Ejemplos

2 Clasificación

o 2.1 Sistemas de numeración no posicionales

o 2.2 Sistemas de numeración semi posicionales

o 2.3 Sistemas de numeración posicionales

3 Teorema Fundamental de la numeración

o 3.1 Ejemplo en el sistema decimal

o 3.2 Ejemplo en el sistema binario

4 Sistema de numeración octal

5 Sistema de numeración hexadecimal

6 Operaciones con sistemas de numeración

o 6.1 Suma de números binarios

o 6.2 Resta binaria

o 6.3 Multiplicación binaria

o 6.4 División binaria

7 Tabla de conversión entre decimal, binario, hexadecimal, octal, BCD, Exceso 3 y Gray o Reflejado

8 Véase también

[editar]Ejemplos

el número 135(10) es un número válido en el sistema decimal que utiliza los símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), pero el

número 12A(10) no lo es, ya que utiliza un símbolo A no válido en este sistema decimal.

el número 35(8) es un número válido en el sistema octal que utiliza los símbolos (0, 1, 2, 3, 4, 5, 6, 7) , pero el

número 39(8) no lo es, ya que el símbolo 9 no es un símbolo válido en este sistema octal.

el número F1E4(16) es un número válido en el sistema hexadecimal que utiliza los símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,

B, C, D, E, F), pero el número FKE4(16) no lo es, ya que el símbolo K no es un símbolo válido en este sistema

hexadecimal.

Las lenguas naturales sin ser sistemas formales son sistemas que generalmente cuentan con un procedimiento para

nombrar los numerales. La base de los sistemas encontrados en las lenguas del mundo son la base 10 y la base 20,

ya que dichos sistemas se originaron en el contaje de dedos de manos (y a veces también pies).

[editar]Clasificación

Los sistemas de numeración pueden clasificarse en dos grandes grupos: posicionales y no-posicionales:

Page 42: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

En los sistemas no-posicionales los dígitos tienen el valor del símbolo utilizado, que no depende de la posición

(columna) que ocupan en el número.

En los sistemas de numeración ponderados o posicionales el valor de un dígito depende tanto del símbolo utilizado,

como de la posición que ése símbolo ocupa en el número.

Por ejemplo, el sistema de numeración egipcio es no posicional, en cambio el babilónico es posicional. Las lenguas

naturales poseen sistemas de numeración posicionales basados en base 10 ó 20, a veces con subsistemas de cinco

elementos. Además, en algunas pocas lenguas los numerales básicos a partir de cuatro tienen nombres basados en

numerales más pequeños.

[editar]Sistemas de numeración no posicionales

Estos son los más primitivos se usaban por ejemplo los dedos de la mano para representar la cantidad cinco y después se

hablaba de cuántas manos se tenía. También se sabe que se usaba cuerdas con nudos para representar cantidad. Tiene

mucho que ver con la coordinabilidad entre conjuntos. Entre ellos están los sistemas del antiguo Egipto, el sistema

denumeración romana, y los usados en Mesoamérica por mayas, aztecas y otros pueblos .

[editar]Sistemas de numeración semi posicionales

El sistema de los números romanos no es estrictamente posicional. Por esto, es muy complejo diseñar algoritmos de uso

general (por ejemplo, para sumar, restar, multiplicar o dividir). Como ejemplo, en el número romano XCIX (99 decimal) los

numerales X (10 decimal) del inicio y del fin de la cifra equivalen siempre al mismo valor, sin importar su posición dentro de

la cifra.

[editar]Sistemas de numeración posicionales

Artículo principal: Sistema de numeración posicional

El número de símbolos permitidos en un sistema de numeración posicional se conoce como base del sistema de

numeración. Si un sistema de numeración posicional tiene base bsignifica que disponemos de b símbolos diferentes para

escribir los números, y que b unidades forman una unidad de orden superior.

Ejemplo en el sistema de numeración decimal

Si contamos desde 0, incrementando una unidad cada vez, al llegar a 9 unidades, hemos agotado los símbolos disponibles,

y si queremos seguir contando no disponemos de un nuevo símbolo para representar la cantidad que hemos contado. Por

tanto añadimos una nueva columna a la izquierda del número, reutilizamos los símbolos de que disponemos, decimos que

tenemos una unidad de segundo orden (decena), ponemos a cero las unidades, y seguimos contando.

De igual forma, cuando contamos hasta 99, hemos agotado los símbolos disponibles para las dos columnas; por tanto si

contamos (sumamos) una unidad más, debemos poner a cero la columna de la derecha y sumar 1 a la de la izquierda

(decenas). Pero la columna de la izquierda ya ha agotado los símbolos disponibles, así que la ponemos a cero, y sumamos

1 a la siguiente columna (centena). Como resultado nos queda que 99+1=100.

Page 43: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

El cuentakilómetros mecánico, al utilizar el sistema de numeración posicional decimal, nos muestra lo anterior: va sumando

1 a la columna de la derecha y cuando la rueda de esa columna ha completado una vuelta (se agotan los símbolos),

se pone a cero y se añade una unidad a la siguiente columna de la izquierda.

Pero estamos tan habituados a contar usando el sistema decimal que no somos conscientes de este comportamiento, y

damos por hecho que 99+1=100, sin pararnos a pensar en el significado que encierra esa expresión.

Tal es la costumbre de calcular en decimal que la mayoría de la población ni siquiera se imagina que puedan existir otros

sistemas de numeración diferentes al de base 10, y tan válidos y útiles como este. Entre esos sistemas se encuentran el de

base 2 sistema binario, de base 8 sistema octal y el de base 16 sistema hexadecimal. También los antiguos mayas

tuvieron un sistema de numeración posicional el cual ya no se usa.

[editar]Teorema Fundamental de la numeración

Este teorema establece la forma general de construir números en un sistema de numeración posicional. Primero

estableceremos unas definiciones básicas:

, número válido en el sistema de numeración.

, base del sistema de numeración. Número de símbolos permitidos en el sistema.

, un símbolo cualquiera de los permitidos en el sistema de numeración.

,: número de dígitos de la parte entera.

, coma fraccionaria. Símbolo utilizado para separar la parte entera de un número de su parte fraccionaria.

,: número de dígitos de la parte decimal.

La fórmula general para construir un número N, con un número finito de decimales,

en un sistema de numeración posicional de base b es la siguiente:

El valor total del número será la suma de cada dígito multiplicado por la potencia de

la base correspondiente a la posición que ocupa en el número.

Esta representación posibilita la realización de sencillos algoritmos para la

ejecución de operaciones aritméticas.

[editar]Ejemplo en el sistema decimal

En el sistema decimal los símbolos válidos para construir números son {0,1,...9} (0

hasta 9, ambos incluidos), por tanto la base (el número de símbolos válidos en el

sistema) es diez

Page 44: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

En la figura inferior podemos ver el teorema fundamental de la numeración aplicado

al sistema decimal.

Los dígitos a la izquierda de la coma fraccionaria representados por dn ... d2 d1 d0 ,

toman el valor correspondiente a las potencias positivas de la base (10 en el

sistema decimal), en función de la posición que ocupan en el número, y

representan respectivamente al dígito de las n-unidades (10n), centenas (10²=100),

decenas (10¹=10) y unidades (100=1), ya que como se ve en el gráfico están

colocados en las posiciones n..., tercera, segunda y primera a la izquierda de la

coma fraccionaria.

Los dígitos a la derecha de la coma fraccionaria d-1, d-2, d-3 ... d-n representan

respectivamente al dígito de las décimas (10-1=0,1), centésimas (10-2=0,01),

milésimas (10-3=0,001) y n-ésimas (10-n) .

Por ejemplo, el número 1492,36 en decimal, puede expresarse como: 1492/36

[editar]Ejemplo en el sistema binario

Tomemos ahora el sistema binario o de base 2. En este sistema los dígitos válidos

son {0,1}, y dos unidades forman una unidad de orden superior.

En la figura inferior podemos ver el teorema fundamental de la numeración aplicado

al sistema binario.

Page 45: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Seguimos con el ejemplo del cuentakilómetros visto arriba. En este caso las ruedas

no tienen 10 símbolos (0 al 9) como en el caso del sistema decimal. En el sistema

binario la base es 2, lo que quiere decir que sólo disponemos de 2 símbolos {0,1}

para construir todos los números binarios.

En el sistema binario, para representar cifras mayores que 1 se combinan los 2

símbolos {0,1} y agrega una segunda columna de un orden superior.

Aquí las ruedas del cuentakilómetros dan una vuelta cada dos unidades. Por tanto,

una vez que contamos (sumamos) dos hemos agotado los símbolos disponibles

para esa columna, y debemos poner a cero la columna y usar otra columna a la

izquierda.

Así, si contamos en binario, tras el número 0(2 viene el 1(2, pero si contamos una

unidad más debemos usar otra columna, resultando 10(2

Sigamos contando 0(2,1(2,10(2,11(2. Al añadir una unidad a la columna de las

unidades, esa columna ha dado la vuelta (ha agotado los símbolos disponibles), y

debemos formar una unidad de segundo orden, pero como ya hay una, también

agotaremos los símbolos disponibles para esa columna, y debemos formar una

unidad de tercer orden o 100(2. Así, en el sistema binario 11(2 + 1(2 + 100(2

Ejemplos:

El número   está formado por un solo símbolo repetido tres veces. No

obstante, cada uno de esos símbolos tiene un valor diferente, que depende de

la posición que ocupa en el número. Así, el primer 1 (empezando por la

izquierda) representa un valor de   , el segundo de   y el

tercero de  , dando como resultado el valor del número:

.

[editar]Sistema de numeración octal

El sistema de numeración octal es también muy usado en la computación por tener

una base que es potencia exacta de 2 o de la numeración binaria. Esta

característica hace que la conversión a binario o viceversa sea bastante simple. El

Page 46: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

sistema octal usa 8 dígitos (0, 1, 2, 3, 4, 5, 6, 7) y tienen el mismo valor que en el

sistema de numeración decimal.

El teorema fundamental aplicado al sistema octal sería el siguiente:

Como el sistema de numeración octal usa la notación posicional entonces para el

número 3452,32 tenemos q: 2*80 + 5*81 + 4*82 + 3*83 + 3*8-1 + 2*8-2 = 2 + 40 + 4*64

+ 3*512 + 3*0,125 + 2*0,015625 = 2 + 40 + 256 + 1536 + 0,375 + 0,03125 = 1834 +

0,40625d

Entonces, 3452,32q = 1834,40625d

El sub índice q indica número octal, se usa la letra q para evitar confusión entre la

letra 'o' y el número 0. En informática, a veces se utiliza la numeración octal en vez

de la hexadecimal. Tiene la ventaja de que no requiere utilizar otros símbolos

diferentes de los dígitos. Es posible que la numeración octal se usara en el pasado

en lugar de la decimal, por ejemplo, para contar los espacios interdigitales o los

dedos distintos de los pulgares.

Es utilizado como una forma abreviada de representar números binarios que

emplean caracteres de seis bits. Cada tres bits (medio carácter) es convertido en

un único dígito octal. Okta es un término griego que significa 8.

[editar]Sistema de numeración hexadecimal

El sistema de numeración hexadecimal, de base 16, utiliza 16 símbolos. Es común

abreviar hexadecimal como hex aunque hex significa base seis. Dado que el

sistema usual de numeración es de base decimal y, por ello, sólo se dispone de

diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto

latino para suplir los dígitos que nos faltan: A = 10, B = 11, C = 12, D = 13, E = 14 y

F = 15. Como en cualquier sistema de numeración posicional, el valor numérico de

cada dígito es alterado dependiendo de su posición en la cadena de dígitos,

quedando multiplicado por una cierta potencia de la base del sistema, que en este

Page 47: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

caso es 16. Por ejemplo: 3E0,A(16) = 3×16^2 + E×16^1 + 0×16^0 + A×16^-1 =

3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625. El sistema hexadecimal actual fue

introducido en el ámbito de la computación por primera vez por IBM en 1963. Una

representación anterior, con 0–9 y u–z, fue usada en 1956 por la

computadora Bendix G-15 y algunas computadoras modernas.

[editar]Operaciones con sistemas de numeración

[editar]Suma de números binarios

La tabla de sumar para números binarios es la siguiente:

+ 0 1

0

0 1

1

1 10

Las posibles combinaciones al sumar dos bits son:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10

Note que al sumar 1 + 1 es 102, es decir, llevamos 1 a la siguiente posición de la

izquierda (acarreo). Esto es equivalente, en el sistema decimal a sumar 9 + 1, que

da 10: cero en la posición que estamos sumando y un 1 de acarreo a la siguiente

posición.

Ejemplo

1 10011000 + 00010101

Page 48: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

——————————— 10101101

[editar]Resta binaria

Es similar a la decimal, con la diferencia de que se manejan sólo dos dígitos y

teniendo en cuenta que al realizar las restas parciales entre dos dígitos de idéntica

posiciones, una del minuendo y otra del sustraendo, si el segundo excede al

primero, se sustrae una unidad del dígito de más a la izquierda en el minuendo (si

existe y vale 1), convirtiéndose este último en 0 y equivaliendo la unidad extraída a

1*2 en el minuendo de resta parcial que estamos realizando. Si es cero el dígito

siguiente a la izquierda, se busca en los sucesivos. Las tablas de Resta son:

Tabla del cero (0): 0 - 0 = 0, 1 - 0 = 1

Tabla del uno (1): 0 - 1 = no cabe, 1 - 1 = 0

Ejemplo, mostrando los equivalentes en decimal entre paréntesis para su

contraste

Restar 101010 (42) a 111111 (63):

111111 - 101010 ——————————— 010101

[editar]Multiplicación binaria

Se realiza similar a la multiplicación decimal salvo que la suma final de los

productos se hacen en binarios. Las tablas de Multiplicar son:

Tabla del cero (0): 0 * 0 = 0, 1 * 0 = 0

Tabla del uno (1): 0 * 1 = 0, 1 * 1 = 1

Ejemplo, mostrando los valores en decimal entre paréntesis para su cotejo

Multiplicar 100 (4) por 10 (2):

100 * 10 = 1000 (8)

[editar]División binaria

Page 49: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La división en binario es similar a la decimal; la única diferencia es que a la hora de

hacer las restas, dentro de la división, éstas deben ser realizadas en binario.

Ejemplo, mostrando los valores en decimal entre paréntesis para su cotejo

Dividir 100010010 (274) entre 1101 (13):

100010010 |1101 ——————-0000 010101——————— 10001 -1101——————— 01000 - 0000 ——————— 10000 - 1101 ——————— 00011 - 0000 ——————— 01110 - 1101 ——————— 00001

[editar]Tabla de conversión entre decimal, binario, hexadecimal, octal, BCD, Exceso 3 y Gray o Reflejado

DecimalBinari

oHexadecimal Octal BCD

Exceso 3

Gray o Reflejado

0 0000 0 0 0000 0011 0000

1 0001 1 1 0001 0100 0001

2 0010 2 2 0010 0101 0011

Page 50: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

3 0011 3 3 0011 0110 0010

4 0100 4 4 0100 0111 0110

5 0101 5 5 0101 1000 0111

6 0110 6 6 0110 1001 0101

7 0111 7 7 0111 1010 0100

8 1000 8 10 1000 1011 1100

9 1001 9 11 1001 1100 1101

10 1010 A 120001 0000

1111

11 1011 B 130001 0001

1110

12 1100 C 140001 0010

1010

13 1101 D 150001 0011

1011

14 1110 E 160001 0100

1001

15 1111 F 170001 0101

1000

Page 51: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Arquitectura de computadorasSe ha sugerido que Arquitectura de ordenadores (UCE) sea fusionado en este artículo o sección. (Discusión).Una vez que hayas realizado la fusión de artículos, pide la fusión de historiales en WP:TAB/F.

Una visión típica de una arquitectura de computadora como una serie de capas de

abstracción: hardware, firmware,ensamblador, kernel, sistema operativo yaplicaciones.

La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de

un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y

las implementaciones de diseño para varias partes de una computadora, con especial interés en la

forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones

de memoria.

También suele definirse como la forma de seleccionar e interconectar componentes de hardware para

crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.

El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La UCP

es la encargada de procesar la información que le llega al ordenador. El intercambio de información se

tiene que hacer con los periféricos y la UCP. Todas aquellas unidades de un sistema exceptuando la

UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la

UCP (encargada de ejecutar programas y que esta compuesta por la memoria principal, la UAL y la UC)

y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).

Page 52: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Contenido

[ocultar]

1 Introducción

2 Almacenamiento de operandos en la CPU

o 2.1 Ventajas de las arquitecturas

o 2.2 Desventajas de las arquitecturas

3 Véase también

4 Enlaces externos

[editar]Introducción

La implantación de instrucciones es similar al uso de una serie de desmontaje en

una fábrica de manufacturación. En las cadenas de montaje, el producto pasa a través de muchas

etapas de producción antes de tener el producto desarmado. Cada etapa o segmento de la cadena está

especializada en un área específica de la línea de producción y lleva a cabo siempre la misma actividad.

Esta tecnología es aplicada en el diseño de procesadores eficientes.

A estos procesadores se les conoce como pipeline processors. Estos están compuestos por una lista de

segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de

tareas computacionales. Los datos que provienen del exterior se introducen en el sistema para ser

procesados. La computadora realiza operaciones con los datos que tiene almacenados en memoria,

produce nuevos datos o información para uso externo.

Las arquitecturas y los conjuntos de instrucciones se pueden clasificar considerando los siguientes

aspectos:

Almacenamiento de operativos en la CPU: dónde se ubican los operadores aparte de la

substractora informativa (SI)

Número de operandos explícitos por instrucción: cuántos operandos se expresan en forma explícita

en una instrucción típica. Normalmente son 0, 1, 2 y 3.

Posición del operando: ¿Puede cualquier operando estar en memoria?, o deben estar algunos o

todos en los registros internos de la CPU. Cómo se especifica la dirección de memoria (modos de

direccionamiento disponibles).

Operaciones: Qué operaciones están disponibles en el conjunto de instrucciones.

Tipo y tamaño de operandos y cómo se especifican.

Page 53: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

[editar]Almacenamiento de operandos en la CPU

La diferencia básica está en el almacenamiento interno de la CPU.

Las principales alternativas son:

Acumulador .

Conjunto de registros.

Memoria

Características:

En una arquitectura de acumulador un operando está implícitamente en el acumulador siempre leyendo

e ingresando datos. (Ej: calculadora Standard -estándar-)

En la arquitectura de pila no es necesario nombrar a los operandos ya que estos se encuentran en el

tope de la pila. (Ej: calculadora de pila HP)

La Arquitectura de registros tiene solo operandos explícitos (es aquel que se nombra) en registros o

memoria.

[editar]Ventajas de las arquitecturas

Pila : Modelo sencillo para evaluación de expresiones (notación polaca inversa). Instrucciones

cortas pueden dar una buena densidad de código.

Acumulador: Instrucciones cortas. Minimiza estados internos de la máquina (unidad de control

sencilla).

Registro: Modelo más general para el código de instrucciones parecidas. Automatiza generación de

código y la reutilización de operandos. Reduce el tráfico a memoria. Una computadora actualmente

tiene como estándar 32 registros. El acceso a los datos es más rápido.

[editar]Desventajas de las arquitecturas

Pila: A una pila no se puede acceder aleatoriamente. Esta limitación hace difícil generar código

eficiente. También dificulta una implementación eficente, ya que la pila llega a ser un cuello de

botella es decir que existe dificultad para la transferencia de datos en su velocidad mk.

Acumulador: Como el acumulador es solamente almacenamiento temporal, el tráfico de memoria es

el más alto en esta aproximación.

Registro: Todos los operadores deben ser nombrados, conduciendo a instrucciones más largas.

El concepto de arquitectura en el entorno informático proporciona una descripción de la construcción y distribución física de los componentes de lacomputadora.

Page 54: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La arquitectura de una computadora explica la situación de sus componentes y permite determinar las posibilidades de que un sistema informático, conuna determinada configuración, pueda realizar las operaciones para las que se va a utilizar.

Cualquier usuario que desee adquirir un sistema informático, tanto si es una gran empresa como un particular, debe responder a una serie de preguntasprevias: ¿qué se desea realizar con el nuevo sistema informático? ¿Cuáles son los objetivos a conseguir? ¿Qué software será el más adecuado paraconseguir los objetivos marcados? ¿Qué impacto va a suponer en la organización (laboral o personal) la introducción del nuevo sistema informático?

Finalmente, cuando se haya respondido a estas preguntas, el usuario tendrá una idea aproximada de los objetivos que han de cumplir los diferentessistemas informáticos a evaluar.

En la actualidad es muy familiar el aspecto exterior de una computadora o, por lo menos, de una microcomputadoraName=g8; HotwordStyle=BookDefault; , pero se ha de advertir que, salvando las diferencias de tamaño y la posibilidad de teleproceso (manejo del sistema informático a grandes distancias a través de líneas de comunicaciones de diferentes tipos), en general, los sistemas informáticos se dividen físicamente en la unidad central del sistema y los periféricos que permiten conectarlo al mundo exterior.

La Unidad Central del Sistema es un habitáculo en forma de caja donde se sitúa el « cerebro» de la computadora, esto es, la unidad central de proceso(CPU), así como los distintos componentes que van a ayudar al sistema informático en sus operaciones habituales (bus, memorias, fuentes dealimentación eléctrica, etcétera).

La unidad central de proceso se compone de:

• Una Unidad de Control que manejará los diferentes componentes del sistema informático así como los datos a utilizar en los diferentes procesos.

• Una Unidad Aritmético-Lógica que realizará las diferentes operaciones de cálculo en las que la computadora basa su funcionamiento.

• Unos Registros del Sistema que sirven como área de trabajo interna a la unidad central de proceso.

La unidad central de proceso se conecta a una serie de memorias que le sirven como soporte para el manejo de los datos y programas que se han de utilizar mientras se encuentre operativa.

Las diferentes memorias del sistema informático (Random Access Memory o RAM y Read Only Memory o ROM) son componentes fundamentales de la computadora ya que van a ser, en el caso de la RAM, el área de trabajo donde el microprocesador va a realizar las diferentes operaciones en que se van a descomponer los procesos solicitados por el usuario, mientras que la ROM va a servir para ayudar a la computadora a realizar las diferentes operaciones de

Page 55: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

arranque del sistema informático previas a que el sistema operativo tome el control de las diferentes tareas a realizar.

La unidad central de proceso y las memorias se conectan entre ellas por medio del bus. El bus es un enlace de comunicaciones que conecta todos los componentes que configuran el sistema informático y permite la transferencia de información entre ellos. Esta información se compone de datos y órdenes de comandos para manipular los datos. Existen varias tecnologías de diseño y construcción de buses entre las que se pueden distinguir las arquitecturas ISA, EISA y MCA que se verán más adelante.

Otros componentes que se conectan al bus son los puertos de conexión de los diferentes periféricos asociados a la unidad central del sistema de la computadora y que van a permitir configurar el sistema informático para una serie diferente de operaciones funcionales que siempre han de cubrir las necesidades del usuario.

Es evidente que la configuración de un sistema informático ha de realizarse en función de los objetivos operativos que vaya a cubrir la citada computadora. Así, un sistema informático que se va a dedicar exclusivamente a CAD/CAM (diseño asistido por computadora) no tendrá una configuración similar a la de una computadora que va a dedicarse a controlar los diferentes enlaces de comunicaciones que componen una redinformática.

Los diferentes periféricos que se pueden conectar a un sistema informático se dividen en cuatro grupos principales:

• Periféricos de Entrada de Información.

• Periféricos de Almacenamiento de Información.

• Periféricos de Salida de Información.

• Periféricos de Comunicaciones.

Unidad Central del Sistema

La Unidad Central del Sistema (System Unit en inglés) es el centro de operaciones de cualquier computadora existente en el mercado actual. En la unidad central del sistema se alojan los componentes y circuitería que van a realizar las tareas fundamentales de la computadora.

Al abrir la unidad central del sistema de una computadora se pueden apreciar una serie de componentes:

- Placa principal.

- Microprocesador central o unidad central de proceso (CPU).

- Bus.

- Memoria principal.

- Otros componentes controladores.

- Fuente de alimentación eléctrica.

A continuación se estudiará detenidamente cada uno de ellos.

Page 56: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

1. Placa Principal.

Es una placa con un circuito impreso donde se conectan los elementos básicos de la computadora: el microprocesador, el bus y toda o parte de la memoria principal.

En algunos lugares también aparece denominada como placa base o placa madre.

2. Microprocesador Central o Unidad Central de Proceso (CPU).

Es el elemento fundamental de la computadora. El microprocesador va a ocuparse de la ejecución de las órdenes de comandos, los cálculosmatemáticos solicitados por las referidas órdenes, el manejo de los datos asociados a los cálculos. Otra función importante del microprocesador va a ser el control de los componentes del sistema informático conectados a él y que le dan apoyo y le permiten realizar todas las operaciones que le son solicitadas por los diferentes programas de aplicación.

El microprocesador se va a ocupar también de controlar y gestionar el tráfico de datos entre la unidad central del sistema y los periféricos optimizando los procesos a realizar por la computadora.

3. Bus.

El bus, quizá fuera mejor decir los buses ya que existen varios con diversas funciones, es un circuito que conecta el procesador central con todo el resto de componentes de la computadora.

El bus sirve para que le llegue al procesador la información y las solicitudes de trabajo, desde el exterior, y envíe hacia afuera los resultados del trabajo realizado.

4. Memoria Principal.

Es la zona de trabajo donde la computadora va a almacenar temporalmente las órdenes a ejecutar y los datos que deberán manipular esas órdenes.

Cuanto mayor sea la cantidad de memoria existente en el sistema informático, mayores serán las posibilidades de trabajo de la computadora, ya que ésta podrá manipular una cantidad superior de datos al mismo tiempo (siempre que el sistema operativo lo permita).

5. Componentes de Control.

Son elementos que sirven como apoyo al funcionamiento del microprocesador central.

Fundamentalmente, son componentes especializados en realizar determinadas operaciones, descargando al microprocesador central de estas actividades y permitiéndole obtener una mayor rapidez y efectividad en el manejo del conjunto del sistema informático.

Los controladores más importantes son el controlador de interrupciones, el generador de reloj y el controlador de acceso directo a memoria.

Page 57: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Las placas de expansión interna más importantes son las de control del subsistema de vídeo, que manejarán las señales que envía la CPU a la pantalla del sistema informático y las del controlador de los discos de la computadora que controlará el flujo de datos entre la memoria principal y el subsistema de almacenamiento.

Estos componentes serán estudiados en el apartado concreto de sus tareas dentro del sistema informático.

6. Fuente de Alimentación Eléctrica.

Las fuentes de alimentación proporcionan la energía eléctrica que necesita por la computadora para funcionar. Esa energía se estabiliza para impedir que la computadora se vea afectada por oscilaciones bruscas en el suministro de las compañías eléctricas.

La fuente de alimentación transforma la corriente alterna de 220 voltios de la red ciudadana en corriente continua y de menor voltaje, que es la que necesitan los diferentes componentes de la computadora.

Los voltajes que proporciona la fuente de alimentación son de 12 y 5 voltios. El primero se utiliza para poner en funcionamiento los componentes mecánicos de la computadora (discos, diskettes, etc.). El segundo se utiliza en los componentes electrónicos (el microprocesador, la memoria, el reloj, etc.).

En caso de que se abra la unidad central del sistema de la computadora es muy importante no manipular la fuente de alimentación; hay que tener encuenta que, si el sistema informático está enchufado y encendido, la fuente de alimentación es potencialmente peligrosa. Si se está intentando realizar alguna operación dentro de la caja de la unidad, deben manipularse cuidadosamente los cables que entran y salen de la caja de la fuente de alimentación y bajo ningún concepto intentar abrirla.

Unidad Central de Proceso

La Unidad Central de Proceso es el lugar donde se realizan las operaciones de cálculo y control de los componentes que forman la totalidad del conjunto del sistema informático.

Las CPU de las actuales computadoras son microprocesadores construidos sobre un cristal de silicio semiconductor donde se crean todos los elementos que forman un circuito electrónico ( transistores, etc.) y las conexiones necesarias para formarlo.

El microcircuito se encapsula en una pastilla de plástico con una serie de conexiones hacia el exterior, en forma de patillas metálicas, que forman su nexo de unión al resto del sistema informático. Estas pastillas de plástico, con una multitud de patillas de conexión metálicas, reciben el nombre de chips.

El microprocesador central de una computadora se divide en:

• Unidad de Control (Control Unit o CU en inglés).

• Unidad Aritmético-Lógica (Aritmethic Control Unit o ALU en inglés).

Page 58: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Registros.

La Unidad de Control maneja y coordina todas las operaciones del sistema informático, dando prioridades y solicitando los servicios de los diferentes componentes para dar soporte a la unidad aritmético-lógica en sus operaciones elementales.

La Unidad Aritmético-Lógica realiza los diferentes cálculos matemáticos y lógicos que van a ser necesarios para la operatividad de la computadora; debe recordarse que todo el funcionamiento del sistema de una computadora se realiza sobre la base de una serie de operaciones matemáticas en códigobinario.

Los Registros son una pequeña memoria interna existente en la CPU que permiten a la ALU el manejo de las instrucciones y los datos precisos para realizar las diferentes operaciones elementales.

De la misma forma que la placa principal tiene un bus para conectar la CPU con los diferentes dispositivos del sistema informático, la unidad de control tiene un bus interno para conectar sus componentesName=g12; HotwordStyle=BookDefault; .

Unidad de Control (CU)

Es la parte de la unidad central de proceso que actúa como coordinadora de todas las tareas que ha de realizar la computadora. Asimismo, se encarga de manejar todas las órdenes que la computadora necesita para realizar la ejecución de las operaciones requeridas por los programas de aplicación.

Sus funciones Básicas son:

1. Manejar todas las operaciones de acceso, lectura y escritura a cada una de las posiciones de la memoria principal donde se almacenan las instrucciones necesarias para realizar un proceso.

2. Interpretar la instrucción en proceso.

3. Realizar las tareas que se indican en la instrucción.

Esta unidad también se ocupa de controlar y coordinar a las unidades implicadas en las operaciones anteriormente mencionadas, de manera que se eviten problemas internos que se puedan producir entre los componentes de la computadora.

La unidad de control, finalmente, comunica entre sí y dirige las entradas y salidas desde y hasta los periféricos, dando el oportuno tratamiento a la información en proceso.

Para realizar su cometido, la unidad de control necesita manejar la siguiente información:

• El registro de estado.

• El registro puntero de instrucciones.

• La instrucción a ejecutar.

Page 59: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Las señales de entrada/salida.

La salida que proporcionará la unidad de control será el conjunto de órdenes elementales que servirán para ejecutar la orden solicitada.

Los pasos en que se divide este proceso son:

1. Extraer de la memoria principal la instrucción a ejecutar.

2. Tras reconocer la instrucción, la unidad de control establece la configuración de las puertas lógicas (las interconexiones de los diferentes componentes del circuito lógico) que se van a ver involucradas en la operación de cálculo solicitada por la instrucción, estableciendo el circuito que va a resolverla.

3. Busca y extrae de la memoria principal los datos necesarios para ejecutar la instrucción indicada en el paso número 1.

4. Ordena a la unidad involucrada en la resolución de la instrucción en proceso que realice las oportunas operaciones elementales.

5. Si la operación elemental realizada ha proporcionado nuevos datos, éstos se almacenan en la memoria principal.

6. Se incrementa el contenido del registro puntero de instrucciones.

Unidad Aritmética y Lógica (ALU)

Su misión es realizar las operaciones con los datos que recibe, siguiendo las indicaciones dadas por la unidad de control.

El nombre de unidad aritmética y lógica se debe a que puede realizar operaciones tanto aritméticas como lógicas con los datos transferidos por la unidad de control.

La unidad de control maneja las instrucciones y la aritmética y lógica procesa los datos.

Para que la unidad de control sepa si la información que recibe es una instrucción o dato, es obligatorio que la primera palabra que reciba sea una instrucción, indicando la naturaleza del resto de la información a tratar.

Para que la unidad aritmética y lógica sea capaz de realizar una operación aritmética, se le deben proporcionar, de alguna manera, los siguientes datos:

1. El código que indique la operación a efectuar.

2. La dirección de la celda donde está almacenado el primer sumando.

3. La dirección del segundo sumando implicado en la operación.

4. La dirección de la celda de memoria donde se almacenará el resultado.

Registros

Los Registros son un medio de ayuda a las operaciones realizadas por la unidad de control y la unidad aritmética y lógica. Permiten almacenar información, temporalmente, para facilitar la manipulación de los datos por parte de la CPU.

Page 60: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Realizando una similitud con el resto del sistema informático, los registros son a la CPU como la memoria principal es a la computadora.

Los registros se dividen en tres grupos principales:

• Registros de Propósito General.

• Registros de Segmento de Memoria.

• Registros de Instrucciones.

Seguidamente se presenta una relación completa de los tres grupos de registros que contiene un microprocesador típico como puede ser el Intel 80386:

Registros de Propósito General:

(AX) Registro de Datos

(DX) Registro de Datos

(CX) Registro de Datos

(BX) Registro de Datos

(BP) Registro Puntero Base

(SI) Registro Índice Fuente

(DI) Registro Índice Destino

(SP) Registro Puntero de la Pila

Registros de Segmento de Memoria:

(CS) Registro Segmento de Código

(SS) Registro Segmento de la Pila

(DS) Registro Segmento de Datos

(ES) Registro Segmento de Datos Extra

(DS) Registro Segmento de Datos Extra

(ES) Registro Segmento de Datos Extra

Registros de Instrucciones

(FL) Registro de «Flags» o también denominado registro de estado

(IP) Registro Puntero de Instrucción o también denominado registro Contador de Programa (PC)

De esta relación de registros los cuatro más importantes son:

• El Registro Puntero de Instrucciones.

El registro puntero de instrucciones o contador de programa indica el flujo de las instrucciones del proceso en realización, apuntando a la dirección de memoria en que se encuentra la instrucción a ejecutar.

Page 61: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Dado que las instrucciones de un programa se ejecutan de forma secuencial, el procesador incrementará en una unidad este registro cada vez que ejecute una instrucción, para que apunte a la siguiente.

La información que almacena este registro se puede modificar cuando una interrupción externa, o la propia ejecución del proceso en curso, provoque una alteración en la secuencia de operaciones. Esta alteración transferirá el control del sistema informático a otro proceso diferente al que está en ejecución.

• El Registro Acumulador.

Es el Registro donde se almacenan los resultados obtenidos en las operaciones realizadas por la unidad aritmética y lógica.

Su importancia radica en las características de la información que almacena, ya que con su contenido se realizan todas las operaciones de cálculo que ha de ejecutar la unidad aritmética y lógica.

• El registro de Estado.

El Registro de Estado o registro de «flags» no es un solo registro propiamente dicho, ya que se compone de varios registros de menor tamaño; este tamaño puede ser incluso de un solo bit.

El registro de estado se utiliza para indicar cambios de estados y condiciones en los otros registros existentes en el sistema informático. Estos cambios en la situación de los demás registros se producen debido a las modificaciones del entorno a lo largo de la ejecución de los procesos realizados por el sistema informático.

• El Registro Puntero de la Pila.

Este Registro almacena la dirección de la zona de la memoria donde está situada la parte superior de la pila.

La Pila es una zona de los registros de segmento de memoria que la unidad aritmética y lógica utiliza para almacenar temporalmente los datos que está manipulando. Cuando la cantidad de datos a manejar es demasiado grande u otras necesidades del proceso impiden que estos datos puedan almacenarse en los registros creados para ello se envían a la pila, donde se almacenan hasta que la unidad de control recupera la información para que la procese la unidad aritmética y lógica.

La ventaja de manejar una pila como almacén de información es que la información que se guarda en ella tiene que entrar y salir, obligatoriamente, por una sola dirección de memoria. Esto permite que la unidad de control no necesite conocer más que esa dirección para poder manejar los datos almacenados en la pila.

Memoria Principal

La Memoria Principal es la zona de la unidad central de sistema que almacena la información, en forma de programas y datos, que se va a procesar seguidamente o

Page 62: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

va a servir de apoyo a las diferentes operaciones que se van a efectuar por la computadora.

La posibilidad del proceso inmediato de la información que almacena la memoria principal es su característica fundamental, ya que, mientras que los datos existentes en la memoria principal pueden ser procesados de inmediato por la unidad central de proceso, la información contenida en la memoria auxiliar (discos, cintas, etc.) no puede ser procesada directamente por la unidad central de proceso.

La memoria principal está conectada directamente a los buses, que son su medio de comunicación con la unidad central de proceso del sistema informático. La cantidad de memoria existente en una computadora se verá limitada por la capacidad de direccionamiento del bus; esto forma el Mapa de Memoria.

La memoria principal está compuesta lógicamente por una serie de celdas de bits que permiten almacenar en cada una de ellas un bit de información en código binario (0, 1) que será parte de un dato o una instrucción.

Para poder identificar cada una de las celdas de la memoria, éstas se numeran; a este número se le llama dirección y es el medio a través del cual la unidad de control puede manejar la información.

Las direcciones de la memoria se localizan a través del mapa de memoria. La dirección de cada celda de la memoria se establece por una matriz en la que los parámetros son el número total de direcciones y la longitud de palabra que maneja el sistema informático. Esto supone una limitación, ya que la computadora sólo puede manejar un número limitado de bits de dirección en sus operaciones de direccionamiento.

La Palabra representa la cantidad de bits de información manejada en paralelo por la computadora. Tamaños típicos de palabras son 8 bits, 16 bits, 32 bits, etc.

Una vez localizada la dirección de la celda de memoria se podrán realizar dos operaciones: leer la información existente en ella o bien escribir nuevainformación para poder ser almacenada y posteriormente procesada.

Para poder determinar si el sistema informático va a leer o escribir se utiliza el registro de datos. El registro de datos es un bit que, según el valor de la información que contenga (0,1) indica a la unidad de control si se va a leer o escribir en el acceso a la memoria que se esté realizando en ese momento.En ambos casos, esta operación se realiza a través del bus de datos.

Cuando la unidad de control lee de la celda de memoria, necesita que se le proporcione una dirección a la cual ir a leer. La información existente en la celda no se destruye.

Cuando la unidad de control escribe en la celda de memoria, debe recibir dos informaciones: la dirección de la memoria donde escribir y la información que se debe escribir propiamente dicha. La información existente en la celda de memoria previamente se destruye, ya que lo que había escrito se sustituye por una nueva información.

Page 63: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

La memoria principal se divide fundamentalmente en dos partes: Volátil y No Volátil.

La Memoria Volátil pierde la información almacenada en su interior si el sistema informático que la soporta es apagado. Esta parte de la memoria principal se conoce como RAM (Memoria de Acceso Aleatorio o Random Access Memory).

La parte de la Memoria principal que No es Volátil es la ROM (Memoria de Sólo Lectura o Read Only Memory). Esta memoria es de sólo lectura y la computadora no puede escribir sobre ella. Su función principal es el arranque del sistema informático.

Las Memorias Volátiles pueden ser estáticas, también llamadas RAM (Memorias de Acceso Aleatorio o Random Access Memory), o dinámicas, denominadas en este caso DRAM (Memorias Dinámicas de Acceso Aleatorio o Dinamic Random Access Memory). Más adelante se verán más detenidamente.

Las Memorias No Volátiles se dividen en memorias de Sólo Lectura (ROM) y en otras que permiten la Manipulación de la Información que contienen por diversos medios especiales que se verán más adelante.

Existen dos modos distintos de Acceso a la Memoria:

• Acceso por Palabras.

• Acceso por Bloques.

1. Acceso por Palabras.

También se le denomina acceso aleatorio. La operación de acceso se realiza sobre una sola palabra de información. Recuérdese que palabra es la cantidad de bits que maneja el sistema informático al mismo tiempo.

Este tipo de acceso únicamente se utiliza con memorias estáticas (RAM) ya que el tiempo de acceso empleado es siempre el mismo.

2. Acceso por Bloques.

Es el modo de acceso utilizado en las memorias dinámicas. Consiste en empaquetar en un bloque un conjunto de datos al que se añade una cabecera para identificarlo. El acceso se realizará a la cabecera del bloque y una vez en ella se accederá a la información que contiene.

El acceso en las memorias dinámicas se realiza por bloques, debido a que tardan más tiempo que las estáticas en acceder a una zona de la memoria. La ventaja es que una vez que acceden a la zona donde se sitúa el bloque son muy rápidas en acceder a la información existente.

Generalmente, la memoria que posee una computadora recién adquirida no es la máxima que el bus puede direccionar, por lo que la memoria principal puede ampliarse incrementando el número de unidades de memoria conectadas. Conviene recordar que las placas de memoria son un factor fundamental en el costo total de adquisición del sistema informático.

Page 64: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Debe tenerse en cuenta que si la cantidad de memoria principal del sistema informático no es muy grande el procesador se verá restringido en supotencia por la limitada capacidad de manipulación y acceso a los datos.

Las Tecnologías para fabricar memorias se caracterizan por:

• Coste.

• Tiempo de acceso.

• Capacidad de almacenamiento.

La Optimización se consigue con una gran capacidad de almacenamiento, un tiempo de acceso muy corto y un costo pequeño.

Las memorias se dividen físicamente en:

1. Soporte de Almacenamiento de la Información.

Generalmente son de naturaleza magnética. Está compuesto por pequeños dipolos que pueden tomar dos estados en los que la información toma unvalor en cada uno de ellos. Cada estado se obtiene por medio de la aplicación de una señal eléctrica exterior generada por el elemento de lectura y escritura.

2. Elemento de Escritura y Lectura.

Este dispositivo introducirá y obtendrá la información de la memoria.

Para Escribir el dispositivo produce una corriente eléctrica local que provoca un cambio estable en el campo magnético de la celda de memoria.

Para Leer el dispositivo determinará el campo magnético de la celda de memoria y sabrá cual es el valor existente.

3. Mecanismo de Direccionamiento.

Pueden ser de dos tipos dependiendo de que las memorias sean estáticas o dinámicas.

En las Memorias Estáticas el direccionamiento es un cableado directo a la celda de memoria.

En las Memorias Dinámicas se utiliza una información de control almacenada con los datos que configuran el circuito para direccionar la lectura o escritura al lugar donde se almacena la información.

La memoria se divide en varias capas o niveles con una estructura cuya forma puede recordarnos a una estructura piramidal.

Nombre Tamaño Máximo Tiempo de Acceso

Registros Hasta 200 Bytes Menos de 10 Nanosegundos

Memoria Caché Hasta 512 Bbytes Entre 10 y 30 Nanosegundos

Page 65: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Memoria Principal Más de 1 Gigabyte Entre 30 y 100 Nanosegundos

El vértice de la pirámide sería una pequeña cantidad de memoria, los registros, que se caracterizan por una capacidad de almacenamiento de información muy pequeña, pero que poseen la ventaja de tener un tiempo de acceso muy reducido, inferior a los 10 nanosegundos.

La base de nuestra hipotética pirámide es la memoria principal, donde existe una mayor cantidad de espacio (puede llegar hasta 1 gigabyte, esto es, mil millones de bytes), pero que tiene la desventaja de que el tiempo de acceso es muy superior, lo que la convierte en mucho más lenta que los registros.

Entre ambas se situaría una zona de memoria que se llama memoria caché. La memoria caché es una zona especial de memoria que sirve para optimizar los tiempos de acceso a la memoria RAM por métodos estadísticos.

Memoria de Acceso Aleatorio (RAM)

Las Memorias de Acceso Aleatorio (RAM: Random Access Memory) son memorias construidas sobre semiconductores donde la información se almacena en celdas de memoria que pueden adquirir uno cualquiera de los dos valores del código binario.

Las memorias de acceso aleatorio son memorias en la que se puede leer y escribir información. Permite el acceso a cualquier información que contenga con la misma velocidad. Esto significa que se puede acceder aleatoriamente a cualquier información almacenada sin que se afecte la eficiencia del acceso. Contrasta con las memorias secuenciales, por ejemplo una cinta magnética, donde la facilidad de acceso a una información depende del lugar de la cinta donde esté almacenada.

Las tecnologías de memorias RAM se basan en Celdas de Memoria. La memoria RAM es volátil, esto es, cuando se corta la alimentación eléctrica se pierde toda la información que estuviera almacenada en este tipo de memoria. La comunicación de la RAM con la CPU se realiza a través del Bus de Direcciones y el Bus de Datos.

La memoria RAM se utiliza tanto para almacenar temporalmente programas y datos como para guardar los resultados intermedios que se están manipulando durante un proceso.

Una celda de memoria concreta de la RAM se puede referenciar con una dirección de Segmento de Memoria y un valor determinado dentro de ese segmento llamado «desplazamiento».

La RAM está dividida en segmentos de memoria para facilitar su manejo por la unidad de control. Los segmentos de memoria tienen un tamaño múltiplo de 16, de 0 a F en Hexadecimal. El rango total varía desde 0000 hasta un valor Hexadecimal que depende de la cantidad de semiconductores de memoria RAM con la que se haya configurado el sistema de la computadora.

Los segmentos de memoria se agrupan en diferentes Áreas de Trabajo que permiten delimitar las diversas funciones que se realizan en la memoria.

Page 66: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Las áreas de la memoria son:

• Memoria Convencional.

• Memoria Extendida.

La Memoria Convencional viene delimitada por la capacidad de direccionamiento de memoria de la CPU de la computadora y la capacidad de manejo de memoria que sea capaz de realizar el sistema operativo que gestiona el sistema informático.

Se puede ver un ejemplo en el microprocesador Intel 8088 que constituía la CPU de los primeros Personal Computer de IBM; este microprocesador eracapaz de direccionar un máximo de 1 megabyte de memoria, por ello, las primeras versiones del sistema operativo que lo gestionaba no necesitaban manejar más de 640 kilobytes para poder realizar su trabajo.

En la actualidad, las unidades centrales de proceso, como el microprocesador 80486, pueden llegar a manejar hasta 4 gigabytes de memoria, por lo que los sistemas operativos como OS/2 o WINDOWS han previsto esta posibilidad, pudiendo manejar esa cantidad de memoria.

La Memoria Convencional se Divide en:

• Memoria Baja.

• Memoria Alta.

La Memoria Baja es el área de memoria del sistema. Ocupa las primeras direcciones de la memoria convencional y está ocupada por las tablas de losvectores de las interrupciones, las rutinas de la ROM-BIOS y la parte residente del sistema operativo.

La Memoria Alta, también se denomina área de memoria del usuario, es la zona en la que se sitúan los códigos de los programas ejecutables y los datos que éstos manejan en las diferentes aplicaciones que la computadora ejecuta.

Puede ocurrir que la memoria convencional, es decir, la memoria que existe en la configuración de la computadora no sea suficiente para poder realizar ciertas operaciones en ese sistema informático; para poder solventar ese problema se utiliza la memoria extendida.

La Memoria Extendida se utiliza en computadoras que poseen una CPU que puede direccionar una gran cantidad de memoria, más de 1 megabyte, asociada a sistemas operativos que permiten gestionarla correctamente, es decir, los sistemas operativos multitareas o multiusuarios como UNIX, WINDOWS, sistemas operativos LAN, etc.

Estos sistemas operativos permiten instalar el código de los programas de aplicaciones y los datos que éstos manejan fuera del área de la memoria convencional denominada área de memoria del usuario, pudiendo, por tanto, realizar más de un proceso al mismo tiempo o permitiendo trabajar a varios usuarios a la vez en la misma computadora, como en una red de área local.

Page 67: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Sin embargo, puede ocurrir que la memoria extendida no tenga el tamaño suficiente para que todos los procesos o todos los usuarios puedan realizar sus tareas al mismo tiempo; una solución que se utiliza para resolver este problema es una simulación de la memoria de trabajo llamada Memoria Virtual.

Esta memoria virtual consiste en que cuando el sistema informático intenta utilizar más memoria de trabajo que la que realmente existe, el gestor de la memoria salva una parte de la información que existe en la memoria, en el disco duro del sistema informático.

La parte de la memoria salvada en el disco se llama página; esta página de memoria almacenada queda disponible en la memoria de trabajo para ser utilizada por el sistema informático. Cuando la computadora necesite utilizar la información almacenada en la página guardada en el disco del sistema informático volverá a repetir el proceso salvando otra página de memoria en el disco y recuperando la que estaba almacenada en él.

La Memoria Virtual tiene Ventajas e Inconvenientes.

Entre las Ventajas merece la pena destacar que nos permite utilizar una gran cantidad de software, al mismo tiempo dentro del sistema informático, que de otra forma no se podría utilizar al no tener suficiente memoria y que nos permite utilizar mejor los recursos del sistema informático.

El principal Inconveniente que conlleva la memoria virtual es que si existe una excesiva cantidad de páginas se ralentiza considerablemente lavelocidad de proceso del sistema informático al tener que acceder constantemente al disco, pudiendo, por ello, causar colapsos en los diferentes procesos.

Un tipo diferente de ampliación de la memoria de trabajo es la denominada Memoria Expandida. Este tipo de memoria utiliza una serie de bancos de memoria en forma de circuitos integrados que se añaden a la circuitería básica de la computadora.

El estándar de memoria expandida lo instituyeron Lotus, Intel y Microsoft, por lo que en algunos lugares puede aparecer como memoria LIM.

La memoria expandida utilizaba una zona de la memoria convencional para crear un mapa de la cantidad de memoria expandida que se añade al sistema informático. El mapa permitirá que, cuando un programa de aplicación lo solicite, el gestor de la memoria expandida distribuya por las diferentes páginas en que se dividen los bancos de memoria los datos que la aplicación no puede manejar en la memoria convencional.

Como los tipos de memorias vistos anteriormente, la Memoria Expandida tiene también ventajas e inconvenientes.

La principal Ventaja es que al no realizar accesos al disco del sistema informático es mucho más rápida que la memoria virtual, pero el Inconveniente con que se encuentra la memoria expandida es que como los que tienen que solicitar su utilización son los propios programas de aplicación, en este tipo de memorias sólo se pueden almacenar datos, debiéndose colocar el código de los programas de aplicación en la memoria convencional.

Page 68: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Existen dos tipos de memorias RAM:

• RAM Estáticas.

Son memorias RAM convencionales que mantienen la información almacenada en ellas permanentemente, mientras se mantenga la alimentación eléctrica.

• RAM Dinámicas (DRAM).

La diferencia fundamental entre este tipo de memorias y las memorias RAM estáticas es que debido a que la celda de memoria donde almacenan la información tiende a descargarse, por tanto a perder la información almacenada en ella, se ha de producir un «refresco», esto es, una regrabación de la información almacenada cada pocos milisegundos para que no se pierdan los datos almacenados.

La ventaja con respecto a las memorias RAM convencionales es su bajo costo para tamaños de memorias medios y grandes.

Un tipo específico de memorias DRAM son las VRAM (Vídeo RAM). Este tipo de memorias está diseñadas específicamentepara almacenar los datos de vídeo de los sistemas informáticos. Estas memorias son especialmente útiles para manejar subsistemas de vídeo, ya que su necesidad de refresco constante permite un manejo más sencillo de las cambiantes señales de vídeo.

Memoria ROM

La ROM (Read Only Memory) es una «Memoria Sólo de Lectura». En ella sólo se puede leer la información que contiene, no es posible modificarla. En este tipo de memoria se acostumbra a guardar las instrucciones de arranque y el funcionamiento coordinado de la computadora.

Físicamente, las memorias ROM son cápsulas de cristales de silicio. La información que contienen se graba de una forma especial por sus fabricantes oempresas muy especializadas.

Las memorias de este tipo, al contrario que las RAM, no son volátiles, pero se pueden deteriorar a causa de campos magnéticos demasiado potentes.

La comunicación con el procesador se realiza, al igual que en las memorias RAM, a través de los buses de direcciones y datos.

Al existir sólo la posibilidad de lectura, la señal de control, que en la RAM se utilizaba para indicar si se iba a leer o escribir, sólo va a intervenir para autorizar la utilización de la memoria ROM.

Además de las ROM, en las que sólo puede grabar información el fabricante de la memoria, existen otros tipos de memorias no volátiles que se pueden modificar de diversas formas y son de una flexibilidad y potencia de uso mayor que las simples ROM. La utilización de este tipo de memorias permite a los usuarios configurar computadoras dedicadas a tareas concretas, modificando simplemente la programación de los bancos de memoria del sistema informático. Estas memorias son:

Page 69: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• PROM (Programable Read Only Memory o Memoria Programable Sólo de Lectura).

Las memorias PROM son memorias sólo de lectura que, a diferencia de las ROM, no vienen programadas desde la fábrica donde se construyen, sino que es el propio usuario el que graba, permanentemente, con medios especiales la información que más le interesa.

• EPROM (Erasable-Programable Read Only Memory o Memoria Borrable y Programable Sólo de Lectura).

Las EPROM tienen la ventaja, con respecto a las otras memorias ROM, de que pueden ser reutilizables ya que, aunque la información que se almacena en ellas permanece permanentemente grabada, ésta se puede borrar y volver a grabar mediante procesos especiales, como puede ser el mantenerlas durante treinta minutos bajo una fuente de rayos ultravioletas para borrarlas.

• EEPROM (Electrically Erasable-Programable Read Only Memory o Memoria Borrable y Programable Eléctricamente Sólo de Lectura).

Las EEPROM aumentan, más si cabe, su ventaja con respecto a los anteriores tipos de memorias, ya que la información que se almacena en ellas se puede manipular con energía eléctrica y no es necesaria la utilización de rayos ultravioletas.

Memoria Caché

La Memoria Caché es una zona especial de la memoria principal que se construye con una tecnología de acceso mucho más rápida que la memoria RAM convencional. La velocidad de la caché con respecto a la memoria RAM convencional es del orden de 5 a 10 veces superior.

A medida que los microprocesadores fueron haciéndose más y más rápidos comenzó a producirse una disfunción con la velocidad de acceso a la memoria de trabajo que se conectaba a ellos en el sistema informático.

Cada vez que el microprocesador del sistema informático accede a la memoria RAM para leer o escribir información tiene que esperar hasta que la memoria RAM está lista para recibir o enviar los datos. Para realizar estas operaciones de lectura y escritura más rápidamente se utiliza un subsistema de memoria intermedia entre el microprocesador y la memoria RAM convencional que es la denominada memoria caché.

El funcionamiento de la memoria caché se basa en que al cargar una información en la memoria principal (sean instrucciones o datos) ésta se carga en zonas adyacentes de la memoria. El controlador especial situado dentro del subsistema de la memoria caché será el que determine dinámicamente qué posiciones de la memoria RAM convencional pueden ser utilizadas con más frecuencia por la aplicación que está ejecutándose en ese momento y traslada la información almacenada en ellas a la memoria caché.

La siguiente vez que el microprocesador necesite acceder a la memoria RAM convencional existirá una gran probabilidad de que la información que

Page 70: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

necesita encontrar se encuentre en las direcciones de memoria adyacentes a las ya utilizadas. Como estas direcciones de memorias adyacentes ya se encuentran almacenadas en la memoria caché, el tiempo de acceso a la información disminuye en gran medida.

La utilización de algoritmos estadísticos de acceso a los datos permiten una gestión mucho más racional del manejo de la memoria RAM convencional, disminuyendo los tiempos de acceso a la memoria convencional y acercando ese tiempo de acceso al de la propia caché.

La memoria caché carga en su área de memoria propia el segmento de la memoria principal contiguo al que se está procesando. Debido a que, estadísticamente, existe una gran probabilidad de que la siguiente área de memoria que necesite la aplicación que está corriendo en ese momento sea la que se encuentra en el área de la caché, se optimiza el tiempo de acceso a la memoria, ya que debe recordarse que el acceso a la memoria caché es mucho más rápido que el acceso a la memoria RAM convencional.

El tamaño de las memorias caché más habituales oscila entre los 8 y los 64 kbytes.

Buses

El Bus es la vía a través de la que se van a transmitir y recibir todas las comunicaciones, tanto internas como externas, del sistema informático.

El bus es solamente un Dispositivo de Transferencia de Información entre los componentes conectados a él, no almacena información alguna en ningún momento.

Los datos, en forma de señal eléctrica, sólo permanecen en el bus el tiempo que necesitan en recorrer la distancia entre los dos componentes implicados en la transferencia.

En una unidad central de sistema típica el bus se subdivide en tres buses o grupos de líneas.

• Bus de Direcciones.

• Bus de Datos.

• Bus de Control.

Bus de Direcciones

Es un canal de comunicaciones constituido por líneas que apuntan a la dirección de memoria que ocupa o va a ocupar la información a tratar.

Una vez direccionada la posición, la información, almacenada en la memoria hasta ese momento, pasará a la CPU a través del bus de datos.

Para determinar la cantidad de memoria directamente accesible por la CPU, hay que tener en cuenta el número de líneas que integran el bus de direcciones, ya que cuanto mayor sea el número de líneas, mayor será la cantidad de direcciones y, por tanto, de memoria a manejar por el sistema informático.

Page 71: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Bus de Datos

El bus de datos es el medio por el que se transmite la instrucción o dato apuntado por el bus de direcciones.

Es usado para realizar el intercambio de instrucciones y datos tanto internamente, entre los diferentes componentes del sistema informático, como externamente, entre el sistema informático y los diferentes subsistemas periféricos que se encuentran en el exterior.

Una de las características principales de una computadora es el número de bits que puede transferir el bus de datos (16, 32, 64, etc.). Cuanto mayor sea este número, mayor será la cantidad de información que se puede manejar al mismo tiempo.

Bus de Control

Es un número variable de líneas a través de las que se controlan las unidades complementarias.

El número de líneas de control dependerá directamente de la cantidad que pueda soportar el tipo de CPU utilizada y de su capacidad de direccionamiento de información.

Arquitecturas de Bus

Dependiendo del diseño y la tecnología que se utilice para construir el bus de una microcomputadora se pueden distinguir tres arquitecturas diferentes:

• Arquitectura ISA.

• Arquitectura MCA.

• Arquitectura EISA.

• Arquitectura ISA.

• Arquitectura ISA

La Arquitectura ISA (Industry Standard Architecture en inglés) es la arquitectura con que se construyó el bus de los microcomputadores AT de IBM.

Esta arquitectura se adoptó por todos los fabricantes de microcomputadoras compatibles y, en general, está basada en el modelo de tres buses explicado anteriormente. Su tecnología es antigua, ya que se diseñó a principios de la década de los 80, lo que provoca una gran lentitud, debido a su velocidad de 8 megaherzios y una anchura de sólo 16 bits.

• Arquitectura MCA.

La Arquitectura MCA (MicroChannel Architecture en inglés) tuvo su origen en una línea de microcomputadoras fabricadas por IBM, las PS/2 (PS significa Personal System).

Las PS/2 fueron unas microcomputadoras en las que, en sus modelos de mayor rango, se sustituyó el bus tradicional de las computadoras personalespor un canal de comunicaciones llamado MicroChannel.

Page 72: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

El MicroChannel no es compatible, ni en su diseño ni en las señales de control, con la tecnología de bus tradicional, si bien su misión de transferencia de direcciones de memoria y datos es similar en ambos casos. Las ventajas de MicroChannel son una mayor velocidad, 10 megaherzios, una anchura de 32 bits, la posibilidad de autoinstalación y una mejor gestión de los recursos conectados al canal gracias a un control denominado busmaster.

• Arquitectura EISA.

La Arquitectura EISA (Extended Industry Standard Architecture en inglés) surge como una mejora del estándar ISA por parte de un grupo de empresasfabricantes de microcomputadoras compatibles. La velocidad del bus aumenta, así como la posibilidad de manejo de datos, llegándose a los 32 bits en paralelo; asimismo posee autoinstalación y control de bus.

La unión del aumento de la velocidad interna del bus y los 32 bits trabajando en paralelo permite a esta arquitectura una capacidad de manejo y transferencia de datos desconocida hasta ese momento, pudiendo llegar hasta los 33 megabytes por segundo.

La gran ventaja de la arquitectura EISA es que es totalmente compatible con ISA, esto es, una tarjeta de expansión ISA funciona si se la inserta en una ranura EISA. Evidentemente, no va a poder utilizar totalmente la potencia del nuevo estándar, funcionando a menor velocidad, pero funcionando al fin y al cabo.

En la actualidad no existe una arquitectura que tenga el suficiente peso específico como para desbancar totalmente al resto, si bien, poco a poco, la arquitectura ISA puede ir desapareciendo de las configuraciones de los sistemas informáticos dando paso a las otras dos arquitecturas.

Reloj

El reloj de una computadora se utiliza para dos funciones principales:

1. Para sincronizar las diversas operaciones que realizan los diferentes subcomponentes del sistema informático.

2. Para saber la hora.

El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo se llama Frecuencia del Reloj.

La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios, siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones de pulsos por segundo se expresa habitualmente en Megaherzios.

El reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta.

Page 73: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo.

El rango de frecuencia de los microprocesadores oscila entre los 4,77 megaherzios del primer PC diseñado por IBM y los 200 megaherzios de las actuales computadoras basadas en los chips Intel Pentium.

TARJETAS DE EXPANSIÓN INTERNA

Las Tarjetas de Expansión están diseñadas y dedicadas a actividades específicas, como pueden ser las de controlar la salida de vídeo de la computadora,gráficas, comunicaciones, etc.

Las tarjetas de expansión no forman parte de la unidad central de proceso, pero están conectadas directamente a ésta a través del bus, generalmente dentro de la propia caja de la unidad central del sistema, y controladas por la CPU en todas sus operaciones.

Las tarjetas de expansión complementan y ayudan a la placa base y, por tanto, al microprocesador central descargándole de tareas que retardarían los procesos de la CPU, añadiendo al mismo tiempo una serie de posibilidades operativas que no estaban previstas en los primeros modelos de computadoras.

A lo largo de la historia del desarrollo de las computadoras se han ido aprovechando diseños técnicos anteriores para crear subcomponentes de sistemas informáticos de complejidad superior; un ejemplo puede ser el microprocesador 8086 que sirvió como microprocesador principal para una serie de sistemas informáticos, como fueron los PS/2 de IBM. En la actualidad puede emplearse como microprocesador de tarjetas gráficas dedicadas a controlar los subsistemas de vídeo.

Las tarjetas de expansión cumplen una importante cantidad de cometidos que van desde controlar actividades del proceso general del sistema informático (subsistema de vídeo, subsistema de almacenamiento masivo de información en los diferentes discos de la computadora, etc.) hasta permitir una serie de tareas para las que los diseñadores del sistema informático no han previsto facilidades o que debido a su costo sólo se entregan como opcionales.

Tarjetas Controladoras de Periféricos

Las Tarjetas de Expansión Controladoras de Periféricos son placas que contienen circuitos lógicos y que se conectan al bus de datos para recibir la información que la CPU envía hacia los periféricos almacenándola en Buffers, esto es, una serie de Memorias Intermedias que actúan como amortiguadoras de los flujos de datos que se transmiten en el interior del sistema informático y descargan al procesador principal del control del tráfico de señales y datos entre el procesador y los periféricos exteriores.

Las tarjetas de expansión controladoras de periféricos más importantes son:

• Las Tarjetas de Expansión Controladoras del Modo de Vídeo.

• Las Tarjetas de Expansión Controladoras de Entrada/Salida de Datos.

Page 74: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Las Tarjetas de Expansión Controladoras de Comunicaciones.

Tarjetas de Expansión Controladoras del Modo de Video

Este tipo de tarjetas de expansión son también llamadas Tarjetas Gráficas. Las tarjetas gráficas van a proporcionar diferentes clases de calidad en la información que el sistema informático va a poder mostrar en su pantalla.

La información que la computadora va a representar en su pantalla se encuentra en una zona de la memoria RAM que alimenta periódicamente al cañón de electrones, a través de la tarjeta controladora del modo gráfico, de los datos necesarios para representar la información almacenada en la pantalla del sistema informático.

La pantalla de la computadora se refresca, esto es, modifica el dibujo que aparece en ella con una periodicidad de entre 50 y 80 veces por segundo. Eldibujo que aparece en la pantalla del sistema informático es el almacenado en la memoria de vídeo de la computadora y que la tarjeta gráfica recibe para manejar los datos y enviarlos hacia la pantalla del sistema informático.

Cuando la tarjeta de vídeo envía la información almacenada en la memoria hacia la pantalla de la computadora, estos datos pasan por un convertidor digital/analógico para convertirse en una señal eléctrica compatible con la necesaria para que el componente de generación de imágenes de la pantalla del sistema informático (cañón de rayos, LCD, etc.) forme la imagen en la pantalla de la computadora.

Existen diferencias entre los distintos tipos de tarjetas gráficas entre las que caben destacar:

1. Modo de Trabajo.

Es como se va a manejar la información que se va a representar en la pantalla del sistema informático.

Los modos principales de trabajo son:

• Modo Texto: Se maneja la información en forma de texto, si bien algunos de estos caracteres pueden utilizarse para realizar dibujos sencillos.

• Modo Gráfico: Es más completo que el anterior ya que a la posibilidad del manejo de caracteres se une la de la creación de dibujos complejos.

2. Utilización del Color.

Algunas tarjetas de vídeo pueden manejar una serie de parámetros, en forma de código binario, que permiten la utilización del color en las pantallas de los sistemas informáticos que estén preparadas para ello. La utilización, o no, del color permite realizar la siguiente diferenciación:

• Monocromas: Utilizan sólo un color que resalta sobre el fondo de la pantalla de la computadora.

Page 75: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Policromas: Utilizan la serie de tres colores fundamentales (rojo, azul y verde) para obtener las diferentes mezclas de colores y tonos que se van a representar en la pantalla del sistema informático.

3. Resolución Gráfica.

Es una matriz formada por la cantidad total de líneas de información y el número de puntos en que se puede dividir cada una de las líneas. Esta matriz es la información que la tarjeta gráfica envía hacia la pantalla de la computadora.

A continuación van a estudiarse los tipos de tarjetas gráficas más conocidas:

Tarjeta Gráfica Hércules.

Las tarjetas gráficas Hércules son tarjetas de vídeo que trabajan en modo gráfico en sistemas informáticos cuya configuración incluye pantallas monocromas.

Fueron diseñadas por Hercules Corp. para poder crear gráficos en las pantallas monocromas de las primeras computadoras personales debido a que la tarjeta de vídeo que incluían estos sistemas informáticos, el Adaptador Monocromo de IBM, sólo podía trabajar en modo texto.

Debido a que Hercules Corp. era una empresa independiente, IBM nunca consideró a la tarjeta de vídeo creada por ella como un estándar, aunque sí lo fue de hecho.

Este modelo de tarjeta de vídeo posee una resolución gráfica de 720 puntos por 348 líneas.

Tarjeta Gráfica CGA.

La tarjeta gráfica CGA (Color Graphics Adapter-Adaptador de Gráficos Color) fue diseñada para introducir el color en el mundo de la microinformática.

Las tarjetas gráficas CGA trabajan en los modos texto y gráfico, pudiendo conectarse a ellas pantallas de computadora monocromas y de color.

El problema que presentan las CGA es que su resolución gráfica es muy pobre en comparación con el resto de las tarjetas gráficas del mercado, siendo de 640 puntos por 240 líneas en modo monocromo y de 320 puntos por 200 líneas trabajando con cuatro colores.

Tarjeta Gráfica EGA.

La EGA (Enhanced Graphics Adapter-Adaptador Mejorado de Gráficos) es una tarjeta de vídeo que trabaja en modo gráfico y mejora en gran medida lasprestaciones de la CGA. Esta tarjeta gráfica trabaja con pantallas de computadora monocromas o de color.

La resolución de la tarjeta gráfica EGA es de 640 puntos por 350 líneas y maneja hasta 16 colores al mismo tiempo.

Tarjeta Gráfica MCGA.

Page 76: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Esta Tarjeta Gráfica (Microchannel Graphics Adapter - Adaptador Gráfico Microchannel) fue diseñada por IBM para trabajar en sus microcomputadoras del tipo PS/2.

La MCGA tenía una resolución máxima de 640 puntos por 400 líneas en modo monocromo, reduciéndose a medida que se aumentaba el número de colores con que se trabajaba.

Tarjeta Gráfica VGA.

La Tarjeta Gráfica VGA (Video Graphics Adapter - Adaptador Vídeo de Gráficos) se diseñó, como la anterior, para los sistemas informáticos PS/2 de IBM. La diferencia entre ambas tarjetas gráficas es que si la anterior se instaló en los sistemas informáticos menos potentes, la VGA se instaló en los sistemas informáticos más potentes de la gama PS/2, debido a su mejor resolución.

Al contrario que la MCGA, la tarjeta gráfica VGA sí tuvo un modelo compatible con el bus habitual de los sistemas PC y gracias a su calidad de diseño y fabricación ha llegado a convertirse en un estándar dentro del mercado microinformático.

La resolución de esta tarjeta gráfica tiene dos modos distintos:

• La resolución en modo texto es de 720 puntos por 400 líneas manejando los dos colores del monocromo.

• La resolución en modo gráfico es de 640 puntos por 480 líneas y maneja 16 colores.

Tarjeta Gráfica SVGA.

La tarjeta gráfica SVGA (Super Video Graphics Adapte - Super Adaptador Vídeo de Gráficos) es un diseño de reciente creación. Ha sido introducida en el mercado como una tarjeta gráfica VGA, ampliada y mejorada, que rápidamente está consiguiendo una importante cuota de instalación en las configuraciones de los nuevos sistemas informáticos.

La posibilidad de manejo por la propia tarjeta gráfica de un megabyte de memoria DRAM, que puede ampliarse hasta los dos megabytes, supone una importante potencia gráfica que da, a los sistemas microinformáticos, posibilidades de manejo de gráficos que antes sólo podían realizar las estaciones de trabajo o las minicomputadoras.

La resolución de esta tarjeta gráfica es muy alta, llegando a los 1.280 puntos por 1.024 líneas.

Tarjetas Controladoras de Entrada y Salida de Datos

La función principal de estos dispositivos es adaptar la información procesada por la unidad central de proceso, canalizando las transferencias de información entre la computadora y los dispositivos periféricos exteriores.

Con las tarjetas controladoras de entrada y salida de datos se consigue:

Page 77: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

1. Independencia funcional entre la unidad central de proceso y los periféricos asociados a ella. Las tarjetas controladoras evitan la lentitud de los procesos debido a la diferencia de velocidad entre la CPU y los periféricos.

2. Adaptación de diversos tipos de periféricos al sistema informático, independientemente de que la operatividad entre ellos y la computadora no sea compatible.

3. Pueden servir de traductoras entre el modo digital de la computadora y el analógico del de otros medios por los que se pueden establecer enlaces entre sistemas informáticos.

Tarjetas Controladoras de Comunicaciones

Las Tarjetas Controladoras de comunicaciones son unidades que permiten la conexión de una computadora central, denominada sistema central oservidor, con una serie de computadoras menos potentes que utilizan parte de los recursos del servidor para aumentar su operatividad.

La conexión se produce a través de una serie de Enlaces que unen todas las computadoras entre sí formando una Red de Comunicaciones.

Si los sistemas informáticos que constituyen esta red de comunicaciones se encuentra en una zona no muy extensa, no mayor que un edificio, la red se denomina Red de Área Local (LAN - Local Area Network).

Si la red de comunicaciones tiene una extensión mayor y se utilizan los servicios de las compañías telefónicas para enlazar las diferentes computadoras que componen la red, ésta se denomina Red de Área Extensa (WAN-Wide Area Network).

Las tarjetas controladoras de comunicaciones más comunes son las tarjetas de conexión a redes de área local. Este tipo de tarjetas de comunicaciones se estudiarán más adelante en un apartado específico dedicado a ella; sin embargo, se puede adelantar aquí que las tarjetas controladoras de comunicaciones se dividen en dos grupos principales:

• Tarjetas de conexión a redes locales (LAN).

• Tarjetas de expansión módem (para redes de comunicaciones extensas).

Las tarjetas de conexión a redes LAN son tarjetas de expansión que proporcionan una Conexión y una Dirección que permiten identificar al usuario en el interior de la red, posibilitándole el poder enviar y recibir información al sistema informático.

La conexión que proporcionan las tarjetas de conexión a redes de área local es a un cable coaxial muy similar al utilizado para conectar una televisióncomercial a su antena exterior. La velocidad que este medio permite dentro de la red de comunicaciones es, sin embargo, inferior a la que poseen los sistemas informáticos conectados a ella, rondando unos pocos megaherzios.

Las tarjetas de expansión módem modulan la señal digital existente dentro de la unidad central del sistema de la computadora y la transforman convirtiéndola en analógica.

Page 78: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Esta señal analógica se superpone a otra señal llamada portadora, que es la que viaja por el cable telefónico, sobre la que va a poder atravesar las líneas telefónicas hasta un punto remoto donde otro módem volverá a convertir la señal en digital para que pueda ser utilizada por otra computadora.

Las velocidades de transmisión que proporcionan este tipo de tarjetas de expansión módem oscilan entre los 1.200 y los 28.800 bits por segundo.

SISTEMA OPERATIVOS

Un Sistema Operativo (SO) es el software básico de una computadora que provee una interfaz entre el resto de programas del ordenador, los dispositivos hardware y el usuario.

Las funciones básicas del Sistema Operativo son administrar los recursos de la máquina, coordinar el hardware y organizar archivos y directorios en dispositivos de almacenamiento.

Los Sistemas Operativos más utilizados son Dos, Windows, Linux y Mac. Algunos SO ya vienen con un navegador integrado, como Windows que trae el navegador Internet Explorer.

Descripción del sistema operativo

Para que un ordenador pueda hacer funcionar un programa informático (a veces conocido

comoaplicación o software), debe contar con la capacidad necesaria para realizar cierta cantidad

de operaciones preparatorias que puedan garantizar el intercambio entre el procesador,

la memoria y losrecursos físicos (periféricos).

El sistema operativo (a veces también citado mediante su forma abreviada OS en inglés) se

encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones (procesador

de texto, videojuegos, etcétera). Cuando un programa desea acceder a un recurso material, no

necesita enviar información específica a los dispositivos periféricos; simplemente envía la

información al sistema operativo, el cual la transmite a los periféricos correspondientes a través de

su driver (controlador). Si no existe ningún driver, cada programa debe reconocer y tener presente

la comunicación con cada tipo de periférico.

De esta forma, el sistema operativo permite la "disociación" de programas y hardware,

principalmente para simplificar la gestión de recursos y proporcionar una interfaz de usuario (MMI

por sus siglas en inglés) sencilla con el fin de reducir la complejidad del equipo.

Page 79: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Funciones del sistema operativo

El sistema operativo cumple varias funciones:

Administración del procesador: el sistema operativo administra la distribución del procesador

entre los distintos programas por medio de un algoritmo de programación. El tipo de

programador depende completamente del sistema operativo, según el objetivo deseado.

Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el

espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente.

Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de

memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar

aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema.

Sin embargo, esta memoria es mucho más lenta.

Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los

programas a los recursos materiales a través de los drivers (también conocidos como

administradores periféricos o de entrada/salida).

Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las

aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para

funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir".

Administración de autorizaciones: el sistema operativo se encarga de la seguridad en

relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por

programas y usuarios que posean las autorizaciones correspondientes.

Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de

archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.

Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores

que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.

Componentes del sistema operativo

El sistema operativo está compuesto por un conjunto de paquetes de software que pueden

utilizarse para gestionar las interacciones con el hardware. Estos elementos se incluyen por lo

general en este conjunto de software:

El núcleo, que representa las funciones básicas del sistema operativo, como por ejemplo, la

gestión de la memoria, de los procesos, de los archivos, de las entradas/salidas principales y de

las funciones de comunicación.

El intérprete de comandos, que posibilita la comunicación con el sistema operativo a través de

un lenguaje de control, permitiendo al usuario controlar los periféricos sin conocer las

características del hardware utilizado, la gestión de las direcciones físicas, etcétera.

El sistema de archivos, que permite que los archivos se registren en una estructura arbórea.

Page 80: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Sistemas de multiprocesos

Un sistema operativo se denominade multiprocesos cuando muchas "tareas" (también conocidas

comoprocesos) se pueden ejecutar al mismo tiempo.

Las aplicaciones consisten en una secuencia de instrucciones llamadas "procesos". Estos

procesos permanecen activos, en espera, suspendidos, o se eliminan en forma alternativa, según

la prioridad que se les haya concedido, o se pueden ejecutar en forma simultánea.

Un sistema se considera preventivo cuando cuenta con un programador (también

llamado planificador) el cual, según los criterios de prioridad, asigna el tiempo de los equipos entre

varios procesos que lo solicitan.

Se denomina sistema de tiempo compartido a un sistema cuando el programador asigna una

cantidad determinada de tiempo a cada proceso. Éste es el caso de los sistemas de usuarios

múltiples que permiten a varios usuarios utilizar aplicaciones diferentes o similares en el mismo

equipo al mismo tiempo. De este modo, el sistema se denomina "sistema transaccional". Para

realizar esto, el sistema asigna un período de tiempo a cada usuario.

Sistemas de multiprocesadores

La técnica de multiprocesamiento consiste en hacer funcionar varios procesadores en forma

paralela para obtener un poder de cálculo mayor que el obtenido al usar un procesador de alta

tecnología o al aumentar la disponibilidad del sistema (en el caso de fallas del procesador).

Las siglas SMP (multiprocesamiento simétrico o multiprocesador simétrico) hacen referencia a la

arquitectura en la que todos los procesadores acceden a la misma memoria compartida.

Un sistema de multiprocesadores debe tener capacidad para gestionar la repartición de memoria

entre varios procesadores, pero también debe distribuir la carga de trabajo.

Sistemas fijos

Los sistemas fijos son sistemas operativos diseñados para funcionar en equipos pequeños, como

losPDA (asistentes personales digitales) o los dispositivos electrónicos autónomos (sondas

espaciales, robots, vehículos con ordenador de a bordo, etcétera) con autonomía reducida. En

consecuencia, una característica esencial de los sistemas fijos es su avanzada administración de

energía y su capacidad de funcionar con recursos limitados.

Los principales sistemas fijos de "uso general" para PDA son los siguientes:

PalmOS

Windows CE / Windows Mobile / Window Smartphone

Sistemas de tiempo real

Los sistemas de tiempo real se utilizan principalmente en la industria y son sistemas diseñados

para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener

capacidad para operar en forma fiable según limitaciones de tiempo específicas; en otras palabras,

Page 81: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

debe tener capacidad para procesar adecuadamente la información recibida a intervalos definidos

claramente (regulares o de otro tipo).

Estos son algunos ejemplos de sistemas operativos de tiempo real:

OS-9;

RTLinux  (RealTime Linux);

QNX ;

VxWorks .

Tipos de sistemas operativos

Existen varios tipos de sistemas operativos, definidos según su capacidad para administrar

simultáneamente información de 16 bits, 32 bits, 64 bits o más.

Sistema ProgramaciónUsuario único

Usuario múltiple

Tarea única

Multitarea

DOS 16 bits X X

Windows3.1 16/32 bits X no preventivo

Windows95/98/Me

32 bits X cooperativo

WindowsNT/2000 32 bits X preventivo

WindowsXP 32/64 bits X preventivo

Unix / Linux 32/64 bits X preventivo

MAC/OS X 32 bits X preventivo

VMS 32 bits X preventivo

Tipos de progamación existentes

Programación estructurada

En informática, término general que se refiere a un tipo de programación que produce código con un flujo limpio, un diseño claro y un cierto grado de modularidad o de estructura

Page 82: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

jerárquica. Entre los beneficios de la programación estructurada se encuentran la facilidad de mantenimiento y la legibilidad por parte de otros programadores.

Programación orientada a objetos

En informática, un estilo de programación en el que un programa se contempla como un conjunto de objetos limitados que, a su vez, son colecciones independientes de estructuras de datos y rutinas que interactúan con otros objetos. Una clase define las estructuras de datos y rutinas de un objeto. Un objeto es una instancia de una clase, que se puede usar como una variable en un programa. En algunos lenguajes orientados a objetos, éste responde a mensajes, que son el principal medio de comunicación. En otros lenguajes orientados a objeto se conserva el mecanismo tradicional de llamadas a procedimientos.

b) Definición y 2 ejemplos de algorítmos

ALGORITMOS

Un Algoritmo, es la descripción exacta y sin ambigüedades de una secuencia de pasos elementales para encontrar la solución correcta a un problema.

Características:

Finito

El algoritmo debe finalizar.

Legible

El algoritmo debe permitir que las modificaciones o actualizaciones sean sencillas de realizar.

Page 83: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Eficiente

Debe ser optimo, es decir debe evitar pasos de mas o de menos para que al codificarlo aproveche al máximo la memoria del procesador y el tiempo e ejecución sea el menor posible.

Modulable

Debe estar dividido en pequeños procesos o módulos.

Estructurado

Comprende todas las características anteriores

Como consecuencia de una mejor estructuración, resulta mas fácil:

Leer el algoritmo.

Modificar o actualizar el algoritmo.

Eliminar las parte repetitivas.

c) ¿Qué es un diagrama de flujo?

DIAGRAMA DE FLUJO

   Diagrama secuencial empleado en muchos campos para mostrar los procedimientos detallados que se deben seguir al realizar una tarea, como un proceso de fabricación. También se utilizan en la resolución de problemas, como por ejemplo en algoritmos. Los diagramas de flujo se usan normalmente para seguir la secuencia lógica de las acciones en el diseño de programas de computadoras.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO

Terminal (representa el Inicio y el Final, de un programa, puede representa también una parada o interrupción programada que sea necesario realizar en un progma.

Page 84: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Entrada/Sahda (cualquer tipo de introducción de datos) tipo

Proceso (cualquier tipo de operación que pueda originar cambio de valor, fomato o posición de la infomiación almacenada en memoia, operaciones aritmeticas).

Desición (indica operaciones lógicas o de comparación entre datos normalmente dos y en función del resultado de la misma determina cual de los distintos caminos altemativos del programa se debe seguir).

Page 85: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Desición múltiple (en función del resultado de la comparación se seguirá uno de los diferentes caminos de acuerdo con dicho resultado).

Conector ( sirve para enlazar dos partes cuales quiera de un organigrama atraves de un conector en la salida y otro conector en la salida)

Page 86: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Idicador de dirección ( indica el sentido de ejecución de las operaciones)

Linea conectora sirve de union entre dos símbolos

Conector ( coneccion entre dos puntos del organigrama situados en paginas diferentes)

Page 87: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Llamada a subrutina o un proceso predeterminado (una subrutina es el modulo independiente del programa)

Pantalla ( Se utiliza en ocaciones en lugar del símbolo E/S )

Impresora ( Se utiliza en ocaciones en lugar del símbolo E/S )

Teclado ( Se utiliza en ocaciones en lugar del símbolo E/S )

Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100).

Page 88: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

d) ¿Qué es el Pseudocódigo?

QUÉ ES EL PSEUDOCÓDIGO

Es un conjunto de palabras reservadas y reglas para escribir algoritmos de una manera más formal y estructurada.  El objetivo es tener un algoritmo  que esté planteado en términos más cercanos a los lenguajes de programación utilizados en la computadora.

PROPÓSITO DE ESTE ESTÁNDAR DE PSEUDOCÓDIGO

Page 89: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Utilizarlo para los cursos de Fundamentos de Programación. El pseudocódigo ha sido concebido con algunos elementos similares a los del lenguaje C para dar cierta familiaridad con el lenguaje que en estos cursos se utiliza para los proyectos. Sin embargo, el pseudocódigo NO ES EL LENGUAJE C. Tiene diferencias sustanciales en cuanto a sus tipos de datos, operadores, representación de variables y estructuras de control. C es un lenguaje muy rico en expresividad pero también es muy fácil, al usarlo, escribir código de mala calidad si no se tiene cuidado.

PALABRAS RESERVADAS

En la sección palabras reservadas, se indica la sintaxis y semántica de las palabras que conforman el pseudocódigo junto con breves ejemplos de su uso.

Conclusión:

Seudocòdigo (pseudocode).- Algoritmo expresado en ingles para conceptualizarlo antes de codificarlo en un lenguaje de programación.

CONCLUSIÓN DE LOS INCISOS

METODOLOGIA DE LA PROGRAMACION.

1. Plantear el problema a resolver.

Es plantear todo lo que va a desencadenar el trabajo y consiste fundamentalmente en establecer los resultados que se requieren obtener a partir de los datos o informaciones que se posean.

2. Desarrollo del algoritmo.

Es el planteamiento a nivel mental de la solución aplicar el problema. Consiste en establecer todas las acciones necesarias y el orden en que deben realizarse para resolver el problema planteado.

3. Pseudocódigo.

Es la representación gráfica del algoritmo, cuanto mejor se haga el pseudocódigo, la codificación es casi mecánica. El pseudocódigo es necesario pero no imprescindible. Permite al usuario poder comprobar más fácilmente, que la solución planteada es la correcta para obtener el resultado. Un

Page 90: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

aspecto importante del pseudocódigo es que va a ser usado o interpretado por personas. No está sujeto a unas normas estrictas, es decir hay libertad de expresión en un código.

4. Codificar.

Escribir de una manera que el ordenador lo comprenda, las acciones para resolver el problema.

5. Compilar.

Es la acción que permite que lo que hemos codificado lo pueda interpretar el ordenador.

6. Ejecución.

Poner en funcionamiento la ejecución real de las acciones establecidas. En metodología vamos a tratar los tres primeros pasos. Plantear el problema, algoritmo y pseudocódigo.

Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo. 

Programación estructurada (PE):

La programación estructurada está compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo. 

Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores. 

Esta técnica incorpora: 

• Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas. 

• Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad. 

Page 91: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

• Estructuras básicas: existen tres tipos de estructuras básicas: 

1) Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra. 2) Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas. 3) Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces. 

Las principales ventajas de la programación estructurada son:

• Los programas son más fáciles de entender • Se reduce la complejidad de las pruebas • Aumenta la productividad del programador • Los programas queden mejor documentados internamente. 

Un programa está estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos. 

Programación modular:

En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad. 

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros. 

A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones. 

Programación orientada a objetos (POO):

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos. 

El elemento principal de la programación orientada a objetos es el objeto. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento. 

El polimorfismo y la herencia son unas de sus principales características y por ello

Page 92: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos. 

En DesarrolloWeb.com hemos publicado anteriormente una explicación de lo que es la programación orientada a objetos. 

Programación concurrente:

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez. 

Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultánea. 

Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones. 

Programación funcional:

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. 

Programación lógica:

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

}

CONCEPTO DE PROGRAMACIÓN ESTRUCTURADA. Definición lógica. Ventajes potenciales. Teorema de la estructura. Otras estructuras lógicas de control. Etiquetas e instruccionesGo-to. Segmentación. Identificación.

DEFINICIONES

La programación estructurada (en adelante simplemente PE ), es un estilo de programación con el

cual el programador elabora programas, cuya estructura es la más clara posible, mediante el uso

de tres estructuras básicas de control lógico, a saber :

a. SECUENCIA.

b. SELECCIÓN.

c. ITERACIÓN.

Page 93: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Un programa estructurado se compone de funciones,segmentos, módulos y/o subrutinas, cada una

con una sola entrada y una sola salida. Cada uno de estos módulos (aún en el mismo programa

completo), se denomina programa apropiado cuando, además de estar compuesto sólamente por las

tres estructuras básicas, tiene sólo una entrada y una salida y en ejecución no tiene partes por las

cuales nunca pasa ni tiene ciclos infinitos.

La PE tiene un teorema estructural o teorema fundamental, el cual afirma que cualquier

programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando únicamente

las tres estructuras básicas ( secuencia, selección, iteración )

Programación Orientada a Objetos

Lenguajes de Programación > Programación Orientada a Objetos

La programación orientada a objetos, intenta simular el mundo real a traves del significado de objetos que contiene caracteristicas y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacion.

Como su mismo nombre indica, la programación orientada a objetos se basa en la idea de un objeto, que es una combinacion de variables locales y procedimientos llamados metodos que juntos conforman una entidad de programación.

El termino encapsulacion se usa para describir la combinacion de estructuras de datos y de metodos que son manipulados por el objeto. La llamada a un objeto es lo que se denomina pasar un "aviso" a un objeto.

En la programación orientada a objetos, encapsular significa, reunir y controlar el grupo resultante como un todo y no individualmente.

En la programación orientada a objetos la abstraccion es un termino externo al objeto, que controla la forma en que es visto

Page 94: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

por los demas.

En la programación orientada a objetos la modularidad se considera de la siguiente manera: Un programa grande siempre sera más complicado que la suma de varios programas pequeños, con lo que se considera ventajoso dividir un gran sistema en diversos modulos.

En la programación orientada a objetos tenemos la jerarquia, la cual consiste en la clasificacion y organizacion de las abstracciones segun su naturaleza. El más claro ejemplo de jerarquia es la herencia.

En la programación orientada a objetos se define la herencia como una jerarquia de extracciones, y la relacion entre clases, donde se comparte la estructura y el comportamiento de una o más clase considerada como clases superiores o una superclase, con lo cual se resume que la herencia es una unidad independiente por si misma heredada de una abstraccion o superclase. Un ejemplo cotidiano lo encontramos en las aplicaciones que existen cactualmente en el mercado, donde un formulario cualquiera hereda las caracteristicas de uan ventana del sistema operativo Windows (Maximizar, Minimizar, Cerrar)

 

 

 

Un lenguaje de descripción de hardware (HDL, Hardware Description Language) permite documentar las interconexiones y el comportamiento de un circuito electrónico, sin utilizar diagramas esquemáticos.

El flujo de diseño suele ser típico:

Definir la tarea o tareas que tiene que hacer el circuito.

Escribir el programa usando un lenguaje HDL. También existen programas de captura de esquemas que pueden hacer esto, pero no son útiles para diseños complicados.

Comprobación de la sintaxis y simulación del programa.

Programación del dispositivo y comprobación del funcionamiento.

Page 95: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Un rasgo común a estos lenguajes suele ser la independencia del

hardware y la modularidad o jerarquía, es decir, una vez hecho un diseño éste puede ser usado dentro de otro diseño más complicado y con otro dispositivo compatible.

Ejemplos

VHDL Verilog ABEL HDL

Lenguajes de programación

Lenguajes de Programación > Lenguajes de programación

Los lenguajes de programación son herramientas que nos permiten crear programas y software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, etc..

Una computadora funciona bajo control de un programa el cual debe estar almacenado en la unidad de memoria; tales como el disco duro.

Los lenguajes de programación de una computadora en particular se conoce como código de máquinas o lenguaje de máquinas.

Estos lenguajes codificados en una computadora específica no podrán ser ejecutados en otra computadora diferente.

Para que estos programas funcionen para diferentes computadoras hay que realizar una versión para cada una de ellas, lo que implica el aumento del costo de desarrollo.

Por otra parte, los lenguajes de programación en código de máquina son verdaderamente difíciles de entender para una persona, ya que están compuestos de códigos numéricos sin sentido nemotécnico.

Page 96: BREVE RESEÑA DE LA COMPUTACION

INVESTIGACION PROGRAMACION UNIDAD I 18 DE FEBRERO A MANO

Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leidas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar.

Los lenguajes de programación representan en forma simbólica y en manera de un texto los códigos que podrán ser leidos por una persona. 

Los lenguajes de programación son independientes de las computadoras a utilizar.

Existen estrategias que permiten ejecutar en una computadora un programa realizado en un lenguaje de programación simbólico. Los procesadores del lenguaje son los programas que permiten el tratamiento de la información en forma de texto, representada en los lenguajes de programación simbólicos.

Hay lenguajes de programación que utilizan compilador. 

La ejecución de un programa con compilador requiere de dos etapas:

1) Traducir el programa simbólico a código máquina2) Ejecución y procesamiento de los datos.

Otros lenguajes de programación utilizan un programa intérprete o traductor, el cual analiza directamente la descripción simbólica del programa fuente y realiza las instrucciones dadas.

El intérprete en los lenguajes de programación simula una máquina virtual, donde el lenguaje de máquina es similar al lenguaje fuente.

La ventaja del proceso interprete es que no necesita de dos fases para ejecutar el programa, sin embargo su inconveniente es que la velocidad de ejecución es más lenta ya que debe analizar e interpretar las instrucciones contenidas en el programa fuente.