2011-12-04 7 views
17

Ho imparato a lavorare con l'assemblatore 80x86, quindi nell'operazione di cambio bit-saggio, ho riscontrato un problema con l'utilizzo di SAL e SHL. I significa la differenza tra le righe di codice come segue:Differenza tra SHL e SAL in 80x86

MOV X, 0AAH 
SAL X, 4 

MOV X, 0AAH 
SHL X, 4 

Quando dovremmo usare SHL e quando uso SAL? Qual è la differenza di loro?

risposta

24

Secondo this, sono gli stessi:

L'aritmetica spostamento a sinistra (SAL) e spostano fianco logico (SHL) istruzioni eseguono la stessa operazione; spostano i bit nell'operando di destinazione a sinistra (verso i punti più significativi ). Per ogni numero di turni, il bit più significativo dell'operando di destinazione viene spostato nel flag CF e il minimo significativo di viene cancellato (vedere la Figura 7-7 nel Manuale dello sviluppatore del software per le architetture Intel®64 e IA-32 , Volume 1).

Entrambi sono stati probabilmente inclusi solo per completezza in quanto non v'è una distinzione per il diritto turni.

+0

grazie per aver reso chiaro il concetto. In tutto questo tempo ho avuto il concetto sbagliato che quel SAL sposta i bit di una posizione a sinistra, ma invece di cancellare l'lsb, mantiene inalterato il bit di lsb. – Abrar

+0

SAL e SHL hanno lo stesso codice operativo, è solo un sinonimo mnemonico come 'jne' vs.' jnz'. Quindi non c'è modo per la CPU di sapere quale è stata scritta; devono comportarsi allo stesso modo. –

4

Non c'è differenza, a parte Intel e AMD che desiderano deprecare il duplicato SAL.

1

funzionano allo stesso modo, poiché uno spostamento aritmetico è uguale a uno spostamento bit a bit quando è a sinistra (crescente). sar, d'altra parte, sarà diverso da shr se è impostato il bit del segno.

1

Sono gli stessi se si utilizza la direzione sinistra.

-1

in realtà entrambi sono uguali ..! ma SAL utilizzato quando moltiplicazione numerica destinato ESEMPIO SAL:

Multiply AX by 8 
MOV CL, 3 
SAL AX, CL 

entrambi sono praticamente funzionerà STESSO E avere stessa CODICE MACCHINA

2

shl e sal sono le same.They avere stesso codice macchina .
shr e SAR sono NON il same.They hanno quasi stesso codice macchina. (Ma anche no)
Controllare this.