Ayuda URGENTE!!!

payox
21 de Junio del 2006
En l universidad me han mandado un proyecto que no logro entender de a mucho espero que alguien me de algun consejo o ayuda para saber por donde puedo empezar.
aqui les mando el proyecto:

El procesador

Considere un microprocesador que tenga las caracter铆sticas siguientes:
聲 Cada palabra es de cuatro bits
聲 Las direcciones son dos palabras. La palabra de mayor valor es siempre la primera.
聲 La memoria es 256 palabras
聲 Existen dos acumuladores, A y B, cada uno almacena una palabra
聲 Hay nueve instrucciones. Cada instrucci贸n requiere por lo menos una palabra almacenar el c贸digo que especifica la instrucci贸n. Cuatro instrucciones tienen argumentos y requieren dos palabras adicionales.

Cada n煤mero de 4 bits puede tener los valores de 0 a 15. Se escribir谩 usando notaci贸n en hexadecimal, es decir, 10 es A, 11 es B, etc. 脡stas son las nueve instrucciones:

Code Palabras Descripci贸n
0 3 LD: Asignar al acumulador A el contenido de la posici贸n de memoria especificado como argumento.
1 3 ST: Escribir el contenido del acumulador A en la posici贸n de memoria especificada como argumento.
2 1 SWP: Cambiar los valores de los acumuladores A y B.
3 1 ADD: agregue el contenido a los acumuladores A y B. La parte baja de la suma gu谩rdela en A y la parte alta en B.
4 1 INC: Incrementar el acumulador A. Si se desborda el valor, el incremento pasa de F a 0.
5 1 DEC: Decrementar el acumulador A. Si se desborda la operaci贸n, el decremento pasa de 0 a F.
6 3 BZ: Si el acumulador A es cero, el siguiente comando ha ser ejecutado estar谩 localizado como argumento. Si no es cero, nada sucede.
7 3 BR: el siguiente comando ha ser ejecutado estar谩 como argumento.
8 1 STP: Parar la ejecuci贸n del programa.

El microprocesador comienza siempre ejecutando el comando en la localizaci贸n 00. Ejecuta los comandos en secuencia hasta que alcanza el comando de la parada.
Los ejemplos de abajo son programas parciales de demo y describen su afectan.
Programa Descripci贸n
01A8 Asignar el contenido de memoria de la posici贸n 1A (26 en decimal) en el acumulador A y parar.
01A512F8 El acumulador A almacena el contenido de la posicion 1A, lo decrementa, almacena el resultado a la posici贸n de memoria 2F y luego para.

La entrada consistir谩 en varias l铆neas de exactamente 256 caracteres hexadecimales. Cada l铆nea es el contenido de la memoria, comenzando con la direcci贸n 00 y terminando con la direcci贸n FF. El extremo de la entrada es indicado por un estado de la memoria que tenga una instrucci贸n de la parada (\"8\") en la direcci贸n 00. Los programas de entrada nunca quieren estar al final de la memoria, es decir, usted nunca ejecutar谩 una instrucci贸n que est茅 situada entre las direcciones F0 y FF, inclusive.
Salida
Para cada estado de la memoria, usted debe simular la ejecuci贸n que comienza con la direcci贸n 00. Cuando se alcanza la instrucci贸n de la parada, usted descargar谩 el contenido de la memoria a la salida como sola cadena de 256 caracteres hexadecimales seguidos por un retorno de carro.
Ejemplos
Este programa leen dos n煤meros (de una sola palabra) a partir del 10 y del 11, y almacenan la suma de dos palabras en 12 y 13.

0102011311321128FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Salida Correcta es:

0102011311321128FF1E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Este programa computa el n2 (el cuadrado), donde n se almacena en 40, y almacena el resultado de dos palabras en FE y en FF.

040563B14004220FF31FF041320FE31FE00C2042314200032041314170080000F03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Salida Correcta es:

040563B14004220FF31FF041320FE31FE00C204231420003204131417008000011F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1


Agradeceria mucho algun buen punto por donde comenzar. ES URGENTE!!!

Pedro
21 de Junio del 2006
Empieza por parsear la entrada para tener un array de entradas.
<p>Despeus te recorres el array detectando las instrucciones y ejecutandolas...

payox
21 de Junio del 2006
el punto de comienzo lo tengo lo que no logro entender es que debo hacer con el valor hexadecimal, algo tiene que ver con los bits mas significativos y esas cosas pero no entiendo muy bien como usar lo de bits mas significativos si me podeis ayudar seria bueno.