Programación Específica > Microcontroladores

 Tomar El Nible De Un Registro

(1/1)

Welteroel:
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:

--- 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!
--- Fin de la cita ---
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 --- movlw 0xF0;efectuas una AND con F0 en NUM2 para que el nible menos significativoandwf NUM2,1;quede a cero CD AND F0 = C0, esto se guarda en NUM2 movlw 0x0F;luego efectuas otra AND con 0F y NUM1 para tomar el nible menos   andwf NUM1,0;significativo, AB AND 0F = 0B, esto se guarda en Wxorwf 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  
espero me entiendas


saludos  :hola:

Welteroel:
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:

--- 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!!!!
--- Fin de la cita ---
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:

Welteroel:
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!

Navegación

[0] Índice de Mensajes

Ir a la versión completa