Pues tengo un pequeño problemilla a ver si alguien me puede ayudar.No tengo demasiado claro que condición ó condiciones se deben dar para que se produzca el salto a la rutina B_R
Codigo:
FUNCION2 LEA INICIO_CADENA,A0
MOVE.L #$10,D0
B_REPRE CMPI.B #$0D,(A0)
DBEQ D0,B_R
SUBI.L #1,D0
.
.
.
B_R MOVE.B (A0)+,CODIGO
.
.
.
RTS
A mi entender,las condiciones para saltar a B_R son que D0 sea distinto de 0 y que el byte apuntado por A0 sea distinto de $0D.En el momento en que alguna de las dos ya no se cumpla,no se produce el salto.Pues bien,lo he simulado y no hace eso ni por asomo
Haber las instrucciones de comparacion utilizan el bit Z, eso si en tu programa falta lo que quieres comparar, es decir, en el trozo de codigo:
Codigo:
CMPI.B #$0D,(A0)
DBEQ D0,B_R
debajito del COMPI.B debes poner el salto a realizar es decir si quieres que salte si es cero a la siguiente instruccion debes poner BEQ sig
Codigo:
CMPI.B #$0D,(A0)
BEQ sig
BNE sig_out
sig DBEQ D0,B_R
sig_out .....
Es decir, debes especificar los saltos, aqui te puedes descargar las instrucciones resumidas:
http://miarroba.com/foros/ver.php?foroid=348538&temaid=3442593
Vamos para hacer el codigo mas optimo seria algo asi asi:
Codigo:
CMPI.B #$0D,(A0)
BNE sig_out
DBEQ D0,B_R
........
sig_out .....
Mejor asi que ir comprobando el bit Z del CCR....recordar que el bit Z se pone a 1 cuando el resultado de una operacion o de una transferencia(MOVE) es CERO.
Ummmm pues la verdad que me extraña que despues de la comprobacion no venga el dato de instruccion a realizar.....haber si es una errata de examen(en mi escuela no seria la primera vez por desgracia.....) de todas formas la instruccion de salto DBcc(Decrement and Branch on cc) es una instruccion que tiene dos argumentos, el primero es el registro de datos y el segundo un desplazamiento de 16 bits respecto al PC:
Codigo:
1. Comprueba la condicion cc.Si se cumple, pasa a ejecutar la instruccion siguiente(secuencia normal del programa en si), en el caso de estar en un bucle se saldria del mismo.
2. Decrementa el contenido del registro de datos.
3. Si el contenido del registro es -1, como en el paso 1. , se ejecuta la instruccion siguiente(salida del bucle en caso de estar realizando uno).
4. Modifica el PC con el desplazamiento indicado(Salta al comienzo del bucle).
Ese es el funcionamiento de la instruccion DBcc.....
Holaaa!!!bueno esto esta algo olvidado...pero vamos a seguir poniendo cositas, esta vez tres subrutinas las cuales pueden ser utiles y por supuesto como practica a programar todo es bueno jeje!
Codigo:
vs_DImensionVector -> Calcula la dimension del vector
vs_ElementoMayorVector -> Calcula el elemento mayor de un vector
vs_ElementoMayorVector2 ->Implica las dos subrutinas anteriores en una
Suerte!!!