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

  1. Instruções aritméticas
  2. ADD
  3. ADI
  4. ADC
  5. ACI
  6. SUB
  7. SUI
  8. SBB
  9. SBI
  10. DAD

As instruções aritméticas são utilizadas para realizar as operações de adição ou subtração de registradores ou valor em memória via Acumulador. As flags Z, S, P, CY, Cy são afetadas por essas instruções.

Notação utilizada
#$NN Valor hexadecimal imediato
; Comentário
! Complemento
P Registradores BC(B) , DE(D) , HL(H) e SP
R Registradores A, B, C, D, E , H e L
M Endereço 16-bits contido em HL
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.

A instrução ADD realiza a operação aritmética de adição entre registradores ou valor um endereço de memória com o acumulador.

Operação
A <- A + R
ou
A <- A + M
Endereçamento
Registrador ADD R1, R2
Indireto ADD M
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Carry bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Carry bit 7
Ex:
MVI A $#01
MVI B, #$01
ADD A,B ;A = 2

A ADI é semelhante à ADD, porém utiliza um valor imediato como operando que é adicionado ao acumulador.

Operação
A <- A + #$NN
Endereçamento
Imediato ADI $$NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Carry bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Carry bit 7
Ex:
MVI A #$01
MVI B, #$01
ADI #$01

A instrução ADC é semelhante à ADD, porém a ADC utiliza o flag Carry(Cy)também como terceiro operando ao realiza a operação.

Operação
A <- A + R + Cy
A <- A + M + Cy; 
A <- A + #$NN + Cy
Endereçamento
Registrador ADC R1, R2
Indireto ADC M
Imediato ACI $$NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Carry bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Carry bit 7
Ex:
SEC ; Carry <- 1
MVI A $#01
MVI B, #$01
ADD A,B ;A = 3

A instrução ACI é semelhante a ADC, porém a ADI, porém utiliza a ACI um valor imediato como segundo operando da operação.

Operação
A <- A + #$NN + Cy
Endereçamento
Imediato ACI $$NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Carry bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Carry bit 7
Ex:
SEC ; Carry <- 1
MVI A $#01
MVI B, #$01
ADI #$01

A instrução SUB realiza a operação aritmética de subtração entre registradores ou valor em memória e o registrador acumulador.

Operação
A <- A - R
A <- A - M ; M(HL)
Endereçamento
Registrador SUB R1,R2
Indireto SUB M
Imediato SBI $$NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac:Borrow bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Borrow bit 7
Ex:
MVI A $#01
MVI B, #$01
SUB A,B ; A = 0

A instrução SUI é semelhante à instrução SUB, porém utiliza um valor imediato como segundo operando da operação.

Operação
A <- A - #$NN ; M(HL)
Endereçamento
Imediato SUI #$NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Borrow bit 4 
P: #num bits 1 de A == par ? 1 : 0
Cy:Borrow bit 7
Ex:
MVI A $#01
MVI B, #$01
SUI #$01

A instrução SBB é semelhante a SUB, porém a SBB utiliza o flag Carry como terceiro operando da subtração.

Operação
A <- A - R - Cy
A <- A - (M) - Cy
Endereçamento
Registrador SBB R2, R1
Indireto SBB M
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Borrow bit 4 
P: #num bits 1 == par ? 1 : 0
Cy:Borrow bit 7
Ex:
SEC ; Carry <- 1
MVI A $#01
MVI B, #$01
SBB A,B

A instrução SBI é semelhante a SBB, porém a SBI utiliza o um valor imediato como segundo operando da subtração.

Operação
A <- A - #$NN - Cy
Endereçamento
Imediato SBI $#NN
F(Flags)
S: A[bit 7]
Z: A == 0 ? 1 : 0 
Ac: Borrow bit 4 
P: #num bits 1 == par ? 1 : 0
Cy:Borrow bit 7
Ex:
SEC ; Carry <- 1
MVI A $#01
MVI B, #$01
SBI #$01

A instrução DAD realiza a operação aritmética de adição do registrador HL com os pares de registradores H, B, D ou registrador SP. Apenas a flag Carry(Cy) é alterada por essa instrução.

Operação
HL <- HL + P
Endereçamento
Registrador DAD P
F(Flags)
S: -
Z: -
Ac:-
P: -
Cy:Carry bit 15
Ex:
LXI B, $#0001
LXI H, #$0001
DAD B ; HL = 0002
  1. 12/05/2026 - revisão 6 - Ajustes: objetivos, intro e descrições; Adição: Separação ADI, ACI, SUI e SBI
  2. 13/12/2024 - revisão 5 - Correção em 'operação' SUB e SBB
  3. 05/12/2024 - revisão 4 - Correção em intro; ajustes pontuais
  4. 09/09/2024 - revisão 3 - Correção em erros gramaticais, adição de flags afetadas
  5. 30/08/2024 - revisão 2 - Correção em links de objetivos
  6. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
  7. 08/08/2023 - versão inicial