T&T - PIC

 

Le istruzioni ROTATE

 


Le istruzioni di ROTATE senza Carry

Il set Enhanced consente di disporre di due altre rotazioni che vengono effettuate senza toccare iul contenuto del Carry. Queste istruzioni non esistono nel set dei PIC con core a 12 e 14 bit. 
opcode funzione
rrncf ruota a destra senza il carry
rlncf ruota a sinistra senza il carry

Questa differenza di denominazione è necessaria perchè nel set Enhanced esistono anche rotazioni che coinvolgono il Carry.


Rotate Left No Carry - rlncf

La sintassi è questa:

Sintassi: [label] RLNCF f, d(, a)

Descrizione: Il contenuto del registro f è ruotato di un bit a sinistra senza interessare il Carry.
Se d = w o d = 0, il risultato è salvato in WREG. Se d = f o d = 1, il risultato è salvato nel registro f.

Operazione: (f(n)) -> d(n+1), f(7) -> d(0), 

Operando: 0 ≤ f ≤ 255, d[0,1]

Flag di STATUS modificati:  N, Z

Numero cicli necessari all' esecuzione: 1

a è il parametro dell' Access Bank, se posto a 0. Se a 1 è valida la selezione del banco con i BSR.
Non è necessario indicare questo parametro con MPASM in quanto la sua gestione è automatica. 

Va anche ricordato che, abilitando il set di istruzioni esteso, l' istruzione opera in Indexed Literal Offset Adderssing con f ≤ 95.

La rotazione a sinistra senza Carry è semplicemente una rotazione del contenuto del registro su se stesso; il contenuto del Carry NON viene toccato:

  • il bit 7 del registro da ruotare viene passato al bit 0 dello stesso registro

  • tutti i bit si spostano verso sinistra di una posizione e quindi 

  • al posto del bit zero viene iniettato il valore che aveva il bit 7 prima della rotazione

    L' intera sequenza richiede un solo ciclo per essere eseguita.

Bisogna tenere presente che il risultato delle istruzioni di rotate possono essere indirizzato sia al file che viene ruotato, sia all' accumulatore WREG.
L' identificazione tra le due possibilità avviene nel sorgente con il suffisso f o w, per cui la linea

   rlncf   registro, f  

farà ruotare il contenuto del registro f come visto ora.
Ma se il suffisso diventa w, l' operazione eseguita produrrà un diverso effetto. Quindi:

   rlncf   registro, w  

genererà la seguente situazione:

Il contenuto del registro sarà ruotato, senza influenzare il Carry, ma il valore così ottenuto non sarà salvato nel registro, bensì si troverà in WREG.

Di conseguenza, il contenuto del registro resta immutato.

 


Rotate Left No Carry - rrncf

La sua sintassi è la seguente:

Sintassi: [label] RRNCF f, d(, a)

Descrizione: Il contenuto del registro f è ruotato di un bit a destra senza interessare il Carry.
Se d = w o d = 0, il risultato è salvato in WREG. Se d = f o d = 1, il risultato è salvato nel registro f.

Operazione: (f(n)) -> d(n-1), f(0) -> d(7)

Operando: 0 ≤ f ≤ 255, d[0,1]

Flag di STATUS modificati:  N, Z

Numero cicli necessari all' esecuzione: 1

a è il parametro dell' Access Bank, se posto a 0. Se a 1 è valida la selezione del banco con i BSR.
Non è necessario indicare questo parametro con MPASM in quanto la sua gestione è automatica. 

Va anche ricordato che, abilitando il set di istruzioni esteso, l' istruzione opera in Indexed Literal Offset Adderssing con f ≤ 95.

 

A specchio il comportamento della rotazione a destra senza il Carry

  • il bit 0 del registro da ruotare va a sostituire il bit 7 dello steso registro

  • tutti gli altri bit si spostano verso destra di una posizione

  • al posto del bit sette viene iniettato il valore che aveva il bit 0 prima della rotazione

 

Come per la precedente istruzione, il risultato può essere indirizzato sia al file che viene ruotato, sia all' accumulatore WREG.
L' identificazione tra le due possibilità avviene nel sorgente con il suffisso f o w, per cui la linea

   rrf   registro, f  

farà ruotare il contenuto del registro f come visto ora.
Ma se il suffisso diventa w, l' operazione eseguita produrrà un diverso effetto. Quindi:

   rrf   registro, w  

genererà la seguente situazione:

Il bit 0 del registro sarà al bit 7, come nel caso precedente.

Il contenuto del registro sarà ruotato, ma il valore così ottenuto non sarà salvato nel registro, bensì si troverà in WREG.

Di conseguenza, il contenuto del registro resta immutato, mentre cambierà il contenuto di WREG.

 


Queste istruzioni ruotano il registro su se stesso, fornendo un supporto per operazioni matematiche e strutture genere shift register.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 13/10/14.