Las instrucciones de desplazamiento son cuatro: shl, shr,
sar y sal; y su objetivo es desplazar los bits de un operando un determinado
número de posiciones a la izquierda o a la derecha. La estructura de los
operandos manejados por estas instrucciones y su significado es idéntico para
las cuatro instrucciones.
·
SHL (Shift Left = desplazamiento a la
izquierda)
Se desplazan a la izquierda los bits del operando
destino tantas posiciones como indique el operando fuente. El desplazamiento de
una posición se realiza de la siguiente forma: el bit de mayor peso del
operando se desplaza al bit CF del registro de estado, el resto de los bits se
desplazan una posición hacia la izquierda, y la posición de menor peso se
rellena con un 0
·
SAL (Shift Arithmetic Left = desplazamiento
aritmético a la izquierda)
El objetivo de un desplazamiento aritmético a la
izquierda es multiplicar un operando, interpretado con signo, por una potencia
de 2.
Para llevar a cabo este tipo de desplazamiento, hay que
desplazar los bits del operando hacia la izquierda introduciendo ceros por su
derecha.
Nota: En realidad, este tipo de
desplazamiento es idéntico al llevado a cabo por la instrucción shl; por tanto,
sal y shl son de hecho la misma instrucción y se codifican con el mismo código
máquina.
·
SHR (Shift Right = desplazamiento a la
derecha)
La instrucción shr funciona de la misma forma que
shl, pero desplazando los bits a la derecha en lugar de a la izquierda.
·
SAR (Shift Arithmetic Right = desplazamiento
aritmético a la derecha)
Esta instrucción desplaza los bits del
operando destino a la derecha tantos bits como indique el operando fuente. Esta
forma de funcionamiento es similar a la de la instrucción shr; sin embargo,
ambas instrucciones se diferencian en que sar, en vez introducir ceros por la
izquierda del operando, replica el bit de mayor peso (bit de signo) en cada
desplazamiento.