Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Instruções lógicas/bit-a-bit
  2. Instrução AND
  3. Instrução OR
  4. Instrução XOR
  5. Instrução NOT

Com as instruções lógicas, podemos realizar as operações bit-a-bit/bitwise, E, OU e OU Exclusivo e Não entre dois operandos. As flags Cy, Z, S, O e P são afetadas por essas instruções.

Notação utilizada:
REG Registrador de uso geral
SREG Registrador de segmento
MEM Endereço de memória
IME Valor imediato
; Comentário
O, Z, N, S, P, Cy Flags
<- Atribuição
& E bit-a-bit
| OU bit-a-bit
^ Ou exclusivo bit-a-bit
~ Não bit-a-bit
Flags
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

Mais informações sobre registradores e flags podem ser vistas em Registradores e Flags.

Com a instrução AND aplicamos a operação E bit-a-bit entre dois operandos como registradores, valor em memória e valor imediato. Essa instrução pode ser utilizada pra resetar bits específicos.

Tabela verdade:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Operação:
Operando1 <- Operando1 & Operando2
Operandos:
REG, MEM
MEM, REG
REG, REG
MEM, IME
REG, IME
F(Flags)
O: 0
S: a
Z: a 
Ac:- 
P: a
Cy:0
Ex:
MOV AL,0Fh
AND AL,03h
;AL = 3

Com a instrução OR aplicamos a operação OU bit-a-bit entre dois operandos como registradores, valor em memória e valor imediato. Essa instrução pode ser utilizada para setar bits específicos.

Tabela verdade:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Operação:
Operando1 <- Operando1 | Operando2
Operandos:
REG, MEM
MEM, REG
REG, REG
MEM, IME
REG, IME
F(Flags)
O: 0
S: a
Z: a 
Ac:?
P: a
Cy:0
Ex:
MOV AL,0Fh
OR AL,F0h
;AL = FF

Com a instrução XOR aplicamos a operação OU Exclusivo bit-a-bit entre dois operandos como registradores, valor em memória e valor imediato. Essa instrução pode ser utilizada pra limpar registradores.

Tabela verdade:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Operação:
Operando1 <- Operando1 ^ Operando2
Operandos:
REG, MEM
MEM, REG
REG, REG
MEM, IME
REG, IME
F(Flags)
O: 0
S: a
Z: a 
Ac:?
P: a
Cy:0
Ex:
MOV AL,Fh
XOR AL,F0h
;AL = 00

Com a instrução NOT podemos aplicamos a operação Não bit-a-bit com o conteúdo de um registrador ou valor em memória, invertendo todos os seus bits. NOT também é conhecida como complemento de 1.

Tabela verdade:
0 -> 1
1 -> 0
Operação
A <- ~A
Endereçamento:
REG
MEM
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:-
Ex:
MOV AH, F0h    ;11110000b
NOT AH      
;AH = 00001111b

Com a instrução TEST aplicamos a operação E bit-a-bit entre dois operandos como registradores, valor em memória ou valor imediato. O resultado da operação é utilizado para setar as flags de status e descartado posteriormente.

Tabela verdade:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Operação:
Operando1 & Operando2
O, S, Z, P, Cy alteradas
Operandos:
REG, MEM
MEM, REG
REG, REG
MEM, IME
REG, IME
F(Flags)
O: 0
S: a
Z: a 
Ac:- 
P: a
Cy:0
Ex:
MOV AL,0Fh
TEST AL,01   ; Z <- 0
  1. 18/02/2025 - revisão 1 - ajustes pontuais
  2. 04/12/2024 - versão inicial