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.