You are on page 1of 18

Desplazamiento y Rotacin

Lenguajes de interfaz

Desplazamiento
SHL
;Desplazamiento a la izquierda
SHR ;Desplazamiento a la derecha
SAL
;Desplazamiento aritmtico a la izquierda
SAR
;Desplazamiento aritmtico a la derecha
SHLD ;Desplazamiento de doble precisin a la izquierda
SHRD ;Desplazamiento de doble precisin a la derecha

SHL (Desplazamiento A La Izquierda)


Realiza el desplazamiento a la izquierda del primer operando tantos bits
como indique el segundo operando, introduciendo un 0 y guardando el bit
que sale en el bit CF del registro de estado.

Ejemplo de desplazamiento a la izquierda


El numero binario 11001111 desplazado un bit a la izquierda se convierte en
10011110.
1

CF

MOV BL, 8FH


SHL BL, 1

;BL=10001111B
;CL, BL=1, 00011110B

SHR (Desplazamiento A La Derecha)


Realiza un desplazamiento lgico a la derecha en el operando de destino,
sustituyendo el dit superior con un 0. El bit inferior se copia a la bandera de
acarreo y el bit que estaba en CF Se Pierde.

Ejemplo de desplazamiento a la Derecha


El 0 del bit inferior en AL se copia a la CF y el bit superior en AL se borra.
1

0
CF

MOV AL, 0D0H


SHR AL, 1

;AL=11010000B
;AL=01101000B CF=0

SAL (Desplazamiento aritmtico a la izquierda)


Para llevar a cabo este tipo de desplazamiento, hay que desplazar los bits del
operando hacia la izquierda introduciendo ceros por su derecha. En realidad,
este tipo de desplazamiento es idntico al llevado a cabo por la instruccin
SHL; por tanto, SAL y SHL son la misma instruccin.

SAR (Desplazamiento aritmtico a la


derecha)
El desplazamiento a la derecha realizado por la instruccin SAR recibe el
nombre de aritmtico porque sirve para dividir un operando entre una potencia
entera de 2. El desplazamiento aritmtico a la derecha de un operando
(considerado con signo) n posiciones equivale a la divisin entera del operando
entre 2^n.

Ejemplo de desplazamiento aritmtico a la


Derecha
SAR duplica el bit del signo. AL es negativo antes y despus de que se
desplaza a la derecha.
1

0
CF

MOV AL, 0F0H


SAR AL,1

; AL=11110000B (-16)
; AL=11111000B (-8), CF(0)

ROTACIN
ROL ;Rotacin a la izquierda
ROR ;Rotacin a la derecha
RCL ;Rotacin con acarreo a la izquierda
RCR ;Rotacin con acarreo a la derecha

ROL (Rotacin a la izquierda)


Desplaza cada bit a la izquierda. El bit superior se copia a la CF y a la posicin
del bit inferior. El formato de la instruccin es el mismo que para SHL

Ejemplo de rotacin a la izquierda.


En la rotacin no se permiten bits. Un bit que se rota hacia un extremo de un
numero aparece en el otro extremo.
En el siguiente ejemplo, el bit superior se copia tanto a la CF como la posicin
del bit inferior.

MOV AL, 40H


ROL AL, 1
ROL AL, 1
ROL AL, 1

;AL=01000000B
;AL=10000000B, CF=0
;AL=00000001B, CF=1
;AL=00000010B, CF=0

ROR (Rotacin a la derecha)

Desplaza cada bit a la derecha y copia el bit inferior en la CF y en la posicin


del bit superior. El formato de la instruccin es el mismo que para SHL

Ejemplo de rotacin a la derecha


En el siguiente ejemplo se copia el bit inferior tanto en la CF como en la
posicin del bit superior del resultado.

MOV AL, 01H


ROR AL,1
ROR AL,1

;AL=00000001B
;AL=10000000B, CF=1
;AL=01000000B, CF=0

RLC (Rotacin a la izquierda con acarreo)


Desplaza cada bit a la izquierda, copia la CF al bit menos significativo y copia
el bit mas significativo a la CF. Si imaginramos la CF como un bit adicional
que se le agrega al extremo superior del operando, RCL se ve como una
operacin de rotacin a la izquierda.

Ejemplo rotacin a la izquierda con acarreo


La instruccin CLC borra la CF, la instruccin RCL se mueve el bit superior de
BL hacia la CF y desplaza los otros bits a la izquierda. La segunda instruccin
RCL mueve la CF hacia la posicin del bit inferior y desplaza los otros bits a la
izquierda.

CLC
MOV BL, 88H
RCL BL,1
RCL BL,1

;CF=0
;CF,BL=0 10001000B
;CF,BL=1 00010000B
;CF,BL=0 00100001B

RCR (Rotacin a la derecha con acarreo)


Desplaza cada bit a la derecha, copia la CF al bit mas significativo, y copia el
bit menos significativo a la CF.

Ejemplo de Rotacin a la derecha con acarreo


Como se menciono en el caso de RLC, es til visualizar el entero en esta figura
como un valor 9 bits, con la CF a la derecha del bit menos significativo.
En el siguiente ejemplo, STC activa la CF antes de rotarla hacia el MSB y
antes de rotar el LSB hacia la CF.

STC
MOV AH,10H
RCR AH,1

;CF=1
;AH,CF=00010000 1
;AH,CF=10001000 0

You might also like