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

Rispondi a Maurizio Annulla risposta

Seguici anche sul tuo Social Network preferito!

Send this to a friend