lunes, 4 de noviembre de 2013

Instrucciones de Desplazamiento, Rotación y Adeudos

Investigar como funcionan y publicar un programa ejemplo de uso de cada instrucción ( un programa puede contener varias de este conjunto de instrucciones)



Básicamente permiten multiplicar y dividir por potencias de 2

· SHL, SAL desplazar a la izquierda (desplazamient o aritmético)
· SHR desplazar a la derecha
· SAR desplazamiento aritmético a la derecha
· ROL rotación a la izquierda
· ROR rotación a la derecha
· RCL rotación con acarreo a la izquierda
· RCR rotación con acarreo a la derecha
· CLC borrar acarreo
· STC poner acarreo a 1



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.


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. esquemáticamente.





ROL

Desplaza todos los bits de Rd una posición hacia la izquierda. El flag C se desplaza al bit 0 de Rd. El bit 7 se desplaza dentro del flag C. Esta operación combinada con LSL, multiplica valores multi-byte con o sin signo por dos.Realiza la rotación a la izquierda de los bits del operando, ignorando el bit CF del registro de  estado, aunque en CF se almacena el bit que se rota.

ROR

Desplaza todos los bits de Rd una posición hacia la derecha. El flag C se desplaza al bit 7 de Rd. El bit 0 se desplaza dentro del flag C. Esta operación combinada con ASR, divide valores multi-byte con o sin signo por dos.


RCL

Realiza la rotación a la izquierda de los bits del operando a través del bit CF (acarreo) del registro de estado.



RCR

Realiza la rotación a la derecha de los bits de operando a través del bit CF del registro de estado.




CLC

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


STD

La instrucción STD pone la bandera DF en 1.
Propósito: Activar la bandera de dirección.


Ejemplo con instruccion SHR

MOV CL, 03
MOV AL, 10110111B ; 10110111
SHR AL, 01 ; 11011011 Un corrimiento a la derecha
SHR AL, CL ; 00001011 Tres corrimientos adicionales a la derecha
SHR AX, 03 ; Válido para 80186 y procesadores posteriores








No hay comentarios:

Publicar un comentario