• Domingo 17 de Noviembre de 2024, 03:57

Autor Tema:  Tomar El Nible De Un Registro  (Leído 1983 veces)

Welteroel

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.youtube.com/msud07
Tomar El Nible De Un Registro
« en: Viernes 11 de Mayo de 2007, 23:12 »
0
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!

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Tomar El Nible De Un Registro
« Respuesta #1 en: Sábado 12 de Mayo de 2007, 01:53 »
0
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:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Welteroel

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.youtube.com/msud07
Re: Tomar El Nible De Un Registro
« Respuesta #2 en: Domingo 13 de Mayo de 2007, 20:13 »
0
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!!!!

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Tomar El Nible De Un Registro
« Respuesta #3 en: Martes 15 de Mayo de 2007, 01:19 »
0
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:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Welteroel

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.youtube.com/msud07
Re: Tomar El Nible De Un Registro
« Respuesta #4 en: Miércoles 16 de Mayo de 2007, 09:17 »
0
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!