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

  1. Instruções bit-a-bit
  2. Instrução ANA/ANI
  3. Instrução ORA/ORI
  4. Instrução XRA/XRI
  5. Instrução NOT

Com as instruções bit-a-bit, podemos realizar as operações bit-a-bit/bitwise, AND, OR e XOR e Not(Complemento), entre o acumulador e um valor de memória, ou imediato. As flags Z, N, S, P, AC, C são afetadas por essas instruções.

Notação utilizada:
#$NN Valor hexadecimal imediato
M Endereço 16-bits contido em HL
R Registrador de 8-bits
#$NN ou h Valor hexadecimal imediato
; Comentário
Z, N, S, P, AC, Cy Flags
Acc. ou A Acumulador
| Concatenação
<- 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 os registradores e flags podem ser vistas em Registradores e Flags.

Com as instruções ANA e ANI aplicamos a operação E bit-a-bit entre o registrador Acumulador e um registrador, valor imediato ou valor em memória apontando por H(HL).

Não é possível utilizar os pares de registadores BC e DE com essas instruções.

Tabela verdade:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Operação
A <- A & R
A <- A & M(HL)
A <- A & #$NN
Endereçamento:
Registrador ANA R
Imediato ANI $NN
Indireto ANA M
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:-
Ex:
MVI A, #$02
MVI B,#$0F
ANA B ; A = 2

Com as instruções ORA/ORI aplicamos a operação OU bit-a-bit entre o registrador Acumulador e um registrador, valor imediato ou valor em memória apontando por H(HL).

Tabela verdade:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Operação
A <- A | R
A <- A | M(HL)
A <- A | #$NN
Endereçamento:
Registrador ORA R
Imediato ORI $NN
Indireto ORA M
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:-
Ex:
MVI A, #$A0
MVI B,#$0B
ORA B ; A = AB

Com as instruções XRA/XRI aplicamos a operação OU Exclusivo bit-a-bit entre o registrador Acumulador e um registrador, valor imediato ou valor em memória apontando por H(HL).

Tabela verdade:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Operação
A <- A ^ R
A <- A ^ M(HL)
A <- A ^ #$NN
Endereçamento:
Registrador XRA R
Imediato XRI $NN
Indireto XRA M
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:-
Ex:
MVI A, #$A0
MVI B,#$0B
XRA B ; A = AB

As instruções XOR pode ser utilizada para "zerar" ou "limpar" o conteúdo do registrador A. Para isso, basta utilizá-lo como operando.

Ex:
MVI A, #$A0
XRA A ; A = 0

Com a instrução NOT, podemos aplicamos a operação Não bit-a-bit com o conteúdo do Acumulador. Outros registradores além do registrador A, valor imediato e em memória não são suportados.

Operação
A <- ~A
1 -> 0
0 -> 1
Endereçamento:
Implícito NOT
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:-
Ex:
MVI A, #$F0
NOT ; A = 0F
  1. 12/12/2024 - revisão 5 - Adição de tabelas verdade
  2. 04/12/2024 - revisão 4 - Correção em nome instrução Not em link, título e descrição
  3. 09/09/2024 - revisão 3 - Correção em erros gramaticais, , adição de flags afetadas
  4. 30/08/2024 - revisão 2 - Correção em links de objetivos
  5. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
  6. 08/08/2023 - versão inicial