Está en la página 1de 40

INSTITUTO TECNOLOGICO SUPERIOR DE COATZACOALCOS

SOFTWARE DE
SISTEMAS
LICENCIATURA EN INFORMATICA
ALUMNO: FERNANDO VALENZUELA RAMOS
DOCENTE I.S.C. EDUARDO LPEZ DE LOS SANTOS

13/12/2014

1.1 REVISION DEL MODELO VON NEWMAN


La arquitectura Von Neumann, tambin conocida como modelo de Von Neumann o arquitectura
Princeton, es una arquitectura de computadoras basada en la descrita en 1945 por el matemtico
y fsico John von Neumann y otros, en el primer borrador de un informe sobre el EDVAC. Este
describe una arquitectura de diseo para un computador digital electrnico con partes que
constan de una unidad de procesamiento que contiene una unidad aritmtico lgica y registros del
procesador, una unidad de control que contiene un registro de instrucciones y un contador de
programa, una memoria para almacenar tanto datos como instrucciones, almacenamiento masivo
externo, y mecanismos de entrada y salida. El significado ha evolucionado hasta ser cualquier
computador de programa almacenado en el cual no pueden ocurrir una extraccin de instruccin y
una operacin de datos al mismo tiempo, ya que comparten un bus en comn. Esto se conoce
como el cuello de botella Von Neumann y muchas veces limita el rendimiento del sistema.

El diseo de una arquitectura Von Neumann es ms simple que la arquitectura Harvard ms


moderna, que tambin es un sistema de programa almacenado, pero tiene un conjunto dedicado
de direcciones y buses de datos para leer datos desde memoria y escribir datos en la misma, y otro
conjunto de direcciones y buses de datos para ir a buscar instrucciones.

Un computador digital de programa almacenado es una que mantiene sus instrucciones de


programa, as como sus datos, en memoria de acceso aleatorio (RAM) de lectura-escritura. Las
computadoras de programa almacenado representaron un avance sobre los ordenadores
controlados por programas de la dcada de 1940, como la Colossus y la ENIAC, que fueron
programadas por ajustando interruptores e insertando parches, conduciendo datos de la ruta y
para controlar las seales entre las distintas unidades funcionales. En la gran mayora de las
computadoras modernas, se utiliza la misma memoria tanto para datos como para instrucciones
de programa, y la distincin entre Von Neumann vs. Harvard se aplica a la arquitectura de
memoria cach, pero no a la memoria principal.

1.2 DEL PROBLEMA AL PROGRAMA CARGADO


El proceso de resolucin de un problema con una computadora conduce a la escritura de un
programa y a su ejecucin en la misma. Aunque el proceso de disear programas es esencialmente
un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente
deben seguir todos los programadores.
Las siguientes son las etapas que se deben cumplir para resolver con xito un problema de
programacin:
DEFINICIN DEL PROBLEMA
Est dada por el enunciado del problema, el cul debe ser claro y completo. Es importante que
conozcamos exactamente que se desea del computador; mientras qu esto no se comprenda, no
tiene caso pasar a la siguiente etapa.
ANLISIS DEL PROBLEMA
Entendido el problema (que se desea obtener del computador), para resolverlo es preciso analizar:
Los datos o resultados que se esperan.
Los datos de entrada que nos suministran.
El proceso al que se requiere someter esos datos a fin de obtener los resultados esperados.
reas de trabajo, frmulas y otros recursos necesarios.
Una recomendacin muy prctica es el que nos pongamos en el lugar del computador, y analizar
que es necesario que me ordenen y en que secuencia, para poder producir los resultados
esperados. Tambin da buenos resultados hacer similitudes con la labor de un empleado que hace
el mismo trabajo que deseamos programarle al computador.
SELECCIN DE LA MEJOR ALTERNATIVA
Analizado el problema, posiblemente tengamos varias formas de resolverlo; lo importante es
determinar cul es la mejor alternativa: la que produce los resultados esperados en el menor
tiempo y al menor costo. Claro que aqu tambin es muy vlido el principio de que las cosas
siempre se podrn hacer de una mejor forma.

DIAGRAMACIN
Una vez que sabemos cmo resolver el problema, pasamos a dibujar grficamente la lgica de la
alternativa seleccionada. Eso es precisamente un Diagrama de Flujo: la representacin grfica de
una secuencia lgica de pasos a cumplir por el computador para producir un resultado esperado.
La experiencia nos ha demostrado que resulta muy til trasladar esos pasos lgicos planteados en
el diagrama a frases que indiquen lo mismo; es decir, hacer una codificacin del programa pero
utilizando instrucciones en Espaol. Como si le estuviramos hablando al computador. Esto es lo
que denominaremos Algoritmo o Pseudocdigo.
Cuando logremos habilidad para desarrollar programas, es posible que no elaboremos el diagrama
de flujo; en su lugar podremos hacer directamente el pseudocdigo del programa.
PRUEBA DE ESCRITORIO
Para cerciorarnos de que el diagrama (y/o el pseudocdigo) esta bien, y, para garantizar que el
programa que codifiquemos luego tambin funcione correctamente, es conveniente someterlo a
una Prueba de Escritorio. Esta prueba consiste en que damos diferentes datos de entrada al
programa y seguimos la secuencia indicada en el diagrama, hasta obtener los resultados. El anlisis
de estos nos indicar si el diagrama esta correcto o si hay necesidad de hacer ajustes (volver al
paso 4). Se recomienda dar diferentes datos de entrada y considerar todos los posibles casos, aun
los de excepcin o no esperados, para asegurarnos de que el programa no producir errores en
ejecucin cuando se presenten estos casos.
CODIFICACIN
Una vez que hayamos verificado el diagrama mediante las pruebas de escritorio, codificamos el
programa en el lenguaje de computador seleccionado. Esto es, colocamos cada paso del diagrama
en una instruccin o sentencia, utilizando un lenguaje que el computador reconoce.
Todos los lenguajes de programacin proveen facilidades para incluir lneas de comentarios en los
programas. Estos comentarios aclaran lo que se ordena al computador y facilitan entender el
programa. Puesto que estos comentarios no son tenidos en cuenta como instrucciones, y
aparecen en los listados del programa, resulta muy conveniente agregar abundantes comentarios
a todo programa que codifiquemos. Esto es lo que se denomina Documentacin Interna.
TRANSCRIPCIN
El programa codificado es necesario que lo llevemos a un medio que sea aceptado como entrada
por el computador: lo perforamos en tarjetas, lo grabamos en un disco flexble o lo grabamos en
un disco duro. Este programa es el que se conoce como Programa Fuente (Source).

COMPILACIN
Utilizamos ahora un programa de computador llamado Compilador o Traductor, el cal analiza
todo el programa fuente y detecta errores de sintaxis ocasionados por fallas en la codificacin o en
la transcripcin. Las fallas de lgica que pueda tener nuestro programa fuente no son detectadas
por el compilador. Cuando no hay errores graves en la compilacin, el compilador traduce cada
instruccin del programa fuente a instrucciones propias de la mquina (Lenguaje de Maquina),
creando el Programa Objeto.
Algunos computadores utilizan Interpretadores, (Generalmente para el Lenguaje Basic), en
reemplazo de programas compiladores. La diferencia consiste en que el interpretador recibe,
desde una terminal, slo una instruccin a la vez, la analiza y, si esta bien, la convierte al formato
propio de la maquina. Si la instruccin tiene algn error, el interpretador llama la atencin de la
persona para que corrija dicha instruccin.
Como resultado de la corrida del compilador, podemos obtener varios listados:
Listado del programa fuente
Listado de los errores detectados
Listado de campos utilizados, etc.
Los errores los debemos corregir sobre el mismo programa fuente, ya sea reemplazando las
tarjetas mal perforadas o regrabando en el disco flexible o en el disco duro. Este paso de la
compilacin lo repetimos hasta eliminar todos los errores y obtener el programa ejecutable.
PRUEBAS DE COMPUTADOR
Cuando tenemos el programa ejecutable (en lenguaje de maquina), ordenamos al computador
que lo ejecute, para lo cual suministramos datos de prueba, como lo hicimos en la prueba de
escritorio (paso 5). Los resultados obtenidos los analizamos, luego de lo cual puede ocurrir
cualquiera de estas situaciones:
a.- La lgica del programa est bien, pero hay errores sencillos, los cuales los corregimos
modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos repetirlo desde
el paso 6 .
b.- Hay errores ocasionados por fallas en la lgica, lo que nos obliga a regresar a los pasos 4 y 5
para revisin y modificacin del diagrama.
c.- Hay errores muy graves y lo ms aconsejable es que regresemos al paso 2 para analizar
nuevamente el problema, y repetir todo el proceso.

d.- No hay errores y los resultados son los esperados. En este caso, el programa lo podemos
guardar permanentemente en una librera o biblioteca del computador, para sacarlo de all
cuando necesitemos ejecutarlo nuevamente.
DOCUMENTACIN EXTERNA
Cuando el programa ya se tiene listo para ejecutar, es conveniente que hagamos su
documentacin externa siguiendo las normas de la instalacin o las recomendaciones indicadas
por el profesor. Una buena documentacin incluye siempre:

-Enunciado del problema -Diagrama de pasada -Narrativo con la descripcin de la solucin Relacin de las variables o campos utilizados en el programa, cada uno con su respectiva funcin Diagrama del programa -Listado de la ltima compilacin -Resultados de la ejecucin del
programa.

1.3 LENGUAJES FORMALES


El lenguaje formal es aquel que el hombre ha desarrollado para expresar las situaciones que se
dan en especfico en cada rea del conocimiento cientfico. Las palabras y oraciones de un
lenguaje formal son perfectamente definidas (una palabra mantiene su el mismo significado
prescindiendo de su contexto o uso.
Los lenguajes formales son exentos de cualquier componente semntico fuera de sus operadores y
relaciones. Los lenguajes formales pueden ser utilizados para modelar una teora de la mecnica,
fsica, matemtica, ingeniera elctrica, o de otra naturaleza, con la ventaja de que en estos toda
ambigedad es eliminada.
En resumen las caractersticas de los lenguajes formales son las siguientes:
1. Se desarrollan de una teora preestablecida.
2. Componente semntico mnimo.
3. Posibilidad de incrementar el componente semntico de acuerdo con la teora a formalizar.
4. La sintaxis produce oraciones no ambiguas.
5. La importancia del rol de los nmeros.
6. Completa formalizacin y por esto, el potencial de la construccin computacional.

1.4 EDITORES
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos
nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano.
El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el
editor. Hoy en da es comnmente de 7- 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Por ejemplo, un editor ASCII de 8 bits que lee el nmero binario 0110 0001 (decimal 97
hexadecimal 61) en el archivo lo representar en la pantalla por la figura a, que el usuario
reconoce como la letra "a" y ofrecer al usuario las funciones necesarias para cambiar el nmero
binario en el archivo.
Editores de Carcter:
El uso de logos u otros tems para ser usados en cualquier documento se puede volver engorroso
con los mtodos tradicionales.
Recomendacin
Windows XP tiene una caracterstica que permite personalizar logos o cualquier otro tem para ser
utilizado en cualquier documento. El Editor de Caracteres Privados (Private Character Editor) se
puede acceder en digitando Eudcedit sin las comillas en la ruta Inicio/Ejecutar
Una vez haya construido y guardado el diseo de su seleccin, puede accederlo a travs del Mapa
de Caracteres, al cual se llega por la ruta
Inicio/Todos los programas/Accesorios/Mapa de caracteres.
Editores de Lnea:
El editor de lneas se usa para crear o editar la Tabla de Definicin de Campos y la Tabla de
Seleccin de Campos Estas tablas estn formadas por una o ms lneas, cada una de las cuales
representa un elemento descriptivo. Aunque cada tabla tiene una estructura propia de sus
elementos, los comandos del editor de lneas en ambos casos son idnticos. Para cada nuevo
elemento de la tabla creado, el editor de lneas presenta un rengln en el que se muestra la
posicin y longitud de cada campo con lneas de subrayado (en coincidencia con el encabezado de
la tabla presentado en la parte de arriba de la pantalla, y que contiene los nombres
correspondientes a cada campo), y posiciona el cursor en el primer campo donde se van a teclear
los datos.

Editores de Pantalla:
El editor ms frecuente en Unix es vi. Es un editor que trabaja lnea a lnea y que muestra una
pantalla de texto a la vez.
Para iniciar una sesin de edicin, se ejecuta el programa vi seguido del nombre del archivo a
editar, y dado el caso tambin la trayectoria. Por ejemplo, para editar el arvhivo /tmp/borrame,
basta con dar vi /tmp/borrame, o para editar un archivo en el directorio actual: vi brrame.
Si el archivo no existe vi lo crea. De igual manera, podemos simplemente invocar a vi, comenzar a
escribir y despus nombrar el archivo al momento de salvarlo.
Al ser ejecutado vi, presenta una pantalla con el texto del archivo, y las lneas despus del final del
archivo aparecen con el carcter ~ para indicar que a partir de ah el archivo est vaco.
Obviamente, si comenzamos a editar un archivo nuevo, todas las lneas aparecern con ste
carcter.
Tiene tres modos de trabajo. El modo de insercin, el de edicin y el de comandos.

1.5 LENGUAJES DE PROGRAMACION


Java
El lenguaje de programacin Java, fue diseado por la compaa Sun Microsystems Inc, con el
propsito de crear un lenguaje que pudiera funcionar en redes computacionales heterogneas (
redes de computadoras formadas por ms de un tipo de computadora, ya sean PC, MACs,
estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a
ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier mquina o
plataforma.
C
Edgar Ursulo Garcia C es un lenguaje de programacin diseado por Dennis Ritchie, de los
Laboratorios Bell, yse instal en un PDP-11 en 1972; se dise para ser el lenguaje de los Sistemas
Operativos UNIX1. A su vez, UNIX es un Sistema Operativo desarrollado por Ken Thompson, quin
utiliz el lenguaje ensamblador y un lenguaje llamado B para producir las versiones originales de
UNIX, en 1970. C se invent para superar las limitaciones de B.
Pascal
Pascal es un lenguaje de programacin de alto nivel de propsito general; esto es, se puede utilizar
para escribir programas para fines cientficos y comerciales. El lenguaje de programacin Pascal
fue desarrollado por el profesor Niklaus (Nicols) Wirth en Zurich, Zuiza, al final de los aos 1960s
y principios de los 70s. Wirth dise este lenguaje para que fuese un buen primer lenguaje de
programacin para personas comenzando a aprender a programar. Pascal tiene un nmero
relativamente pequeo de conceptos para aprender y dominar. Su diseo facilita escribir
programas usando un estilo que est generalmente aceptado como prctica estndar de
programacin buena. Otra de las metas del diseo de Wirth era la implementacin fcil. l dise
un lenguaje para el cual fuese fcil escribir un compilador para un nuevo tipo de computadora.
Q Basic
Qbasic es un lenguaje de alto nivel, el cual consiste en instrucciones que los humanos pueden
relacionar y entender. El compilador de Qbasic se encarga de traducir el mismo a lenguaje de
mquina.
Un programa es una secuencia de instrucciones. El proceso de ejecutar esas instrucciones se llama
correr el programa. Los programas contienen las funciones de entrada, procesamiento y salida. La
persona que resuelve problemas mediante escribir programas en la computadora se conoce como

10

programador. Despus de analizar el problema y desarrollar un plan para solucionarlo, escribe y


prueba el programa que instruye a la computadora como llevar a cabo el plan. El procedimiento
que realiza el programador se define como problem solving. Pero es necesario especificar que
un programador y un usuario no son lo mismo. Un usuario es cualquier persona que use el
programa.
Linux
Linux es una implementacin del sistema operativo UNIX (uno ms de entre los numerosos
clnicos del histrico Unix), pero con la originalidad de ser gratuito y a la vez muy potente, que
sale muy bien parado (no pocas veces victorioso) al compararlo con las versiones comerciales para
sistemas de mayor envergadura y por tanto tericamente superiores. Comenz como proyecto
personal del entonces estudiante- Linus Torvalds, quien tom como punto de partida otro viejo
conocido, el Minix de Andy. S. Tanenbaum (profesor de sistemas operativos que cre su propio
sistema operativo Unix en PCs XT para usarlo en su docencia). Actualmente Linus lo sigue
desarrollando, pero a estas alturas el principal autor es la red Internet, desde donde una
gigantesca familia de programadores y usuarios aportan diariamente su tiempo aumentando sus
prestaciones y dando informacin y soporte tcnico mtuo. La versin original -y aun
predominante- comenz para PCs compatibles (Intel 386 y superiores), existiendo tambin en
desarrollo versiones para prcticamente todo tipo de plataformas: Power PC , Sparc , Alpha ,
Mips , etc.
Ensamblador Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave
de su significado, a la cual comnmente se le conoce como mnemnico , tenemos el concepto de
Lenguaje Ensamblador . As, podemos definir simplemente al Lenguaje Ensamblador de la
siguiente forma: Lenguaje Ensamblador es la primera abstraccin del Lenguaje de Mquina ,
consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador
Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Mquina,
y viceversa; simplemente, es una abstraccin que facilita su uso para los seres humanos. Por otro
lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle
a Lenguaje de Mquina. Originalmente, este proceso se haca a mano, usando para ello hojas
donde se escriban tablas de programa similares al ejemplo de la calculadora que vimos arriba .
Pero, al ser tan directa la traduccin, pronto aparecieron los programas Ensambladores, que son
traductores que convierten el cdigo fuente (en Lenguaje Ensamblador) a cdigo objeto (es decir,
a Lenguaje de Mquina).
PHP Qu es? PHP usa una mezcla entre interpretacin y compilacion para intentar ofrecer a los
programadores la mejor mezcla entre rendimiento y flexibilidad. PHP compila para tu codigo una
serie de instrucciones (llamadas opcodes) siempre que estas son accedidas. Estas instrucciones
son entonces ejecutadas una por una hasta que el script termina. Esto es diferente a la manera
convencional de compilacion de lenguajes como C++ donde el cdigo es compilado a cdigo
ejecutable que es despues ejecutado. Php es recompilado cada vez que se solicita un script.

11

C# Qu es? C# es un lenguaje de propsito general orientado a objetos creado por Microsoft para
su plataforma .NET. Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la
plataforma .NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes.
C# fue diseado para combinar el control a bajo nivel de lenguajes como C y la velocidad de
programacin de lenguajes como Visual Basic.
AJAX Qu es? AJAX no es un lenguaje exactamente su nombre viene dado por el acrnimo de
Asynchronous Java Script And XML y es posiblemente la mayor novedad en cuanto a programacin
web en estos ltimos aos. El corazn de Ajax es el objeto XML Http Request? que nos permite
realizar una conexin al servidor y al enviarle una peticin y recibir la respuesta que procesaremos
en nuestro cdigo Javascript, estamos hablando del verdadero motor de Ajax, por ejemplo gracias
a este objeto podemos desde una pgina HTML leer datos de una web o enviar datos de un
formulario sin necesidad de recargar la pgina.
Java Script Qu es? Se trata de un lenguaje de programacin del lado del cliente, porque es el
navegador el que soporta la carga de procesamiento. Gracias a su compatibilidad con la mayora
de los navegadores modernos, es el lenguaje de programacin del lado del cliente ms utilizado.
Ruby y Ruby on Rails Qu es? Ruby on Rails, tambin conocido como RoR o Rails es un framework
de aplicaciones web de cdigo abierto escrito en el lenguaje de programacin Ruby. Ruby apareci
en el ao 1995 y creo que su principal problema haba sido la falta de documentacin en otro
idioma que no sea japons. Eso se ha ido solucionando y crece la popularidad del lenguaje. Su
aplicacin insignia, por decirlo de algn modo parece ser RoR. Su mecanismo de gem se me parece
al CPAN de Perl y al Pear de PHP.
ASP Qu es? Active Server Pages (ASP) y ASP.NET es un intendo de Microsoft para introducirse en
el mercado del desarrollo Web, y viene a ser como su estandar para su servidor Web, ISS. Asp ha
sido atacado por la comunidad open source desde que este apareci, y dan numerosas razones
para ello: El propietario, una nica plataforma, la lentitud
Edgar Ursulo Garcia ABAP (Advanced Business Application Programming) es un lenguaje de cuarta
generacin, propiedad de SAP, que se utiliza para programar dentro de R/3. Utiliza sentencias de
Open SQL para conectarse con prcticamente cualquier base de datos. Cuenta con miles de
funciones para el manejo de archivos, bases de datos, fechas, etc Permite conexiones RFC
(Remote Function Calls) para conectar a R/3 con cualquier otro sistema o lenguaje de
programacin. ABC es un lenguaje de programacin de alto nivel desarrollado por Leo Geurts y
Lambert Meertens a principios de los 80 en el CWI (Centrum voor Wiskunde en Informtica).
Inicialmente fue pensado como sustituto del lenguaje BASIC. Este lenguaje sirvi de inspiracin a
Guido van Rossum para desarrollar el lenguaje Python. Ada es un lenguaje de programacin
estructurado y fuertemente tipado de forma esttica que fue diseado por Jean Ichbiah de CII
Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje

12

multipropsito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal


hasta la flexibilidad de C++. Fue diseado con la seguridad en mente y con una filosofa orientada a
la reduccin de errores comunes y difciles de descubrir. Para ello se basa en un tipado muy fuerte
y en chequeos en tiempo de ejecucin (desactivables en beneficio del rendimiento). La
sincronizacin de tareas se realiza mediante la primitiva rendezvous. Action Script es un lenguaje
de programacin orientado a objetos (OOP), utilizado en especial en aplicaciones web animadas
realizadas en el entorno Macromedia Flash, la tecnologa de Macromedia para aadir dinamismo
al panorama web. Fue lanzado con la versin 4 de Flash, y desde entonces hasta ahora, ha ido
amplindose poco a poco, hasta llegar a niveles de dinamismo y versatilidad muy altos en la
versin 8 de Flash. Action Script es un lenguaje de script, esto es, no requiere la creacin de un
programa completo para que la aplicacin alcance los objetivos. El lenguaje est basado en
especificaciones de estndar de industria ECMA-262, un estndar para Javascript, de ah que
Action Script se parezca tanto a Javascript. Afnix (llamado Aleph hasta el 2003) es un lenguaje de
programacin funcional mutihilos con alcance dinmico de variables y soporte para el paradigma
de programacin orientada a objetos. El interpretador de Afnix est escrito en C++ y provee
integracin en tiempo de ejecucin que incluye la posibilidad de instanciar clases de C++, utilizar
mtodos virtuales, lanzar y atrapar excepciones. Se dispone tambin de una interfase para facilitar
la integracin de libreras externas. Se denomina ALGOL (o Algol) a un lenguaje de programacin.
La voz es un acrnimo de las palabras inglesas Algorithmic Language (lenguaje algortmico). Fue
muy popular en las universidades durante los aos 60, pero no lleg a cuajar como lenguaje de
utilizacin comercial. Sin embargo, Algol influy profundamente en varios lenguajes posteriores
que s alcanzaron gran difusin, como Pascal, C y Ada. Hacia 1965 dos corrientes se distinguieron
sobre el tema de un sucesor para Algol. Como resultado se definieron los lenguajes Algol W que es
un lenguaje minimalista, rpidamente implementado y distribuido y, por otra parte, Algol 68 que
para la poca est en la frontera entre un lenguaje para programar en l y un lenguaje para
investigar sobre l. APL. A Programing Language, es un lenguaje de programacin interpretado
desarrollado por Kenneth Iverson, de IBM, a finales de los aos 60. Desde hace algunos aos
tambin se le conoce como Array Processing Language. Es un lenguaje muy conciso, con una
sintaxis muy sencilla. Est orientado a trabajos con matrices, con la que se pueden hacer todo tipo
de operaciones lgicas o matemticas. Incluso se pueden definir nuevas operaciones matriciales.
Es de una potencia tremenda. Una sola sentencia puede traducirse en miles de ellas en otros
lenguajes, como por ejemplo Fortran. Como ejemplo, el lenguaje de simulacin de circuitos, SIAL,
ocupaba cerca de 25 000 sentencias en Fortran-Assembler y, al ser reescrito en APL, todo el
programa se poda imprimir en dos folios [1]. Por otra parte, a pesar de ser un lenguaje de tan alto
nivel, tambin es capaz de manipular a escala de bits y tiene interfaces con lenguajes de
programacin de bajo nivel (C, ensamblador) mediante los llamados procesadores auxiliares.
AWK es un lenguaje de programacin diseado para procesar datos basados en texto, ya sean
ficheros o flujos de datos. El nombre AWK deriva de los apellidos de los autores: Alfred Aho, Peter
Weinberger, y Brian Kernighan. awk, cuando est escrito todo en minsculas, hace referencia al
programa de Unix o Plan 9 que interpreta programas escritos en el lenguaje de programacin
AWK. AWK es ejemplo de un lenguaje de computacin que usa ampliamente el tipo de datos de

13

listas asociadas (es decir, listas indexados por cadenas clave), y expresiones regulares. El poder,
brevedad y limitaciones de los programas de AWK y los guiones de sed inspiraron a Larry Wall a
escribir Perl. Debido a su densa notacin, todos estos lenguajes son frecuentemente usados para
escribir programas de una lnea.
B B fue el nombre de un lenguaje de programacin desarrollado en los Bell Labs, predecesor del
lenguaje de programacin C. Fue mayoritariamente un trabajo de Ken Thompson con
contribuciones de Dennis Ritchie. Apareci primero sobre el ao 1969.
BASIC es una familia de lenguajes de programacin. Fue originalmente ideado como una
herramienta de enseanza, se disemin entre los microcomputadores caseros en la dcada de
1980, y sigue siendo popular hoy en da en muchos dialectos bastante distintos del original. BASIC
es el acrnimo de Beginners All-purpose Symbolic Instruction Code*1+ (en espaol cdigo de
instrucciones simblicas de propsito general para principantes) y est ligado al nombre de un
trabajo sin publicar del coinventor del lenguaje, Thomas Kurtz (el nombre no est relacionado con
la serie de C. K. Ogden, Basic English).
BCPL es un acrnimo ingls de Basic Combined Programming Language (Lenguaje de Programacin
Bsico Combinado). Fue diseado por Martin Richards de la Universidad de Cambridge en 1966
debido a las dificultades experimentadas con el lenguaje de programacin CPL durante los aos
60. El primer compilador implementado fue escrito en 1967 mientras Richards visitaba el MIT. El
lenguaje fue descrito por primera vez en un proyecto presentado en una conferencia informtica
en 1969. Aos despus, Dennis Ritchie lo utiliz como base para desarrollar B (que a su vez, ms
tarde dara lugar al popular lenguaje de programacin C). Befunge es un lenguaje de programacin
esotrico, funge-oide, reflexivo y basado en pila. Difiere de los lenguajes convencionales en que
los programas estn dispuestos en una parrilla bidimensional. Las instrucciones flecha dirigen el
control de flujo hacia arriba, abajo, izquierda o derecha, y los bucles se construyen dirigiendo el
control de flujo en crculo.
Delphi es un entorno de desarrollo de software diseado para la programacin de propsito
general con nfasis en la programacin visual. En Delphi se utiliza como lenguaje de programacin
una versin moderna de Pascal llamada Object Pascal. Es producido comercialmente por la
empresa estadounidense Code Gear?. En sus diferentes variantes, permite producir archivos
ejecutables para Windows, Linux y la plataforma .NET.
Visual Basic es un lenguaje de programacin desarrollado por Alan Cooper para Microsoft. El
lenguaje de programacin es un dialecto de BASIC, con importantes aadidos. Su primera versin
fue presentada en 1991 con la intencin de simplificar la programacin utilizando un ambiente de
desarrollo completamente grfico que facilitara la creacin de interfaces grficas y en cierta
medida tambin la programacin misma.
Visual Fox Pro es un lenguaje de programacin orientado a objetos y procedural, un Sistema

14

Gestor de Bases de datos o Database Management System (DBMS), y desde la versin 7.0, un
Sistema administrador de bases de datos relacionales, producido por Microsoft.
Lua es un lenguaje de extensin, suficientemente compacto para usarse en diferentes
plataformas. En lua las variables no tienen tipo, slo los datos y pueden ser lgicos, enteros,
nmeros con punto flotante o cadenas. Estructuras de datos como matrices, conjuntos, tablas
hash, listas y registros pueden ser representadas utlizando la nica estructura de datos de Lua: la
tabla. La semntica de Lua puede ser extendida y modificada redefiniendo funciones de las
estructuras de datos utilizando metatablas. Lua ofrece soporte para funciones de orden superior,
colector de basura. Combinando todo lo anterior, es posible utilizar Lua en programacin
orientada a objetos.

15

1.5.1 NIVELES (BAJO, INTERMEDIO Y ALTO)


Lenguaje de alto nivel
La programacin en un lenguaje de bajo nivel como el lenguaje de la mquina o el lenguaje
simblico tiene ciertas ventajas:
Mayor adaptacin al equipo.
Posibilidad de obtener la mxima velocidad con mnimo uso de memoria.
Pero tambin tiene importantes inconvenientes:
Imposibilidad de escribir cdigo independiente de la mquina.
Mayor dificultad en la programacin y en la comprensin de los programas.
Por esta razn, a finales de los aos 1950 surgi un nuevo tipo de lenguaje que evitaba los
inconvenientes, a costa de ceder un poco en las ventajas.
Estos lenguajes se llaman de tercera generacin o de alto nivel, en contraposicin a los de
bajo nivel o de nivel prximo a la mquina.
Principales lenguajes de alto nivel
Ada ALGOL Basic C (en realidad es un lenguaje de medio nivel). C++ CT Clipper Cobol
Fortran Java Lexico Logo Object Pascal Pascal Perl PHP PL/SQL Python Modula2 Lenguajes funcionales o Haskell o Lisp
Lenguaje de medio nivel
Se dice del lenguajes de programacin como C, que se encuentran entre los lenguajes de alto nivel
y los lenguajes de bajo nivel. Estos lenguajes son clasificados muchas veces de alto nivel, pero
permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creacin de
sistemas operativos, ya que permiten un manejo abstracto (independiente de la mquina, a
diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes
de bajo nivel.

16

Una caracterstica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y al
Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si
fueran nmeros (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de
caracteres con el operador suma y copiarlas con la asignacin (en C es el usuario el responsable de
llamar a las funciones correspondientes).
Lenguaje de bajo nivel
Un lenguaje de programacin de bajo nivel es el que proporciona poca o ninguna abstraccin del
microprocesador de un ordenador. Consecuentemente es fcilmente trasladado a lenguaje de
mquina.
La palabra bajo no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la
reducida abstraccin entre el lenguaje y el hardware. Uso: ventajas e inconvenientes.
En general se utiliza este tipo de lenguaje para programar controladores (drivers).
La programacin en un lenguaje de bajo nivel como el lenguaje de la mquina o el lenguaje
simblico tiene ciertas ventajas:
Mayor adaptacin al equipo.
Posibilidad de obtener la mxima velocidad con mnimo uso de memoria.
Pero tambin tiene importantes inconvenientes:
Imposibilidad de escribir cdigo independiente de la mquina.
Mayor dificultad en la programacin y en la comprensin de los programas.

Primera generacin
El lenguaje de programacin de primera generacin (por sus siglas en ingls, 1GL), es el lenguaje
de cdigo mquina. Es el nico lenguaje que un microprocesador entiende de forma nativa. El
lenguaje mquina no puede ser escrito o ledo usando un editor de texto, y por lo tanto es raro
que una persona lo use directamente.
Segunda generacin

El lenguaje de programacin de segunda generacin (por sus siglas en ingls, 2GL), es el lenguaje
ensamblador. Se considera de segunda generacin porque, aunque no es lenguaje nativo del
microprocesador, un programador de lenguaje ensamblador debe entender la arquitectura del
microprocesador (cosas como sus registros e instrucciones).

17

1.5.2 TIPOS (INTRPRETES Y COPILADORES)


Compilador:
Es un programa que traduce los programas escritos en lenguajes de alto nivel a lenguaje mquina.
Los programas escritos en lenguajes de alto nivel se llaman programas fuente y
El programa traducido se llama programa objeto.
El compilador traduce sentencia a sentencia el programa fuente.
Algunos lenguajes compiladores tpicos son:
C
C++
Pascal
FORTRAN
COBOL
Un intrprete es un traductor que toma un programa fuente, lo traduce y a continuacin lo
ejecuta.
Los programas interpretes clsicos son:
BASIC
QBASIC
QUICKBASIC
VISUALBASIC
SMALLTALK
JAVA

18

1.5.3 COMPARACION INTERPRETES Y COMPILADORES


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.
En un compilador hay que distinguir tres lenguajes diferentes:
el de los programas de partida (LA)
el de los programas equivalentes traducidos (LB), normalmente el lenguaje de mquina
el lenguaje en que est escrito el propio compilador (LC), que puede ser igual o diferente a uno
de los otros dos.
Los programas interpretados suelen ser ms lentos que los compilados, pero los intrpretes son
ms flexibles como entornos de programacin y depuracin. Comparando su actuacin 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 intrprete corresponde al
intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
Ventajas de compilar frente a interpretar:
Se compila una vez, se ejecuta n veces.
En bucles, la compilacin genera cdigo equivalente al bucle, pero interpretndolo se traduce
tantas veces una lnea como veces se repite el bucle.
El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error
es ms detallada. Ventajas del intrprete frente al compilador:
Un intrprete necesita menos memoria que un compilador. En principio eran ms abundantes
dado que los ordenadores tenan poca memoria.
Permiten una mayor interactividad con el cdigo en tiempo de desarrollo.
Ventajas del intrprete frente al compilador:
El programa se puede ejecutar de inmediato, sin esperar a ser compilado.
Puede ser interrumpido con facilidad.
puede ser rpidamente modificado y ejecutado nuevamente.
Resultan muy apropiados durante la fase de desarrollo de un programa, ya que la compilacin
no permite la ejecucin paso a paso del programa y con ello impide la edicin seguimiento y
depuracin del programa.

19

Desventajas del intrprete frente al compilador:


La ejecucin es ms lenta, pues cada instruccin debe ser traducida a cdigo mquina tantas
veces como sea ejecutada.
No son adecuados en la fase de explotacin del programa ya que el proceso de interpretacin se
ha de repetir cada vez que se ejecuta el programa, mientras que con la compilacin, una vez
obtenido el programa en leguaje mquina ste puede ser ejecutado sin necesidad de compilarlo
de nuevo.

Un intrprete es un traductor de lenguaje, igual que un compilador, pero difiere de ste en que
ejecuta el programa fuente inmediatamente, en vez de generar un cdigo objeto que se ejecuta
despus de que se completa la traduccin. En principio, cualquier lenguaje de programacin se
puede interpretar o compilar, pero se puede preferir un intrprete a un compilador dependiendo
del lenguaje que se est usando y de la situacin en la cual se presenta la traduccin.

20

21

2.1 IMPORTANCIA DEL LENGUAJE ENSAMBLADOR


El lenguaje ensamblador es de suma importancia ya que ste es directamente traducible al
lenguaje mquina y viceversa, es una abstraccin que facilita su uso para el ser humano.

Actualmente quizs el uso del lenguaje ensamblador pueda parecer a simple vista carente de uso e
importancia, pero en un anlisis ms concienzudo se puede ver que es de hecho un lenguaje que
sirve de base para comprender la programacin de alto y medio nivel, si bien ser raro
encontrarme con aplicaciones reales que exijan una programacin rigurosa en ensamblador, el
entendimiento del mismo ayuda a ver de una manera ms clara el comportamiento que tiene un
lenguaje de programacin con un microprocesador.

El lenguaje ensamblador brinda tambin la posibilidad de ver de una manera ms clara como
funciona un procesador y como interacta realmente con un ser humano y con las instrucciones
que este le brinda a travs de un lenguaje de alto nivel que eventualmente se transforma en
lenguaje ensamblador.
Al ser el lenguaje ensamblador un leguaje que se ejecuta directamente sobre el procesador nos
proporciona a nosotros como estudiantes un mejor entendimiento del funcionamiento del mismo.

El lenguaje ensamblador nos permite adems tener un control absoluto sobre la computadora, los
programas en ensamblador son adems rpidos y ultra ligeros, adems ocupan casi nada de
espacio en memoria ya que no requieren la carga de libreras complejas adicionales.
Adems el lenguaje ensamblador posee la caracterstica de poder controlar completamente las
funcionalidades de la mquina, mientras que los lenguajes de alto nivel ofrecen severas limitantes
en este sentido.

El lenguaje ensamblador permite al programador realizar tareas muy tcnicas que resultaran muy
difciles si no es que imposibles mediante el uso de lenguajes de alto nivel.

22

2.2 MANEJO DE MEMORIA


La memoria es uno de los principales recursos de la computadora, actualmente la mayora de los
computadores cuentan con una gran capacidad de memoria, y las aplicaciones actuales requieren
de alta capacidad de memoria, esto causa que se genere la escasez de memoria en los sistemas
multitarea y multiusuario.

Administrador de memoria:
Su tarea consiste en llevar un registro de las partes de memoria que se estn utilizando y las que
no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y
liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el
disco.
Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los que desplazan los
procesos de la memoria principal al disco y viceversa durante la ejecucin y los que no.
El propsito principal de una computadora es el de ejecutar programas, estos programas, junto
con la informacin que accedan deben de estar en la memoria principal (al menos parcialmente)
durante la ejecucin.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos
a la vez en la memoria principal, para lo cual dispone de varias opciones de administracin tanto
del procesador como de la memoria. la seleccin de uno de ellos depende principalmente del
diseo del hardware para el sistema. a continuacin se observarn los puntos correspondientes a
la administracin de la memoria.
Aspectos generales
Memoria real
La memoria real o principal es en donde son ejecutados los programas y procesos de una
computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. por lo
general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la
informacin contenida en ella es de ms rpido acceso. solo la memoria cache es ms rpida que
la principal, pero su costo es a su vez mayor.

23

Memoria virtual
El trmino memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:
El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusin de
tener ms memoria RAM de la que realmente hay en el sistema. Esta ilusin de existe tanto a nivel
del sistema, es decir, teniendo en ejecucin ms aplicaciones de las que realmente caben en la
memoria principal, sin que por ello cada aplicacin individual pueda usar ms memoria de la que
realmente hay o incluso de forma ms general, ofreciendo a cada aplicacin ms memoria de la
que existe fsicamente en la mquina.
Ofrecer a las aplicaciones la ilusin de que estn solas en el sistema, y que por lo tanto, pueden
usar el espacio de direcciones completo. Esta tcnica facilita enormemente la generacin de
cdigo, puesto que el compilador no tiene por qu preocuparse sobre dnde residir la aplicacin
cuando se ejecute.

24

2.3 DIRECCIONAMIENTO
Los llamados modos de direccionamiento son las diferentes maneras de especificar en informtica
un operando dentro de una instruccin en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de
un operando mediante el uso de la informacin contenida en registros y / o constantes, contenida
dentro de una instruccin de la mquina o en otra parte.
Diferentes arquitecturas de computadores varan mucho en cuanto al nmero de modos de
direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento ms
complejos podra presentar una serie de beneficios, aunque podra requerir de instrucciones
adicionales, e incluso de otro registro. Se ha comprobado que el diseo de CPUs segmentadas es
mucho ms fcil si los nicos modos de direccionamiento que proporcionan son simples.
La mayora de las mquinas RISC disponen de apenas cinco modos de direccionamiento simple,
mientras que otras mquinas CISC tales como el DEC VAX tienen ms de una docena de modos de
direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 dispona
nicamente de tres modos de direccionamiento; algunos ms fueron aadidos posteriormente
para el System/390.
Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia
instruccin (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayora de los RISC). Sin
embargo, cuando hay demasiados modos, a menudo suele reservarse un campo especfico en la
propia instruccin, para especificar dicho modo de direccionamiento. El DEC VAX permita
mltiples operandos en memoria en la mayora de sus instrucciones, y reservaba los primeros bits
de cada operando para indicar el modo de direccionamiento de ese operando en particular.

25

2.4 FORMATO DE UN PROGRAMA


Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solucin de un
problema u obtencin de un producto, en este caso particular, para lograr un producto software
que resuelva un problema especfico.
El proceso de creacin de software puede llegar a ser muy complejo, dependiendo de su porte,
caractersticas y criticidad del mismo. Por ejemplo la creacin de un sistema operativo es una
tarea que requiere proyecto, gestin, numerosos recursos y todo un equipo disciplinado de
trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolucin de una
ecuacin de segundo orden), ste puede ser realizado por un solo programador (incluso
aficionado) fcilmente. Es as que normalmente se dividen en tres categoras segn su tamao
(lneas de cdigo) o costo: de pequeo, mediano y gran porte. Existen varias metodologas
para estimarlo, una de las ms populares es el sistema COCOMO que provee mtodos y un
software (programa) que calcula y provee una aproximacin de todos los costos de produccin en
un proyecto software (relacin horas/hombre, costo monetario, cantidad de lneas fuente de
acuerdo a lenguaje usado, etc.).
Considerando los de gran porte, es necesario realizar complejas tareas, tanto tcnicas como de
gerencia, una fuerte gestin y anlisis diversos (entre otras cosas), la complejidad de ello ha
llevado a que desarrolle una ingeniera especfica para tratar su estudio y realizacin: es conocida
como Ingeniera de Software.
En tanto que en los de mediano porte, pequeos equipos de trabajo (incluso un avezado analistaprogramador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran
porte (y a veces tambin en algunos de pequeo porte, segn su complejidad), se deben seguir
ciertas etapas que son necesarias para la construccin del software. Tales etapas, si bien deben
existir, son flexibles en su forma de aplicacin, de acuerdo a la metodologa o proceso de
desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario
(si fuere el caso).
Los procesos de desarrollo de software poseen reglas preestablecidas, y deben ser aplicados en la
creacin del software de mediano y gran porte, ya que en caso contrario lo ms seguro es que el
proyecto no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos
inaceptables (fracasan, en pocas palabras). Entre tales procesos los hay giles o livianos
(ejemplo XP), pesados y lentos (ejemplo RUP), y variantes intermedias. Normalmente se aplican de
acuerdo al tipo y porte del software a desarrollar, a criterio del lder (si lo hay) del equipo de
desarrollo. Algunos de esos procesos son Programacin Extrema (en ingls eXtreme Programming
o XP), Proceso Unificado de Rational (en ingls Rational Unified Process o RUP), Feature Driven
Development (FDD), etc.

26

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP, FDD, XP, etc), y
casi independientemente de l, siempre se debe aplicar un modelo de ciclo de vida.6
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46%
caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. 7
Cuando un proyecto fracasa, rara vez es debido a fallas tcnicas, la principal causa de fallos y
fracasos es la falta de aplicacin de una buena metodologa o proceso de desarrollo. Entre otras,
una fuerte tendencia, desde hace pocas dcadas, es mejorar las metodologas o procesos de
desarrollo, o crear nuevas y concientizar a los profesionales de la informtica a su utilizacin
adecuada. Normalmente los especialistas en el estudio y desarrollo de estas reas (metodologas)
y afines (tales como modelos y hasta la gestin misma de los proyectos) son los ingenieros en
software, es su orientacin. Los especialistas en cualquier otra rea de desarrollo informtico
(analista, programador, Lic. en informtica, ingeniero en informtica, ingeniero de sistemas, etc.)
normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y
procesos ya elaborados.
Es comn para el desarrollo de software de mediano porte que los equipos humanos involucrados
apliquen metodologas propias, normalmente un hbrido de los procesos anteriores y a veces
con criterios propios.
El proceso de desarrollo puede involucrar numerosas y variadas tareas,6 desde lo administrativo,
pasando por lo tcnico y hasta la gestin y el gerenciamiento. Pero, casi rigurosamente, siempre
se cumplen ciertas etapas mnimas; las que se pueden resumir como sigue:
Captura, e licitacin, especificacin y anlisis de requisitos (ERS)
Diseo
Codificacin
Pruebas (unitarias y de integracin)
Instalacin y paso a produccin
Mantenimiento
En las anteriores etapas pueden variar ligeramente sus nombres, o ser ms globales, o
contrariamente, ser ms refinadas; por ejemplo indicar como una nica fase (a los fines
documentales e interpretativos) de anlisis y diseo; o indicar como implementacin lo que
est dicho como codificacin; pero en rigor, todas existen e incluyen, bsicamente, las mismas
tareas especficas.

27

2.5 PROCESO DE ENSAMBLE Y LIGADO


Lenguaje Ensamblador
Proceso de ensamble y ligado de un programa
Este proceso es muy sencillo y se describe a continuacin:
Si est trabajando en MS-DOS siga estos pasos:
1.- Escriba el programa, tal y como aparece en el listado anterior, usando su editor de texto
preferido.
2.- Gurdelo con algn nombre y la extensin .ASM.
3.- En el smbolo del MS-DOS escriba lo siguiente
C:\PASS32\BIN\>PASS32 Nombre.ASM t <Enter>
4.- Ejecute el programa .COM que se genera.
Para probar el programa abra una ventana de MS-DOS y seleccione el programa haciendo doble
clic sobre el icono.
Directivas de ensamble (Seudo instrucciones)
Pass32 cuenta con algunas palabras reservadas que cumplen tareas especiales para facilitar la
Programacin en ensamblador, estas palabras son llamadas seudo instrucciones o directivas de
ensamble.
La siguiente es una lista de las directivas de ensamble ms utilizadas en Pass32:
DB Reserva un byte en memoria
DW Reserva una palabra (Word) en memoria o 2 bytes
DD Reserva una palabra doble (Double Word)
.EQU Se utiliza para reemplazar smbolos por valores
PROC-ENDP Se utilizan para declarar procedimientos en los programas
.MACRO-ENDM Se utilizan para declarar macros
DUP Sirve para inicializar cadenas de caracteres o arreglos numricos
.INCLUDE Se utiliza para obtener datos o subrutinas de otros programas
.EXTERN Declara un smbolo como externo, trabaja en conjunto con .INCLUDE .PUBLIC Declara un
smbolo como pblico
Los programas incluidos como ejemplos muestran la forma de utilizar estas directivas.

28

2.6 INSTRUCCIONES
Los microprocesadores Intel 80x86 disponen de las instrucciones add y sub para realizar sumas y
restas respectivamente, estas instrucciones pueden trabajar sobre operandos de longitud byte
(8bits),Word (16bits), double-word (32bits) y quad-word (64bits). Los operandos pueden ser
nmeros consigno o sin signo, en caso de ser nmeros con signo stos son almacenados en su
forma de complemento a 2. Se debe observar que estas instrucciones realizan cambios en los bits
del registro de banderas, algunas banderas modificadas segn el resultado de la operacin son las
banderas SF, ZF, OF, CF, PF y DF.
Cada instruccin add tiene la forma:
Add destino, fuente
Cuando esta instruccin es ejecutada el valor que se encuentra en fuente es sumado al valor que
se encuentra en destino, sobrescribiendo el valor que originalmente se encontraba en destino
Por el nuevo valor resultado de la adicin.
Cada instruccin sub tiene la forma:
Sub destino, fuente
Cuando esta instruccin es ejecutada el valor que se encuentra en fuente es restado del valor que
se encuentra en destino, sobrescribiendo el valor que originalmente se encontraba en destino
por el nuevo valor resultado de la sustraccin. Debe observar que tanto para la suma como para la
resta el valor de destino es cambiado por el valor resultado de la operacin, a diferencia del valor
de fuente que permanece inalterado.

29

2.6.1 INSTRUCCIONES ARITMETICAS


El microprocesador Z-80 dispone de una unidad aritmtica-lgica que le permite realizar una serie
de operaciones, tanto aritmticas, como lgicas. Las aritmticas incluyen la suma y resta con o sin
acarreo, incremento y decremento de un registro, comparaciones, ajuste decimal, complemento y
negacin. Las lgicas incluyen las operaciones que se realizan con los operadores "AND", "OR" y
"XOR".
Antes de adentrarnos en el estudio de las instrucciones concretas, daremos una serie de
definiciones tiles:
SUMA SIN ACARREO:
Consiste en sumar al contenido del registro "A" un nmero y obtener el resultado en el registro
"A". El indicador de acarreo no se tiene en cuenta para esta operacin.
SUMA CON ACARREO:
Exactamente igual que la anterior, pero se suma tambin el indicador de acarreo del registro "F".
De esta forma, se puede incluir en la suma el acarreo procedente de una suma anterior.
RESTA SIN ACARREO:
Consiste en restar un nmero del contenido del registro "A", y obtener el resultado en este mismo
registro. El indicador de acarreo no interviene en la operacin. Se consideran nmeros negativos
los superiores a 127 (7Fh) de la forma que se explic en el captulo relativo a los sistemas de
numeracin; es decir, el nmero 255 (FFh) se considera "-1", el 254 (FEh) se considera "-2" y as
sucesivamente, hasta 128 (80h) que se considera "-128". El paso de 127 a 128 o viceversa se indica
poniendo a "1" el flag de "overflow" (P/V) del registro "F".
RESTA CON ACARREO:
Igual que el anterior, salvo que tambin se resta el indicador de acarreo (CF) del registro "F".
INCREMENTO:
Consiste en sumar uno al contenido de un registro que se especifica en la instruccin.
DECREMENTO:
Es la inversa de la anterior, consiste en restar uno al contenido de un registro

30

Si se trata de un registro doble, se decrementa el de orden bajo y, si esto hace que pase a valer
255 (FFh), se decrementa tambin el de orden alto.
Si el registro incrementado o decrementado es de 8 bits, resultan afectados los indicadores del
registro "F".
COMPARACIONES:
Estas instrucciones permiten comparar el contenido del acumulador con un nmero. Para ello, se
resta el nmero del contenido del acumulador, pero el resultado no se almacena en ninguna
parte, simplemente, se alteran determinados flags del registro "F", lo que nos indica si el nmero
era menor, igual o mayor que el contenido del acumulador. Si era igual, se pone a "1" el flag "Z"
(indicador de "cero"). Si el nmero era mayor, se pone a "1" el flag "S" (indicador de "signo").
AJUSTE DECIMAL:
Esta instruccin realiza un ajuste del contenido del acumulador para que, en vez de estar
comprendido entre "00h" y "FFh", lo est entre "00h" y "99h". Si se produce acarreo, se indica
mediante el flag correspondiente. Para realizar esta operacin se toma en cuenta el estado de los
indicadores de "acarreo" (C) y "semi-acarreo" (H). Su finalidad es la de permitir realizar
operaciones en "BCD" (Decimal Codificado en Binario).
COMPLEMENTO:
Consiste en realizar un "complemento a 1" del acumulador, es decir, cambiar los "unos" por
"ceros" y los "ceros" por "unos".
NEGACIN:
Consiste en realizar un "complemento a 2" del acumulador, es decir, realizar un "complemento a
1" y, luego, sumarle "1". Lo que se obtiene es el "negativo" del nmero que tenamos en el
acumulador. El efecto es el mismo que si restramos el acumulador de "cero".
EL FLAG DE ACARREO:
Existen dos instrucciones que afectan al indicador de acarreo del registro "F", es posible ponerlo a
"1" o "complementarlo" (ponerlo a "1" si era "0" y viceversa). No se ha previsto una instruccin
para poner a "0" el flag de acarreo, dado que esto se puede conseguir haciendo un "AND" o un
"OR" del acumulador consigo mismo.

31

2.6.2 INSTRUCCIONES DE COMPARACION


Estas instrucciones permiten la comparacin de valores de datos.
Si la comparacin es verdadera dar continuidad lgica y ejecutar la instruccin siguiente de la
lnea
Los parmetros que necesita cada instruccin en el formato general son:
Expresin: Operandos y definicin de la comparacin que se desea realizar.
En el formato especfico para cada instruccin habra que definir los parmetros
Fuente A: Operando 1.
Fuente B: Operando 2.
Los operandos pueden ser :
ENTEROS: del tipo I, O, S, B,C,R,N,BCD o ASCII.
COMA FLOTANTE: del tipo F
CONSTANTES: Nmeros enteros o en coma flotante
Si se utilizan palabras de los ficheros ASCII o BCD el procesador interpretar los datos como
nmeros enteros:
En una misma instruccin de comparacin se pueden mezclar nmeros enteros y en coma
flotante.
El comportamiento de una instruccin de comparacin dentro de una lnea de programacin
escalonada es similar a las de tipo rel.
Estas instrucciones se pueden asociar en paralelo y en serie con cualquiera de las instrucciones de
test.

32

2.6.3 INSTRUCCIONES DE SALTO


A veces un programa debe cambiar el flujo del programa en forma incondicional o bajo una
condicin (Para tomar una decisin), por lo tanto debe haber instrucciones que permitan cambiar
el flujo de un programa sin ningn requisito, o en caso de que una condicin se cumpla. Existen
instrucciones para ste propsito. Son las instrucciones de saltos incondicionales y condicionales,
que saltan a un determinado punto si se cumpla la condicin.
Una instruccin de salto produce un cambio en la ejecucin del programa pasando a una nueva
posicin, no secuencial. La direccin del salto se representa con una etiqueta.

Instruccin

Descripcin

jmp etiqueta Salto incondicional directo


je etiqueta

Salto por igual

jne etiqueta

Salto por no igual

jg etiqueta

Salto por mayor

jng etiqueta

Salto por no mayor

jge etiqueta

Salto por mayor igual

jnge etiqueta Salto por no mayor igual


jl etiqueta

Salto por menor

jnl etiqueta

Salto por no menor

jle etiqueta

Salto por menor igual

jnle etiqueta Salto por no menor igual


js etiqueta

Salto negativo

33

2.6.4 INSTRUCCIONES PARA EL STACK


"Stack" significa pila en ingls, pila en el sentido de apilar cosas", no de batera elctrica. Es una
zona de la memoria en donde se guardan cosas. Por ejemplo las variables locales de las subrutinas
y funciones, los parmetros, algunos resultados intermedios de clculos complejos, etc.
Todo el manejo del stack lo realiza el compilador de forma automtica, as que no hace falta
preocuparse salvo cuando se acaba el lugar y el programa genera un error ("stack overflow").
Lo ms importante de esta estructura es que en cada momento slo se tiene acceso a la parte
superior del stack (no a las cosas que estn apiladas debajo).
Entonces cada subrutina puede guardar sus datos en el stack, y las subrutinas a las que llame no
los afectarn. La pila es una zona de la memoria sobre la que se pueden escribir y leer datos de
forma convencional.
Esta zona tiene una posicin especial que se denomina la cima de la pila. El procesador contiene
dos instrucciones de su lenguaje mquina para realizar las operaciones de apilar y des apilar
datos de la pila.
Los datos que se pueden apilar y des apilar, en el caso del Intel Pentium son siempre de tamao 4
bytes.
En lenguajes modernos, la pila es generalmente aplicada con ms de las operaciones de solo
"push" y "pop". La duracin de una pila puede ser devuelta a menudo como un parmetro. Otra
operacin de ayuda de arriba (tambin conocido como mirar o pico) puede devolver el elemento
actual superior de la pila sin eliminarlo de la pila.

34

2.7 MACROS
Una de las principales desventajas de la programacin en lenguaje ensamblador es la repeticin
constante de ciertos grupos de instrucciones. Por ejemplo el siguiente conjunto de instrucciones
nos permite imprimir una variable de tipo cadena en la pantalla:

Lea DX,Cadena ;Direccionar la cadena


Mov AH,09h ;Usar la funcin 09h para imprimir cadenas
Int 21h ;llamada a la interrupcin 21h del DOS
Si necesitamos que en nuestro programa se muestren mensajes constantemente, es obvio que
debemos duplicar este conjunto de instrucciones por cada mensaje que se desea enviar a pantalla.
El principal problema que esto nos ocasiona es que el tamao de nuestro programa crece
considerablemente, y mientras ms grande sea el programa, ms difcil ser encontrar la causa de
algn error cuando ste ocurra.

La mejor solucin en estos casos es el uso de las MACROS. Una macro es un conjunto de
instrucciones que se agrupan bajo un nombre descriptivo (macroinstruccin) y que slo es
necesario declarar una vez (macrodefinicin).

Una vez que la macro ha sido declarada, slo es necesario indicar su nombre en el cuerpo del
programa y el ensamblador se encargara de reemplazar la macroinstruccin por las instrucciones
de la macro (expansin de la macro).

El formato general de una macro es el siguiente:


.MACRO Nombre [(parametro1, parametro2, etc)]
INSTRUCCIONES
ENDM

Nuevamente, lo que se encuentra entre parntesis cuadrados es opcional.


De acuerdo con esto, la macro para imprimir cadenas quedara de la siguiente forma:

.MACRO Imprime_Cad(Cadena)
Lea DX,Cadena
Mov Ah,09h

35

Int 21h
ENDM
Parmetros y etiquetas
Dentro de las propiedades ms importantes de las macros se deben destacar la posibilidad de
utilizar parmetros y etiquetas.

Los parmetros permiten que una misma macro pueda ser usada bajo diferentes condiciones, por
ejemplo, se puede crear una macro para posicionar el cursor en diferentes coordenadas de la
pantalla e indicar sus coordenadas por medio de parmetros.

La siguiente macro nos muestra esta propiedad:


;Esta macro posiciona el cursor en las coordenadas que se le indican como
;parmetros. Es el equivalente al GotoXY de Pascal.
.MACRO gotoxy (x,y)
xor bh,bh ;Seleccionar pgina cero de video
mov dl,x ;Columna
mov dh,y ;Rengln
mov ah,02h ;Funcin 02h para posicionar cursor
int 10h ;llamada a la int 10h del BIOS
ENDM

Tambin existen situaciones en las que los parmetros no son necesarios, es por esta razn que
los parmetros son opcionales en la declaracin de la macro.
Esta macro realiza una pausa en el programa hasta que una tecla es ;presionada. Es el equivalente
del readkey en Pascal.
.MACRO tecla
mov ah,10h
int 16h
ENDM

Por otro lado, las etiquetas tambin son tiles dentro de las macros. Suponga que se desea crear
una macro que imprima una cadena un numero n de veces, esta macro podra ser declarada de la
siguiente forma:

.MACRO Imprime_nCad (Cadena, Cuantos)


Mov CX,Cuantos ;Iniciar Contador
Lea DX,Cadena ;Direccionar la cadena que se va a imprimir

36

Mov Ah,09h ;Usar la funcin 09h


Otra: ;Etiqueta interna
Int 21h ;Imprimir la Cadena n veces
Loop Otra ;Siguiente Impresin

ENDM
Ensamble de macros
Como ya se mencion antes, una macro es declarada una sola vez y puede ser llamada cuantas
veces sea necesario dentro del cuerpo del programa.
Cada vez que el ensamblador encuentra un macroinstruccin, verifica si sta fue declarada; si esta
verificacin es exitosa, el ensamblador toma las instrucciones del cuerpo de la macro y las
reemplaza en el lugar donde la macro fue llamada.

Ventajas y desventajas
Si bien es cierto que las macros proporcionan mayor flexibilidad a la hora de programar, tambin
es cierto que tienen algunas desventajas.
La siguiente es una lista de las principales ventajas y desventajas del uso de las macros.
Ventajas:

Menor posibilidad de cometer errores por repeticin.

Mayor flexibilidad en la programacin al permitir el uso de parmetros.

Cdigo fuente ms compacto.

Al ser ms pequeo el cdigo fuente, tambin es ms fcil de leer por otros.

Desventajas:

El cdigo ejecutable se vuelve ms grande con cada llamada a la macro.

Las macros deben ser bien planeadas para evitar la redundancia de cdigo.

37

2.8 INTERRUPCIONES
Una interrupcin es el rompimiento en la secuencia de un programa para ejecutar un programa
especial llamando una rutina deservicio cuya caracterstica principal es que al finalizar regresa al
punto donde se interrumpi el programa.
Dentro de una computadora existen dos clases de interrupciones:
Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide
cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.

Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al
procesador su caracterstica principal es que no son programadas, esto es, pueden ocurrir en
cualquier momento en el programa. Existen dos clases de interrupciones de este tipo:
Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no
ser interrumpido.

Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre interrumpen al


programa.
Tipos de interrupciones
int 00H-->division entre cero
int 01h-->un solo paso
int 02h-->interrupcion no enmascarable
int 03h--> punto deinterrupcion
int 04h-->desbordamiento
int 05h-->impresion de pantalla
int 08h-->Cronometro
int 09h-->interrupcion desde el teclado
int 0Bh-->Control del puerto Com1
int 0Ch-->Control del puertoCom2
int 0Dh-->Control de dispositivos en paralelo
int 0EH-->Control de disco flexible
int 0Fh-->Control de dispositivos en paralelo 2
int 10h-->Funciones de exibicion de video
int11h-->Determinacion del equipo
int 12h-->Determinacion tamao de la memoria
int 13h-->Funciones del Bios, E/S
int 14h-->Comunicaciones de E/S
int 15h-->Servicios del sistema

38

int 16h-->Funciones de entrada delteclado


int 18h-->Entrada con el Basic de Rom
int 19h-->Cargador ed arranque
int 1Ah-->Leer y establecer la hora
int 1Bh-->Obtener el control con una interrupcion de teclado.
int 2oh-->Terminar un programa
int 21h-->Funciones del dos.
int 22h-->Direccion de terminacion
int 23h-->Direccion de Ctrl/Break
int 24h-->Manejador de error critico
int 25h-->Lectura absoluta de disco
int 26h-->Escritura absoluta de disco
int 27h-->Terminacion permaneciendo residente
int 2Fh-->Interrumpe la multiplexion
int 33h->Funciones del Raton

39

También podría gustarte