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



Bisogna vivere come si pensa, altrimenti si finirÓ per pensare come si Ŕ vissuto.
Paul Bourget

Valid CSS!
pagina generata in 0.001 secondi