Está en la página 1de 14

INSTITUTO TECNOLGICO DE CUAUTLA

MANUAL DE PROGRAMACION

ING. SISTEMAS COMPUTACIONALES

MATERIA:
LENGUAJES Y AUTOMATAS II

INTEGRANTES:
NELSON BARRERA ALDAY
JOSE ALFREDO VALLADAREZ VILLLANUEVA

H.H. Cuautla, Mor.

AGOSTO-DICIEMBRE 2016

Contenido
Introduccin........................................................................................................ 4
Marco Terico...................................................................................................... 5
LENGUAJE ENSAMBLADOR............................................................................ 6
LENGUAJES DE ALTO NIVEL...........................................................................7
LENGUAJES DE MEDIO NIVEL........................................................................8
OBJETIVOS DE DESARROLLO.........................................................................9
CARACTERSTICAS.......................................................................................... 10
INTERACCIN CON BOTONES......................................................................10
REAS DE TEXTO........................................................................................ 11
TABLA DE SMBOLOS...................................................................................... 12
Lenguaje..................................................................................................... 12
Tipos de datos............................................................................................ 13
Operaciones................................................................................................ 13
Directivas.................................................................................................... 13
EJEMPLOS DE USO Y APLICACIN...................................................................14
Guardar datos............................................................................................. 14
Errores........................................................................................................ 15

Introduccin

Un programa tiene que escribirse en un lenguaje entendible por el ordenador, desde el


punto de vista fsico, un ordenador es una maquina electrnica. Los elementos fsicos,
( memoria, unidad central de proceso, etc.) de que dispone un ordenador para representar
los datos los cuales son de tipo binario esto es cada elemento puede diferenciar de dos
estados o a lo que se conoce como niveles de voltaje por lo cual cada estado se le denomina
genricamente como bit y se simboliza por 0 o 1. Por lo tanto. Para representar y
manipular la informacin numrica alfanumrica alfabtica se emplean cadenas de bits.
Segn esto la cantidad de informacin empleada por un ordenador para representar un
carcter. General mente un byte es una cadena de ocho bytes.
Un programa indica que es lo que desea desarrollar en el ordenador mediante instrucciones,
el presente documento trata de mostrar el trabajo desarrollado en la materia de lenguajes y
autmatas II de la carrera de ingeniera en sistemas computacionales, el sistema se
denomina como una imitacin de lenguaje compilador, el cual de desarrollarse en un 100%
tratara de explicar la funcionalidad del lenguaje ensamblador. Si bien en la actualidad se
tiene un 70% del proyecto explica alguna de las caractersticas importantes.

Marco Terico
LA UNIDAD CENTRAL DE PROCESAMIENTO (CPU)

Es el dispositivo fsico que ejecuta las instrucciones. Las instrucciones que ejecuta la CPU
son por lo general muy simples. Las instrucciones pueden requerir datos que estn en un
lugar especial de almacenamiento de la CPU en si misma llamados registros.
La CPU puede acceder a los datos en los registros mucho ms rpido que en la memoria.
Sin embargo el nmero de registros en la CPU es limitado, as el programador debe tener
cuidado de dejar en los registros solo los datos que est usando. Las instrucciones que un
tipo de CPU ejecuta las hace en lenguaje de mquina. Los programas en lenguaje de
maquina tienen una estructura mucho ms bsica que los lenguajes de alto nivel. Las
instrucciones en lenguaje de maquina son codificadas como nmeros, no en formatos de
texto amigables. Una CPU debe estar en capacidad de decodificar una instruccin muy
rpidamente para ejecutarse eficientemente.
EL lenguaje de maquina es diseado con este objetivo en mente, no para ser fcilmente
descifrados.
As por ejemplo cuando un programa dice al ordenador que visualice un mensaje sobre el
ordenador o que lo imprima sobre la impresora. Las instrucciones correspondientes para
llevar a cabo esta accin, para que puedan ser entendibles por el ordenador tienen que ser
almacenadas en la memoria como cadenas de bits.
Esto hace pensar que escribir un programa utilizando ceros y unos. Llevara mucho tiempo
y con todas las posibilidades de cometer errores, por este motivo se desarrollaron los
lenguajes ensambladores.

LENGUAJE ENSAMBLADOR

Un programa Escrito en lenguaje ensamblador es almacenado como texto (tal como


programas de alto nivel). Cada instruccin representa exactamente una instruccin de la
mquina. Por ejemplo, la instruccin de suma descrita arriba podra ser representada en
lenguaje ensamblador como: dad eax, ebx Aca el significado de la instruccin es mucho
ms claro que el cdigo de la mquina. La palabra dad es el nemnico para la instruccin
de suma. La forma general de una instruccin de ensamblador es: mnemonico operando(s)
Un ensamblador es un programa que lee un archivo de texto con instrucciones de
ensamblador y convierte el ensamblador en cdigo de mquina. Los compiladores son
programas que hacen conversiones similares para lenguajes de programacin de alto nivel.
Un ensamblador es mucho ms simple que una instruccin de la mquina. Las instrucciones
de un lenguaje de alto nivel son mucho ms complejas y pueden requerir muchas
instrucciones de mquina.
Otra diferencia importante entre los lenguajes ensamblador y de alto nivel es que debido a
que cada tipo de CPU tiene su propio lenguaje de mquina, tambin tiene su propio
lenguaje ensamblador. Trasladar programas entre arquitecturas de computador diferentes es
mucho ms difcil que en un lenguaje de alto nivel. En los ejemplos de este libro se usa
Netwide Assembler o NASM . Est disponible libremente en Internet (vea el prefacio para
la URL). Los ensambladores ms comunes son el ensamblador de Microsoft (MASM) y el
de Borland (TASM) . Hay algunas diferencias en la sintaxis del ensamblador de NASM,
MASM y TASM .
mnemonico operando(s)

Un ensamblador es un programa que lee un archivo de texto con instrucciones de


ensamblador y convierte el ensamblador en cdigo de mquina. Los compiladores son
programas que hacen conversiones similares para lenguajes de programacin de alto nivel.
Un ensamblador es mucho ms simple que un compilador. Cada instruccin de lenguaje
ensamblador representa una sola instruccin de la mquina. Las instrucciones de un
lenguaje de alto nivel son mucho ms complejas y pueden requerir muchas instrucciones
de maquina Otra diferencia importante entre los lenguajes ensamblador y de alto nivel es
que debido a que cada tipo de CPU tiene su propio lenguaje de mquina, tambin tiene su
propio lenguaje ensamblador. Trasladar programas entre arquitecturas de computador
diferentes es mucho ms difcil que en un lenguaje de alto nivel. En los ejemplos de este
libro se usa Netwide Assembler o NASM . Est disponible libremente en Internet (vea el
prefacio para la URL). Los ensambladores ms comunes son el ensamblador de Microsoft
(MASM) y el de Borland (TASM) . Hay algunas diferencias en la sintaxis del ensamblador
de NASM, MASM y TASM .

LENGUAJES DE ALTO NIVEL

Un lenguaje de alto nivel permite al programador escribir las instrucciones de un programa


utilizando palabras o expresiones sintcticas muy similares al ingls. Por ejemplo, en C se
pueden usar palabras tales como:
case, if, for, while, etc.
Los lenguajes de alto nivel logran la independencia del tipo de mquina y se aproximan al
lenguaje natural. Los lenguajes de alto nivel, tambin denominados lenguajes
evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre
otros:
Lograr independencia de la mquina, pudiendo utilizar un mismo programa en diferentes
equipos con la nica condicin de disponer de un programa traductor o compilador, que lo
suministra el fabricante, para obtener el programa ejecutable en lenguaje binario de la
mquina que se trate. Adems, no se necesita conocer el hardware especfico de dicha
mquina.
Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma
ms sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el
lenguaje mquina, ya que se utilizan palabras (en ingls) en lugar de cadenas de smbolos
sin
ningn
significado,aparente.

Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemticas,
manejo de tablas, etc, que figuran en una especie de librera 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), adems de las diferentes versiones o dialectos que se
han
desarrollado
de
algunos
de
ellos
Variantes

Genera un cdigo ms sencillo y comprensible.


Escribir un cdigo vlido para diversas mquinas y, posiblemente, sistemas
operativos.
Reduccin de velocidad al ceder el trabajo de bajo nivel a la mquina.
Algunos requieren que la mquina cliente posea una determinada plataforma.

LENGUAJES DE MEDIO NIVEL

Se trata de un trmino no aceptado por todos, pero q seguramente habrs odo. Estos
lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos
lenguajes podra situarse C ya que puede acceder a los registros del sistema, trabajar con
direcciones de memoria, todas ellas caractersticas de lenguajes de bajo nivel y a la vez
realizar operaciones de alto nivel.
Generaciones
La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o
generaciones.
Primera generacin: lenguaje mquina.
Segunda generacin: se crearon los primeros lenguajes ensambladores.
Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol
Cuarta generacin. Son los lenguajes capaces de generar cdigo por si solos, son los
llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el
lenguaje. Aqu tambin se encuentran los lenguajes orientados a objetos, haciendo posible
la reutilizacin d partes del cdigo para otros programas. Ej. Visual, Natural Adabes.
Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial.
Estos lenguajes todava estn poco desarrollados. Ej. LISP

OBJETIVOS DE DESARROLLO

El objetivo principal es desarrollar un compilador para poder comprender las etapas que el
mismo autmata posee, el lenguaje base para desarrollar lo que denominamos
PseudoAsambler en java. En un principio el equipo de trabajo se plane desarrollarse bajo
plataforma C# por la modalidad que posea pero dada la factibilidad se opt por java. Por
qu java? Dado que el desarrollo es a manera de aprendizaje se opt por java dado que
posee una mquina virtual, asemejando en mucho aspecto la funcionalidad de la maquina
fsica, por otra parte las instrucciones a usar en el mismo fueron muy simples, a pesar que
java brinda una gran posibilidades de crear un compilador, se opt por hacerlo de forma
fcil con el uso de arreglos como vectores y un analizador token por token delimitando el
rea de trabajo a un lenguaje definido, y lexemas propios.
Como objetivo principal tenemos que:
1.- Quien utilice este lenguaje tenga las bases suficientes para poder entrar al estudio de
lenguaje ensamblador.
Que el usuario tenga una interaccin previa a la forma tradicional de usar registros,
especficos. Aunque actual mente solo se cuenta con el uso de variables enteras dado que
los nmeros flotantes o doubles an no son permitidos. Es un buen comienzo para que el
usuario comience a programar, movimientos especficos.

Como se muestra en la imagen el uso de un lenguaje de alto nivel como lo es c, y la diferencia que exis

CARACTERSTICAS
Como es a decir el programa trata de explicar el funcionamiento de un lenguaje
ensamblador, en lenguaje asambler el usuario no ve lo que pasa cuando est indicando
instrucciones. Por lo contrario tenemos 4 cajas de texto en las cuales una es para introducir
texto y las consecutivas son para observacin del programa. La interfaz de usuario es
simple.

INTERACCIN CON BOTONES


El botn inicio da la instruccin de iniciar el programa una vez
insertado dentro del rea de texto asignada. De lo contrario no
realizara accin alguna. Te muestra a que rea pertenecen los
lexemas. Si existen errores te los mostrara.
La opcin borrar es para cuando se desea limpiar los
formularios.

El botn traducir te describe como sera el cdigo entendible


para el usuario. Despus de realizar el anlisis lxico.
El botn compilar es la opcin que te permite ver la ejecucin
del cdigo ingresado

REAS DE TEXTO

AREA DE TEXTO NUMERO 1:


El rea de texto es nicamente de ingreso de cdigo est por dems decir que las dems reas
indicadas (2, 3,4); No pueden ser editables, es decir no pueden ingresar cdigo alguno. Esto para
evitar problemas con el usuario principiante.
AREA DE TEXTO NUMERO 2:
Es el rea donde se mostraran los lexemas indicando que son, y para que se usan mostrara todo en
cuando ingresamos dentro del rea de texto nmero 1. Es una seccin que no puede ser editable solo
es de observacin. Muestra tambin la traduccin de cdigo.
AREA DE TEXTO NUMERO 3:
El rea de texto est delimitada para mostrar nicamente las faltas cometidas dentro de la rea de
ingreso de cdigo (rea numero 1) .
AREA DE TEXTO NUMERO 4:

El recuadro en dado caso de pasar correctamente el anlisis sintctico mostrara primeramente lo


ingresado en los registros, independientemente despus te mostrara lo que mandes a
imprimir.BOTONES BARRA SUPERIOR.

Est por dems decir el estndar en la aplicacin hacer ms grande la


pantalla o en su defecto minimizarla, por lo contrario cerrar la
aplicacin.

TABLA DE SMBOLOS
Lenguaje

El lenguaje se limita a una comparativa en el de lenguaje ensamblador.

C
D
Alfabeto

Por otra parte el lenguaje son los registros de uso general en un principio se planea
dividirlos un par de registros para suma otros para resta y en subsecuente, dada la
irrelevancia que tendra, se presentan todos los registros como medios de almacenamiento
para realizar los movimientos pertinentes. Algo muy importante de este lenguaje es que no
identifica si el registro ingresado es mayscula o minscula. Esto para comodidad del
usuario.

Tipos de datos.

Enteros.
0

4
5
Datos Tipo Entero

Dentro del programa se plane que el nico uso de datos es el entero pensando en que el
lenguaje sea agradable al usuario despertando un inters por usar y desarrollar ms
caractersticas del mismo. Por el momento acepta cualquier combinacin de datos
numricos. No es aceptable el punto decimal.

Operaciones

ADD
Suma

NO
Resta

DIL
Divisin

MUL
Multiplicacin

Las decisiones operativas son propias del lenguaje, pensando mucho en el lenguaje
ensamblador. Dado que la nica que utiliza es ADD que significa sumar o adherir. Como
subsecuente la resta, la divisin y multiplicacin.

Directivas

MOB

Mover Dato A

Inicio del Programa

Fin del Programa

X
Bucle IF
(contador)

Las directivas que se utilizan dentro del programa son las presentadas a continuacin si
bien es un diccionario simple, es por la razn que el usuario sienta que el entorno lo atrapa
para desarrollar cualquier operacin lgica que tenga en mente.
El smbolo X nos muestra que no es ms que un bucle if el cual se program como un
contador el cual tendr un decremento en medida que sea declarado por el usuario, por el
momento su funcin no es muy estable ms sin en cambio, se encuentra en desarrollo. Para
lograr un desempeo ms ptimo.

EJEMPLOS DE USO Y APLICACIN


Se muestra algunos ejemplos como lo son:
Guardar datos
Mover lo que el valor de 10 a un registro en este caso el registro a, lo muestra el anlisis lxico.
No hay error alguno e identifica que es cada opcin.

Como vemos lo que es la traduccin: se puede apreciar muy bien lo que es el programa, como se
explic con anterioridad. Guarda 10 en el registro A.

El siguiente ejemplo se explica solo:

Errores
En cuando se ingrese una palabra smbolo que no est dentro del diccionario establecido de
inmediato enviara un mensaje en el rea de errores los cuales son indicados, a continuacin nos
muestra que los tokens /, +, . no son permitidos dentro del lenguaje.

Qu pasa si desarrollamos lo siguiente

Simple al dar click en la opcin compila nos debe aparecer lo que est almacenado En el registro A