Rotación de bits – desplazamiento circular
Las instrucciones de rotación, que son parte de la capacidad lógica de la computadora, pueden realizar las siguientes acciones:
- Hacer referencia a un byte o a una palabra.
- Hacer referencia a un registro o a memoria.
- Realizar rotación a la derecha o a la izquierda. El bit que es desplazado fuera llena el espacio vacante en la memoria o registro y también se copia en la bandera de acarreo.
- Realizar rotación hasta 8 bits en un byte, 16 bits en una palabra y 32 bits en una palabra doble.
- Realizar rotación lógica (sin signo) o aritmética (con signo).
El segundo operando contiene un valor de rotación, el cual es una constante (un valor inmediato) o una referencia al registro CL. Para los procesadores 8088/8086, la constante inmediata solo puede ser 1; un valor de rotación mayor que 1 debe estar contenido en el registro CL. Procesadores posteriores permiten constantes inmediatas hasta el 31. El formato general para la rotación es:
| [etiqueta:] | Rotación | {registro/memoria}, {CL/inmediato} | |
Rotación a la derecha de bits
Las rotaciones a la derecha (ROR y RCR) desplazan a la derecha los bits en el registro designado. Las instrucciones de rotación a la derecha estipulan datos lógicos (sin signo) o aritméticos (con signo):
Las siguientes instrucciones relacionadas ilustran ROR:
INSTRUCCION BH COMENTARIO
MOV CL, 03
MOV BH, 10110111B ; 10110111
SHR BH, 01 ; 11011011 Una rotación a la derecha
SHR BH, CL ; 00001011 Tres rotaciones a la derecha
SHR BX, 03 ; Válido para 80186 y procesadores posteriores
El primer ROR desplaza el bit de mas a la derecha del BH a la posición vacante de mas a la izquierda. La segunda y tercera operaciones ROR realizan la rotación de los tres bits de mas a la derecha.
RCR provoca que la bandera de acarreo participe en la rotación. Cada bit que se desplaza fuera de la derecha se mueve al CF y el bit del CF se mueve a la posición vacante de la izquierda.
Rotación a la izquierda de bits
Las rotaciones a la izquierda (ROL y RCL) desplazan a la izquierda los bits del registro designado. Las instrucciones de rotación a la izquierda estipulan datos lógicos (sin signo) y aritméticos (con signo):
Las siguientes instrucciones relacionadas ilustran ROL:
INSTRUCCION BL COMENTARIO
MOV CL, 03
MOV BL, 10110111B ; 10110111
SHR BL, 01 ; 11011011 Una rotación a la izquierda
SHR BL, CL ; 00001011 Tres rotaciones a la izquierda
SHR BX, 03 ; Válido para 80186 y procesadores posteriores
El primer ROL desplaza el bit de mas a la izquierda del BL a la posición vacante de mas a la derecha. La segunda y tercera operaciones ROL realizan la rotación de los tres bits de mas a la izquierda.
De manera similar a RCR, RCL también provoca que la bandera de acarreo participe en la rotación. Cada bit que se desplaza fuera por la izquierda se mueve al CF, y el bit del CF se mueve a la posición vacante de la derecha.
Puede usar la instrucción JC (salta si hay acarreo) para comprobar el bit rotado hacia la CF en el extremo de una operación de rotación.