martes, 21 de febrero de 2012

Construya su propia computadora (implementacion de Simpletron).





Abajo Link para descargar código fuente.



Este es el titulo de un ejercicio que ví propuesto en el libro "Como programar en Java, 5ta edicion pagina 294" y que nos lleva a la implementacion de un sistema llamado Simpletron para la ejecucion de ordenes estilo ensamblador, la implemetacion es bastante basica, pero me gusta mucho y quiero aqui compartir con ustedes.

Aqui esta el link para que lean las especificaciones que aparecen en ellibro.

Les resumo que, el programa esta dotado de una memoria que almacena maximo 100 numeros enteros (en el libro llamados palabras), ademas de una variable llamada acumulador de tipo entero; en la memoria almacenamos ordenenes compuestas por un numero de 4 digitos (palabras) donde los dos primeros representan un codigo de operacion y los dos numeros restantes operando, ejemplo 1011 asi:

|10|11|

 |  |
 |  +--- operando
 +--- Codigo de operacion

Claro que el ejercicio propuesto no termina alli, pues en los ejercicios 20.26 y 20.27 del mismo libro proponen crear con este un compilador para un lenguaje de alto nivel; en la medida de lo posible estare gastandole algo de tiempo al ejercicio.

Al final expongo la implementacion que hice para ustedes, aunque no lo hice a cabalidad como el libro lo pide, empezando en que no use aplet para escribir un codigo mas simple.


Hosting
 

Los codigo de operacion son los siguiente (Sugeridos en el libro)

Operaciones de entrada/salida:
10:Lee una palabra desde el teclado y la introduce en una ubicación específica dememoria.
11:Escribe una palabra de una ubicación específica de memoria y la imprime en lapantalla.


Operaciones de carga/almacenamiento:
20:Carga una palabra de una ubicación específica de memoria y la coloca en elacumulador.
21:Almacena una palabra del acumulador dentro de una ubicación específica dememoria.


Operaciones aritméticas:
30:Suma una palabra de una ubicación específica de memoria a la palabra en elacumulador (deja el resultado en el acumulador).:
31:Resta una palabra de una ubicación específica de memoria a la palabra en elacumulador (deja el resultado en el acumulador).:
32:Divide una palabra de una ubicación específica de memoria entre la palabra enel acumulador (deja el resultado en el acumulador).
33:Multiplica una palabra de una ubicación específica de memoria por la palabra enel acumulador (deja el resultado en el acumulador).


Operaciones de transferencia de control:
40:Bifurca hacia una ubicación específica de memoria.
41:Bifurca hacia una ubicación específica de memoria si el acumulador es negativo.
42:Bifurca hacia una ubicación específica de memoria si el acumulador es cero.
43:Alto. El programa completó su tarea.





Pasos para pedir dos numero enteros, sumarlos y mostrar el resultado;
1010 (Pedir un numero y guardarlo en memoria en la posicion 10)
1011
(Pedir un numero y guardarlo en memoria en la posicion 11)
2010 (Cargar lo que este en la posicion 10 de la memoria al acumulador)
3011 (Sumar lo que este en la posicion 11 y el acumulador, el resultado se guardara en el acumulador)
2112 (Almacenar lo que este en el acumulador a la memoria en la posicion 12)
1112; (Imprimir lo que este en la memoria en la posicion 12)

Nota: ver que la ultima instrucion termina en punto y coma ';'

Pantallazo de la aplicación:



--------------------------------------------------------------------------------------------------
Hallar el mayor de tres numeros;
1020
1021
1022
2020
3121
4109
2020
2123
4011
2021
2123
3122
4115
1123
4300
1122;

Nota: ver que la ultima instrucion termina en punto y coma ';'

Codigo fuente clic aqui.


Hosting

Comenta acerca del código.

Entrada destacada

Matriz de adyacencia para un grafo

"La matriz de adyacencia es una matriz cuadrada que se utiliza como una forma de representar relaciones binarias."; aunque pa...