dal 2015 - visita n. 1214
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



Un uomo che dubita del proprio amore, può, anzi deve, dubitare di ogni più piccola cosa.
Sigmund Freud

Valid CSS!
pagina generata in 0.001 secondi