lunes, 28 de octubre de 2013

Tarea 28 de octubre.



SAL:(Desplazamiento aritmético a la izquierda). 
equivalente a SHL (Desplazamiento lógico a la izquierda).El formato es: SAL operando, contador. SHL y SAL realizan la misma operación y son físicamente la misma instrucción.
Copia en cada bit del operando el contenido previo del bit de su derecha. El bit de menor peso se pone a cero. El contenido previo del bit de mayor peso se copia en el flag de acarreo (CF). Es equivalente a multiplicar el operando por dos, tanto para números sin signo como para número en complemento a 2, siempre el resultado no se salga del rango. Si el número de bits a desplazar es 1, se puede especificar directamente (Por ejemplo: SAL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 2 ; Desplazar 2 bits
SAL al, cl
o SAL al,1

SHR: (Desplazamiento aritmético hacia la derecha).
El formato es: SAR operando, contador. Copia en cada bit del operando el contenido previo del bit de la izquierda. En el bit de mayor peso se almacena un 0. El contenido previo del bit de menor peso se copia en el flag de acarreo (CF). Es equivalente a dividir el operando por dos para números sin signo. Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 2 ; Desplazar 2 bits
SHR al, cl
o SHR al,1

SAR: (Desplazamiento aritmético hacia la derecha con extensión de signo). 
El formato es: SAR operando, contador. Copia en cada bit del operando el contenido previo del bit de su izquierda. El bit de mayor peso mantiene su valor anterior. El contenido previo del bit de menor peso se copia en el flag de acarreo (CF). Es equivalente a dividir el operando por dos para números en complemento a 2. Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 2 ; Desplazar 2 bits
SAR al, cl
o SAR al,1

ROL:(Rotar a la izquierda).
El formato es: ROL operando, contador. Rota a la izquierda los bits del operando de tal forma que el bits del extremo izquierdo del operando destino para al bit extremo derecho de dicho operando y al mismo tiempo para el bit de acarreo (CF). Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: ROL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 2 ; Rotar 2 bits
RCR al, cl
o ROL al,1

ROR: (Rotar a la derecha).
El formato es: ROR operando, contador.
Rota a la derecha los bits del operando de tal forma que el bits del extremo derecho del operando destino para al bit extremo izquierdo de dicho operando y al mismo tiempo para el bit de acarreo (CF). Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: ROR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 2 ; Rotar 2 bits
RCR al, cl
o ROR al,1

RCL:(Rotar a la izquierda con acarreo).
El formato es: RCL operando, contador.
Rota a la izquierda los bits del operando junto con la bandera de acarreo, CF, el número de bits especificado en el segundo operando. Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: RCL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 3 ; Rotar 3 bits
RCL al, cl
o RCL al,1

RCR: (Rotar a la derecha con acarreo).
El formato es: RCR operando, contador. Rota a la derecha los bits del operando junto con la bandera de acarreo, CF, el número de bits especificado en el segundo operando. Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: RCR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Ejemplo:
MOV cl, 3 ; Rotar 3 bits
RCR al, cl
o RCR al,1

CLC:
Clear CF (Borrar ó poner a cero la bandera de acarreo). 
Sintaxis: CLC.

STC:
Set CF (Activar ó poner a uno la bandera de acarreo). 
Sintaxis: STC.


Programa: 
 Este programa muestra el uso de las instrucciones de rotación y desplazamiento. 

.MODEL 
.DATA
dato1 dw 10 ; variable de tipo entero
.CODE
INICIO: ; Punto de entrada al programa
mov ax,1 ; AX=1
mov bx,10 ; BX=10
shl ax,1 ; ax=ax*2
mov cx,3 ; contador igual a 3
shl ax,cl ; ax=ax*8
shr bx,1 ; bx=bx/2
mov cx,2 ;
shr bx,cl ; bx=bx/4
shl dato1,1 ; dato1=dato1*2
mov ax,1 ; ax=1
rol ax,1 ; rotar ax 1 vez
mov bx,-10 ; bx=-10
sal bx,1 ; bx=bx*2
mov ax,4c00h ; Terminar
int 21h ; Salir al dos
END INICIO

END


No hay comentarios.:

Publicar un comentario