dal 2015 - visita n. 1260
Tips
Tips

 

Scambio di due variabili
(senza una terza come appoggio)


E' risaputo che, indipendentemente dal linguaggio usato, il modo più semplice per scambiare il contenuto di due variabili è quello di usarne una terza, come variabile temporanea, ed eseguire una copiatura circolare. Partendo dal contenuto di due registri:

      MOV  AX,3333h
      MOV  BX,4444h

abbiamo:

      MOV  CX,AX
      MOV  AX,BX
      MOV  BX,CX 

Il linguaggio Assembly x86 consente altri modi più rapidi per effettuare lo scambio e senza l'aiuto di variabili temporanee. Sfruttando lo stack possiamo usare la sequenza:

      PUSH AX
      PUSH BX
      POP  AX
      POP  BX 

Oppure direttamente con la più efficiente:

      XCHG AX,BX 

Se non vogliamo dipendere dalle specifiche possibilità offerte dal linguaggio assembly, esiste un'altra tecnica, indipendente dal linguaggio, che sfrutta una proprietà dell'operatore XOR (OR esclusivo). Per coerenza sviluppiamo l'esempio ancora in assembly:

      XOR  AX,BX
      XOR  BX,AX
      XOR  AX,BX 

Provare per credere, anche con altri linguaggi, a patto che possiedano l'operatore XOR.



Asm86
Scambio di Variabili
Ottimizzazioni
Moltiplicazioni in Binario
Supertimer Pentium



Le leggi non servono se non sono sorrette da una forte e precisa volonta' politica, se non sono in grado di funzionare per carenza di strutture adeguate e soprattutto se le strutture non sono dotate di uomini professionalmente qualificati.
Giovanni Falcone

Valid CSS!
pagina generata in 0.001 secondi