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

  1. Aritmética 8-bits
  2. ADD
  3. ADC
  4. SUB
  5. SBC
  6. INC
  7. DEC

As instruções aritméticas são responsáveis por realizar as operações de adição, subtração, incremento e decremento.

As instruções mencionadas podem ser feitas sobre dados 8-bits em registradores ou valores em memória sendo usados como operandos para as operações.

As flags de status contidas no registrador F são atualizadas de acordo com cada instrução deste grupo.

Notação utilizada:
  1. A - registrador Accumulador
  2. r - registrador de uso geral
  3. n - valor 8-bits
  4. d - valor 8-bits sinalizado
  5. () - conteúdo em memória

A instrução ADD adiciona o valor contido em um registrador de uso geral, valor imediato ou em memória ao conteúdo do registrador A. Apenas esse registrador pode ser utilizado como destino para armazenar o resultado.

Operação:
A <- A + valor
Sintaxe
ADD
Operandos/ME:
A, r
A, n
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário, 0.
Z: 1 se igual 0; Caso contrário, 0.
H: 1 se “vai-um”; Caso contrário, 0.
P/V: 1 se overflow; Caso contrário, 0.
N: 0
C: 1 se “vai-um”; Caso contrário 0.
Exemplo:
SCF
LD A, #$FF
ADD A,#$01

A instrução ADC é semelhante à instrução ADD, exceto pelo uso da flag Carry como terceiro operando. Um valor contido em um registrador de uso geral, valor imediato ou em memória e a Carry são adicionados ao conteúdo do registrador A que armazena o resultado da operação.

Operação:
A <- A + valor + Carry
Sintaxe
ADC
Operandos/ME:
A, r
A, n
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário 0.
Z: 1 se igual 0; Caso contrário 0.
H: 1 se “vai-um”; Caso contrário 0.
P/V: 1 se overflow; Caso contrário 0.
N: 0
C: 1 se “vai-um”; Caso contrário 0.
Exemplo:
SCF
LD    A, #$FE
ADC A,#$01

A instrução SUB subtrai o valor contido em um registrador de uso geral, valor imediato ou em memória, do conteúdo do registrador A. Apenas esse registrador pode ser utilizado como destino para armazenar ou acumular o resultado.

Operação:
A <- A - valor
Sintaxe
SUB
Operandos/ME:
A, r
A, n
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário 0.
Z: 1 se igual 0; Caso contrário 0.
H: 1 se “vem-um”; Caso contrário 0.
P/V: 1 se overflow; Caso contrário 0.
N: 0
C: 1 se “vem-um”; Caso contrário 0.
Exemplo:
SCF
LD A, #$FF
SUB A,#$01

A instrução SBC é semelhante à instrução SUB, exceto pelo uso da flag Carry terceiro operando. Um valor contido em um registrador de uso geral, valor imediato ou em memória e a Carry são subtraídos do conteúdo do registrador A que armazena o resultado da operação.

Operação:
A <- A - valor - Carry
Sintaxe
SBC
Operandos/ME:
A, r
A, n
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário, 0.
Z: 1 se igual 0; Caso contrário, 0.
H: 1 se “vem-um”; Caso contrário, 0.
P/V: 1 se overflow; Caso contrário, 0.
N: 1
C: 1 se “vem-um”; Caso contrário, 0.
Exemplo:
SCF		;Carry 1
LD A, #$FF
SBC A,#$01
;A = 00, Carry =1

A instrução INC incrementa em uma unidade o valor contido em um dos registradores de uso geral ou valor em memória.

Operação:
r <- r + 1
ou
(valor) <- (valor) + 1
Sintaxe
INC
Operandos/ME:
r
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário, 0
Z: 1 se igual 0; Caso contrário, 0
H: 1 se “vem-um”; Caso contrário, 0
P/V: 1 se 7F antes da operação; Caso contrário, 0
N: 0
C: -
Exemplo:
LD A, #$00
INC A
;A = 1

A instrução DEC realiza a operação oposta ao INC. DEC decrementa em uma unidade o valor contido em um dos registradores de uso geral ou valor em memória.

Operação:
r <- r - 1
ou
(valor) <- (valor) - 1
Sintaxe
DEC
Operandos/ME:
r
(HL)
(IX+d)
(IY+d)
F(Flags)
S: 1 se negativo; Caso contrário, 0
Z: 1 se igual 0; Caso contrário, 0
H: 1 se "vem-um"; Caso contrário, 0
P/V: 1 se 80 antes da operação; Caso contrário, 0
N: 1
C: -
Exemplo:
LD A, #$FF
DEC A
; A = FE
  1. 14/08/2026 - revisão 1 - Ajustes: intro, operandos INC/DEC e outros pontuais
  2. 03/08/2026 - versão inicial: ADD, ADC, SUB, SBC, INC e DEC