Come scambiare un registro con W in assembler

Scambio di un registro con W in assembler

Con un banale accorgimento è possibile scambiare il contenuto di un qualsiasi registro con il registro accumulatore W senza l’ausilio di un terzo registro di appoggio. L’accorgimento consiste nell’usare tre istruzioni XOR consecutive come mostrato  nel listato 3 (si ricorda che l’operazione XOR tra due bit restituisce un valore alto solo se i due bit operando sono diversi tra loro). Il listato 3 riporta un esempio scritto sottoforma di macro per PIC ed è facilmente trasportabile su altri microcontrollori. Per l’esempio si è supporto di voler scambiare il contenuto di W con quello di un registro A.

I commenti a fianco di ciascuna riga di codice mostrano il contenuto dei registri coinvolti a seguito dell’esecuzione della relativa istruzione. L'esempio riportato  è scritto in assembler per PIC e, come si può notare dal listato 3, il nome della macro è stato scelto in modo  da assomigliare ad una istruzione vera e propria. Includendo questa macro nel programma si disporrà dunque di una "nuova istruzione" SWAPWF che scambia il contenuto  di  W  con quello del registro F passatogli come parametro.

SWAPWF
macro     A       ;sia A=11010011 W=01001111
xorwf     A,F     ;A=10011100  W=01001111
xorwf     A,W     ;A=10011100  W=11010011
xorwf     A,F     ;A=01001111  W=11010011
          endm
Listato 3
Scarica subito una copia gratis

11 Commenti

  1. Avatar photo johnnydsg 26 Dicembre 2015
    • Avatar photo Emanuele 26 Dicembre 2015
    • Avatar photo smania2000 26 Dicembre 2015
      • Avatar photo Emanuele 27 Dicembre 2015
  2. Avatar photo Giovanni Di Maria 26 Dicembre 2015
  3. Avatar photo Maurizio 26 Dicembre 2015
  4. Avatar photo dfg123434 19 Giugno 2017
    • Avatar photo Maurizio Di Paolo Emilio 19 Giugno 2017
  5. Avatar photo Giovanni Di Maria 19 Giugno 2017
  6. Avatar photo Giovanni Di Maria 19 Giugno 2017
Seguici anche sul tuo Social Network preferito!

Send this to a friend