SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: Welteroel en Viernes 11 de Mayo de 2007, 23:12

Título: Tomar El Nible De Un Registro
Publicado por: Welteroel en Viernes 11 de Mayo de 2007, 23:12
Saludos amigos, tengo poco tiempo programando micros con asembler y se me presento un incoveniente en el programa que estoy desarrollando para un pic 16f628. Tengo una variable almacenada en una posicion cualquiera de la memoria, necesito tomar el nible menos significativo y almacenarlo en otro registro o ubicacion de memoria, pero sin alterar el otro nible del nuevo registro donde se quiere almacenar la información. Como podria realizar esta acción? No se si me supe explicar, pero espero la ayuda que me puedan brindar!
Título: Re: Tomar El Nible De Un Registro
Publicado por: Toph en Sábado 12 de Mayo de 2007, 01:53
Cita de: "Welteroel"
Tengo una variable almacenada en una posicion cualquiera de la memoria, necesito tomar el nible menos significativo y almacenarlo en otro registro o ubicacion de memoria, pero sin alterar el otro nible del nuevo registro donde se quiere almacenar la información. Como podria realizar esta acción? No se si me supe explicar, pero espero la ayuda que me puedan brindar!
Bueno no se si entendi bien  :rolleyes: , digamos que tienes dos posiciones de memoria NUM1= AB y NUM2=CD quieres tomar el nible menos significativo de NUM1(o sea B ) y almacenarlo en NUM2 sin alterar el Nible mas significativo (o sea C), total que quieres que en  NUM2 quede CB, pues una forma es la siguiente

si NUM1 = AB y NUM2= CD

Código: Text
  1.  
  2. movlw 0xF0;efectuas una AND con F0 en NUM2 para que el nible menos significativo
  3. andwf NUM2,1;quede a cero CD AND F0 = C0, esto se guarda en NUM2
  4. movlw 0x0F;luego efectuas otra AND con 0F y NUM1 para tomar el nible menos  
  5. andwf NUM1,0;significativo, AB AND 0F = 0B, esto se guarda en W
  6. xorwf NUM2,1;finalmente haces una XOR entre W que es igual al nible menos significativo  de NUM1 (o sea 0B) y NUM2 (que es C0) obteniendo CB
  7.  

espero me entiendas


saludos  :hola:
Título: Re: Tomar El Nible De Un Registro
Publicado por: Welteroel en Domingo 13 de Mayo de 2007, 20:13
Muchisimas gracias mi amigo Toph, me entendiste perfectamente y era justo lo que necesitaba, bueno realmente funcionó con una IOR al final en vez de la XOR, pero te capte la idea perfectamente.

 Nuevemente te agradezco, hasta luego amigo!!!!
Título: Re: Tomar El Nible De Un Registro
Publicado por: Toph en Martes 15 de Mayo de 2007, 01:19
Cita de: "Welteroel"
bueno realmente funcionó con una IOR al final en vez de la XOR, pero te capte la idea perfectamente.

 Nuevemente te agradezco, hasta luego amigo!!!!
De nada aunque soy chica :lol: , y si funciona con IOR como con XOR pues es una operacion con un numero x y un Cero :comp:



saludos  :hola:
Título: Re: Tomar El Nible De Un Registro
Publicado por: Welteroel en Miércoles 16 de Mayo de 2007, 09:17
Tienes toda la razon amiga, funciona tantocon XOR como con IOR. Mi error debio ser porque interpretando tu codigo la visualise rapidamente con una IOR, pero como tu dices, funciona perfectamente porque la operacion es con ceros.
 
    Al realizar la XOR entre los dos registros se obtendria      
                             [0|1|0|1|0|0|0|0]   (C0)
                             [0|0|0|0|1|0|0|1]   (0B)
                             ----------------------------      
                             [0|1|0|1|1|0|0|1]   (CB)
   
   Tienes toda la razón!

   Disculpa mi error y el que no me haya dado cuenta que eres un chica. Muchas Gracias, Bye!