jueves, 31 de octubre de 2013

Instrucciones de Desplazamiento, Rotación y Adeudos.

SHL, SAL desplazar a la izquierda(desplazamient o aritmético)


DESPLAZAMIENTO O Corrimiento de bits a la izquierda.

Los corrimientos hacia la izquierda (SHL y SAL) mueven los bits a la izquierda, en el registro designado. SHL y SAL son idénticos en su operación. El bit desplazado fuera del registro ingresa a la bandera de acarreo. Las instrucciones de corrimiento hacia la izquierda estipulan datos lógicos (sin signo) y aritméticos (con signo):

 
 SHL: Desplazamiento lógico a la izquierda    SAL: Desplazamiento aritmético a la izquierda

Las siguientes instrucciones relacionadas ilustran SHL para datos sin signo:
 

   INSTRUCCION                        COMENTARIO

    MOV    CL, 03

    MOV    AL, 10110111B          ; AL = 10110111

    SHL   AL, 01                           ; AL = 01101110    Un corrimiento a la izquierda

    SHL    AL, CL                         ; AL = 01110000   Tres corrimientos mas

 
El primer SHL desplaza el contenido de AL un bit hacia la izquierda. El bit de más a la izquierda ahora se encuentra en la bandera de acarreo, y el último bit de la derecha del AL se llena con cero. El segundo SHL desplaza tres bits más a AL. La bandera de acarreo contiene en forma sucesiva 0, 1 y 1, y se llena con tres ceros a la derecha del AL.

Los corrimientos a la izquierda llenan con cero el bit de mas a la derecha. Como resultado de esto, SHL y SAL don idénticos. Los corrimientos a la izquierda en especial son útiles para duplicar valores y son mucho más rápidos que usar una operación de multiplicación.

Al terminar una operación de corrimiento, puede utilizar la instrucción JC (Salta si hay acarreo) para examinar el bit que ingreso a la bandera de acarreo.



· SHR desplazar a la derecha


SHR (Shift Right = desplazamiento a la derecha)

(s) shr {R|M}, {cl|I8}

(explicación)

La instrucción shr funciona de la misma forma que shl, pero desplazando los bits a la derecha en lugar de a la izquierda, tal y como se muestra en la figura siguiente.

· SAR desplazamientoaritmético a la derecha



SAR (Shift Arithmetic Right = desplazamiento aritmético a la derecha)

(s) sar {R|M}, {cl|I8}

(explicación)

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. esquemáticamente, la instrucción sar trabaja de la siguiente forma:

El desplazamiento a la derecha realizado por la instrucción sar recibe el nombre de aritmético porque sirve para dividir un operando entre una potencia entera de 2.

El desplazamiento aritmético a la derecha de un operando (considerado con signo) n posiciones equivale a la división entera del operando entre 2n.

(ejemplo)

Supongamos que se desea desplazar aritméticamente el contenido del registro AL dos posiciones a la izquierda, y que el contenido de este registro antes de realizar el desplazamiento es B0h, que interpretado en complemento a 2 equivale al entero -80.


· ROL rotación a 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:



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.




· ROR rotación a la derecha


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                      COMENTARIO

MOV    CL, 03

MOV    BH, 10110111B          ; BH = 10110111

ROR    BH, 01                          ; BH = 11011011    Una rotación a la derecha

ROR    BH, CL                         ; BH = 00001011    Tres rotaciones a la derecha

 

El primer ROR desplaza el bit de más a la derecha del BH a la posición vacante de más 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.


· RCL rotación con acarreo a 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                     COMENTARIO

MOV    CL, 03

MOV    BL, 10110111B          ; BL = 10110111

SHR    BL, 01                          ; BL = 11011011    Una rotación a la izquierda

SHR    BL, CL                         ; BL = 00001011    Tres rotaciones a la izquierda

 

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.


· CLC borrar acarreo


Propósito: Limpiar bandera de acarreo.

Sintaxis:

CLC

Esta instrucción apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero.


·STC poner acarreo a 1
 
 
 
 
 
 
 

 


 

 



No hay comentarios:

Publicar un comentario