Autor Tema: PROBLEMA CON EL REGISTRO RRF EN NIPLE  (Leído 3578 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado camilo2

  • PIC10
  • *
  • Mensajes: 2
PROBLEMA CON EL REGISTRO RRF EN NIPLE
« en: 14 de Septiembre de 2010, 23:14:16 »
Hola a todos, soy nuevo en el foro y en la programación con Niple, por favor necesito que me expliquen como hacer para generar en el ASM la instrucción( rrf contador,f ) ya que en Niple tengo dos opciones, guardarlo en el mismo registro, o guardarlo en el registro w, y eso genera (rrf contador,1 o rrf contador,0 y yo necesito que genere rrf contador.f porque con el 1 o 0 no rota el registro a la derecha pero sin con la f. Gracias de antemano :-/ :-/

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PROBLEMA CON EL REGISTRO RRF EN NIPLE
« Respuesta #1 en: 15 de Septiembre de 2010, 05:45:35 »
Cuando insertas un bloque de RRF en Niple lo que se realiza es rotar un bit a la derecha y para ello debes de selecionar el registro a rotar y en el destino seleccionar el mismo registro que has rotado.

De todas formas luego compruebo que es lo que ha generado en el codigo en ASM al compilar.

Fermin
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PROBLEMA CON EL REGISTRO RRF EN NIPLE
« Respuesta #2 en: 15 de Septiembre de 2010, 15:56:57 »
En Niple he probado el codigo generado en ASM y te pone por ejemplo
"rrf conta1,1""  Esto significa que el bit se rota a la dereha y al ser ,1 indica que el resultado de la rotacion se guarda en el mismo registro donde se realizó la rotacion en esta caso conta1.
Adjunto un ejemplo donde puedes verlo.

Fermin
Todos los días se aprende algo nuevo.

Desconectado camilo2

  • PIC10
  • *
  • Mensajes: 2
Re: PROBLEMA CON EL REGISTRO RRF EN NIPLE
« Respuesta #3 en: 17 de Septiembre de 2010, 00:39:45 »
Gracias Fermin por responder, lo que yo necesito hacer es una pequeña fórmula matemática, que yo lo hago en formato asm pero es impopcible en Niple, a continuacion paso a explicar( 600-74=526/4=131 ) 600 es la cuenta máxima que se va a contar, luego le resto 74, hasta ahi todo bien, ahora tengo que dividir en 4. Niple para dividir en 16 bits ocupa una fórmula de 40 instrucciones que yo lo reemplazo por 6 instrucciones simplemente rotando el registro 2 veces, lo que necesito es como hacer para guardar el resultado de 16 bits en un registro de 8 bits ya que el resultado mayor es 131. Gracias.

   bcf status,c
   rrf contador1,f
   rrf contador2,f

   bcf status,c
   rrf contador1,f
   rrf contador2,f

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PROBLEMA CON EL REGISTRO RRF EN NIPLE
« Respuesta #4 en: 17 de Septiembre de 2010, 05:49:58 »
Si el resultado es  de 16 bits y el resultado mayor es de 131 ¿ese numero no se habra guardado en el byte bajo del par de registros?

Si es asi solo tienes 2 opciones

o trabajar con ese byte bajo del par de registros de 8bits
o bien asignar a otro registro de 8bits el registro bajo del resultado de 16bits. Eso se hace con asignar valor--> registro destino-->registro origen.

fermin
Todos los días se aprende algo nuevo.