CODE2

azvez
15 de Febrero del 2005
Hola mi duda es la siguiente
Tengo que realizar en CODE-2 el siguente programa:

"Tenemos en memoria una tabla desordenada que contiene H聮0A datos.
El primer dato (inicio de la tabla) se encuentra en la posici贸n H聮00F0.
Buscamos un n煤mero (que almacenaremos en r2). Si durante la b煤squeda
se encuentra dicho n煤mero, se da su posici贸n dentro de la tabla por OP1.
Si no est谩, se inserta al final de la tabla, y se da su posici贸n dentro de la
tabla por OP1. Cargar el programa a partir de la posici贸n H聮0000. "

He intentado hacerlo de la siguiente manera:
ORG H'0000;
LD rA,[H'00F0]; registro en el principio de la tabla
LD rB,[H'00F9]; registro al final de la tabla
LD r2,[H'00A7]; registro con un valor cualquiera
ADDS r3,rA,r0; valor inicial del puntero
LLI rD,F9; llevar a rD direccion del final del programa
SUBS rF,rB,r3; ver si el puntero sobrepasa el final de tabla
BS; si se sobrepasa ir al final
ADDS rD,r3,r0; llevar el puntero al registro de direccion
LD r4,[00]; llevar dato de la tabla a r4
SUBS rF,r4,r2; comparar r4 con r2
LLI rD,00; direccion de salto si son iguales
LHI rD,16
Bz; saltar si son iguales
LLI rD,00; direccion de salto si r4>r2
LHI rD,17
BS; saltar si r4>r2
LHI rD,17; direccio de salto si r4<r2
ADDS r3,r3,r1; incremento el puntero de la tabla
LLI rD,05; direccion de salto
BR salto incondiccional a 0005
OUT OP1,r4
LD r4,[H'00FA]
OUT OP1,r4
HALT
END
A ver si me pudieran ayudar lo m谩s rapido posible.
Gracias