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

  1. Instruções lógicas
  2. AND
  3. ORA
  4. EOR
  5. BIT

Com as instruções bit-a-bit/bitwise ou lógicas, podemos realizar as operações E, OU Não e OU exclusivo bit-a-bit, entre o acumulador e um valor de memória ou imediato. Apenas as flags N e Z são afetadas por estas instruções, com exceção da instrução BIT que afeta a flag V.

Notação utilizada:
#$NN Valor hexadecimal imediato
#$NNNN; Endereço hexadecimal imediato
$NNNN Endereço hexadecimal
$NN ou h Valor hexadecimal
; Comentário
N,Z,V Flags
Acc. Acumulador
| Concatenação
<- Atribuição
& E bit-a-bit
| OU bit-a-bit
^ Ou exclusivo 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.

Com a instrução AND aplicamos a operação E bit-a-bit entre o registrador Acumulador e um valor contido em um endereço de memória ou imediato. As flags N e C são atualizadas de acordo com o resultado.

Operação
A <- A & (M)
ou 
A <- A & #valor
F(Flags)
N: A[Bit7]
V: -
B: - 
D: -
Z: A == 0 ? 1 : 0
C:-
Endereçamento:
Imediato AND #$NN
Página Zero AND $NN
Página Zero,X AND $NN,X
Absoluto AND $NNNN
Absoluto,X AND $NNNN,X
Absoluto,Y AND $NNNN,Y
Indireto X AND ($NN,X)
Indireto Y AND ($NN),Y
Tab. 1: Registrador A - 0xCC
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 0 0 1 1 0 0
Tab.2: Valor - 0xAA
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 1 0 1 0
Tab. 3: Resultado - 0x88
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 0 0 1 0 0 0
Ex:
LDA #$F0
AND #$0F

Com a instrução ORA aplicamos a operação OU bit-a-bit entre o registrador Acumulador e um valor contido em um endereço de memória ou imediato. As flags N e C são atualizadas de acordo com o resultado.

Operação
A <- A | (M)
ou
A <- A | #valor
F(Flags)
N: A[Bit7]
V: -
B: - 
D: -
Z: A == 0 ? 1 : 0
C:-
Endereçamento:
Imediato ORA #$NN
Página Zero ORA $NN
Página Zero,X ORA $NN,X
Absoluto ORA $NNNN
Absoluto,X ORA $NNNN,X
Absoluto,Y ORA $NNNN,Y
Indireto X ORA ($NN,X)
Indireto Y ORA ($NN),Y
Tab. 4: Registrador A - 0xCC
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 0 0 1 1 0 0
Tab.5: Valor - 0xAA
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 1 0 1 0
Tab. 6: Resultado - 0xEE
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 1 0 1 1 1 0
Ex:
LDA #$F0
ORA $0F

Com a instrução EOR aplicamos a operação Ou Exclusivo bit-a-bit entre o registrador Acumulador e um valor contido em um endereço de memória ou imediato. As flags N e C são atualizadas de acordo com o resultado.

Operação
A <- A ^ (M)
A <- A ^ #valor
F(Flags)
N: A[Bit7]
V: -
B: - 
D: -
Z: A == 0 ? 1 : 0
C:-
Endereçamento:
Imediato EOR #$NN
Página Zero EOR $NN
Página Zero,X EOR $NN,X
Absoluto EOR $NNNN
Absoluto,X EOR $NNNN,X
Absoluto,Y EOR $NNNN,Y
Indireto X EOR ($NN,X)
Indireto Y EOR ($NN),Y
Tab. 7: Registrador A - 0xCC
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 0 0 1 1 0 0
Tab.8: Valor - 0xAA
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 1 0 1 0
Tab. 9: Resultado - 0x66
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 1 1 0 0 1 1 0
Ex:
LDA #$00
EOR #$FF ; Inverte os bit de A

Com a instrução BIT podemos testar os bits de um valor em memória. Uma operação AND é realizar com o Acumulador e o resultado é usado apenas para atualizar a flag Z, N e V e descartado.

A flag Z é atribuída de acordo com o resultado do AND. Os bits 7 e 6 do valor contido na memória são transferidos para as flags N e V respectivamente.

Operação
A & (M)
F(Flags)
N: M[bit 7] antes do teste
V: M[bit 6] antes do teste
B: - 
D: -
Z: A & (M) == 0 ? 1 : 0 após teste
C:-
Endereçamento
Página Zero BIT $NN
Absoluto BIT $NNNN
Ex:
;RAM[0000] = 0xFF
LDA #$80
BIT $00
BIT $0200
  1. 11/05/2026 - revisão 4 - Ajustes: objetivos, intro(flag V), sintaxe e descrição(valor imediato); Adição: como setar flags
  2. 12/03/2025 - revisão 3 - correção de nome de instrução EOR de tópico OR; Ajustes pontuais
  3. 11/09/2024 - revisão 2 - adição de tabelas com exemplos e flags afetadas
  4. 30/08/2024 - revisão 1 - Correção em links de objetivos
  5. 28/04/2023 - versão inicial