Está en la página 1de 13

INSTRUCCIONES LOGICAS Y

DESPLAZAMIENTO
Instrucciones Lgicas
Mnemnicos Formato Operacin Banderas afectadas
AND AND D, S (D) (S) (D) OF, SF, ZF, PF, CF, AF
indefinido
0R OR D, S (D) (S) D) OF, SF, ZF, PF, CF, AF
indefinido

XOR XOR D, S (D) (S) (D)

OF, SF, ZF, PF, CF, AF
indefinido

NOT NOT D (D) Ninguna
D
_
Ejemplo
Ejecute la siguiente secuencia de instrucciones.

MOV AL, 01010101B
AND AL, 00011111B
OR AL, 11000000B
XOR AL, 00001111B
NOT AL
Aplicaciones de AND
Despejar un bit
> AND AH, 01111111B
Esto fija bit 7 a 0 (de AH) y deja todos los otros
bits intactos
Despejar bits no deseados
> AND AX, 000FH
Despeja 12 bits de AX, excepto los 4 bits
menos significativos

Aplicaciones de OR
Encendido de un bit
> OR BX, 0400H
Esto enciende bit #10 de BX, deja todos los
dems intactos
Verificando el valor de ciertas banderas de
estado
> OR AX,AX
Esto fija banderas, no cambia AX
Bit #15=bit de signo (JS, JNS, JG)
(ZF=1 si AX=0 (JZ, JNZ)

Convirtiendo Datos
DL contiene cdigo BCD 0 - 9
OR DL,00110000B
DL ahora contiene ASCII 0 9
AH contiene letras ( A Z ).
OR AH,00100000B
ahora AH contiene letra minscula.
a=61H A=41H
ASCII para dgito x (0 9) es 3x.
>Observe que al encender bits 4 y 5 convertir un
cdigo BCD almacenado en un byte en ASCII
Observe que letras minsculas altas (a......o )difieren
solamente en bit 5 (1=letra minscula)

Aplicacin de XOR
Conmutar un bit
> XOR AH,10000000B
> Esto cambia bit 7(solamente) de AH
Encerando un byte o word
> XOR AX, AX
> Esto carga AX con 0

Instruccin TEST
TEST D, S
Ejecuta operacin AND, no almacena resultado
Acondiciona banderas tal como la hace AND
Ejemplo: TEST CL,10000001B
JZ par_positivo
JS negativo

Instrucciones de Desplazamiento
Mnemnico Formato Operacin Banderas
afectadas
SAL/SHL SAL/SHL D, Cont Desplaza D a la izquierda Cont veces,
llena con ceros las posiciones
vacantes a la derecha. El bit MSB
termina en CF
SF, ZF, PF, CF, AF
no definido
OF no definido si
Cont1
SHR SHR D, Cont Desplaza D a la derecha Cont veces,
llena con ceros las posiciones
vacantes a la izquierda. El bit LSB
termina en CF
SF, ZF, PF, CF, AF
no definido
OF no definido si
Cont1

SAR SAR D, Cont Desplaza D a la derecha Cont veces,
llena las posiciones vacantes a la
izquierda con MSB original . El ltimo
LSB termina en CF

SF, ZF, PF, CF, AF
no definido
OF no definido si
Cont1

Ejemplo
Usando DEBUG evalue los resultados de:
MOV AX, -9
MOV BL, 2
IDIV BL; divide -9 para 2, resultado=FCH
Resultado en AX
MOV AX, -9
SAR AX,1;divide -9 para 2, result=FBH ??
IDIV redondea para arriba
SAR redondea para abajo

Ejemplos
MOV AX, 1234H
SHL AX, 1
MOV CL, 2
SHR AX, CL
SAR AX, CL

MOV AX, 091AH
MOV CL, 2
SAR AX, CL
Instrucciones de Rotacin
Mnemnico Formato Operacin Banderas Afectadas
ROL ROL D,Cont Rotar D a la izquierda Cont
veces. Cada MSB de D rota a
LSB. MSB afecta a CF.
CF
OF no definido si
Cont1
ROR ROR D, Cont Rotar D a la derecha Cont
veces. Cada LSB de D rota a
MSB. LSB afecta a CF.

CF
OF no definido si
Cont1

RCL RCL D, Cont Lo mismo que ROL ecepto
que ahora se adhiere CF a D
CF
OF no definido si
Cont1

RCR RCR D, Cont Lo mismo que ROR ecepto
que ahora se adhiere CF a D
CF
OF no definido si
Cont1

Instrucciones de Desplazamiento :
Operandos Permitidos
Destino Contador
Registro 1
Registro CL
Registro Inm8
Memoria 1
Memoria CL
Memoria Inm8
Ejemplo
title Programa para mover datos en memoria

datasg segment para data
;Definicin de constantes usadas en el programa
n=16
tabla1=100h
tabla2=120h
datasg ends
codesg segment para code
principal proc far
assume cs:codesg, ds: datasg
;aqu instrucciones de inicializacin
;Inicializar puntero fuente y puntero destino
mov si, tabla1
mov di, tabla2
mov cx, n ; Inicializar contador
proxnum: mov ah, [si]
mov [di], ah
inc si
inc di
dec cx
jnz proxnum
aqu: jmp aqu
ret
principal endp
codesg ends
end principal

También podría gustarte