Sie sind auf Seite 1von 9

OPERACIONES LÓGICAS

LENGUAJES DE INTERFAZ
Instrucciones booleanas
El conjunto de instrucciones IA-32 contiene las instrucciones AND, OR, XOR, NOT, TEST y BTop,
las cuales implementan de manera directa las operaciones booleanas.
Operación Descripción
AND Operación AND booleana entre un operando de origen y un operando de destino.
OR Operación OR booleana entre un operando de origen y un operando de destino.
XOR Operación OR exclusivo booleana entre un operando de origen y un operando de
Destino.
NOT Operación NOT booleana sobre un operando de destino.
TEST Operación AND booleana implícita entre un operando de origen y uno de destino, que
activa las banderas de la CPU en forma apropiada.
BT, BTC, Copia el bit n del operando de origen a la bandera de Acarreo, y complementa/
BTR, BTS restablece/activa el mismo bit en el operando de destino.
Instrucción AND
La instrucción AND realiza una operación AND booleana (a nivel de bits) entre cada par de bits
coincidentes en dos operandos, y coloca el resultado en el operando de destino:
AND destino, origen X Y X∧Y
Se permiten las siguientes combinaciones de operandos: 0 0 0

◦ AND reg,reg AND reg,mem 0 1 0


1 0 0
◦ AND reg,imm AND mem,reg AND mem,imm
1 1 1
Las siguientes instrucciones llevan a cabo esta operación:
mov al,00111011b

and al,00001111b
Conversión de caracteres a mayúsculas
0 1 1 0 0 0 0 1 = 61h ('a')
0 1 0 0 0 0 0 1 = 41h ('A’)

.data
arreglo BYTE 50 DUP(?)
.code
mov ecx,LENGTHOF arreglo
mov esi,OFFSET arreglo
L1: and byte PTR [esi],11011111b ; borra el bit 5
inc esi
loop L1
Instrucción OR
La instrucción OR realiza una operación OR booleana entre cada par de bits coincidentes en dos
operandos, y coloca el resultado en el operando de destino:
OR destino,origen X Y X∨Y
0 0 0
La instrucción OR utiliza las mismas combinaciones de operandos:
0 1 1
OR reg,reg OR reg,mem
1 0 1
OR reg,imm OR mem,reg OR mem,imm 1 1 1
Las instrucciones en lenguaje máquina para hacer esto son:
mov dl,5 ; valor binario
or dl,30h ; lo convierte a ASCII
Instrucción XOR
La instrucción XOR realiza una operación booleana OR exclusivo entre cada par de bits coincidentes
en dos operandos, y almacena el resultado en el operando de destino:
XOR destino,origen
La instrucción XOR utiliza las mismas combinaciones y tamaños de operandos que las instrucciones
AND y OR.
Una manera de comprobar la paridad de un número sin cambiar su valor es aplicar un OR exclusivo al
número con puros ceros:
X Y X⊕Y
mov al,10110101b ; 5 bits = paridad par
0 0 0
xor al,0 ; La bandera Paridad se borra (PO)
0 1 1
mov al,11001100b ; 4 bits = paridad par
1 0 1
xor al,0 ; La bandera Paridad se activa (PE)
1 1 0
Instrucción NOT
La instrucción NOT cambia el valor de todos los bits en un operando. Al resultado se le llama
complemento a uno. Se permiten los siguientes tipos de operandos:
NOT reg
NOT mem
Por ejemplo, el complemento a uno de F0h es 0Fh:
mov al,11110000b
not al ; AL = 00001111b
Banderas Ninguna bandera se ve afectada por la instrucción NOT.
Instrucción TEST
La instrucción TEST realiza una operación AND implícita entre cada par de bits coincidentes en
dos operandos, y activa las banderas de manera acorde. La única diferencia entre TEST y AND es
que TEST no modifica el operando de destino. La instrucción TEST permite las mismas
combinaciones de operandos que la instrucción AND. En especial, TEST es valiosa para averiguar
si los bits individuales en un operando están activos.

Ejemplo: prueba de varios bits La instrucción TEST puede comprobar varios bits a la vez.
Suponga que deseamos saber si el bit 0 o el bit 3 están activos en el registro AL. Podemos usar la
siguiente instrucción para averiguarlo:
test al,00001001b ; prueba los bits 0 y 3
Actividad: contestar las siguientes
preguntas
1. ¿Cuales son las instrucciones booleanas que maneja IA-32?
2. ¿Cual es la diferencia entre TEST Y AND?
3. Cuales son las combinaciones de operandos con las que trabaja la instrucción AND?
4. Crear una tabla de verdad de cada una de las instrucciones.

Das könnte Ihnen auch gefallen