Objetivos
As instruções aritméticas são utilizadas para realizar a adição/subtração de
valores de memória e o registrador Acumulador. As flags N,V,Z e C são afetadas por essas instruções.
Notação utilizada
|
|
#$NN |
Valor hexadecimal imediato |
#$NNNN; |
Endereço hexadecimal imediato |
$NNNN |
Endereço hexadecimal |
$NN ou h |
Valor hexadecimal |
MNEMÔNICO |
Abreviação do nome de uma instrução |
; |
Comentário |
() |
Conteúdo de memória |
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.
ADC - Add With Carry / Adicionar com "Vai-um"
A instrução ADC adiciona um valor de memória, ou imediato, ao registrador Acumulador utilizando a flag Carry, como
terceiro operando, que deve ser previamente setada ou resetada de acordo com a necessidade.
Operação
A <- A + M + Carry
A <- A + #$NN + Carry
Endereçamento
Imediato |
ADC #$NN |
Página Zero |
ADC $NN |
Página Zero,X |
ADC $NN,X |
Absoluto |
ADC $NNNN |
Absoluto,X |
ADC $NNNN,X |
Absoluto,Y |
ADC $NNNN,Y |
Indireto X |
ADC ($NN,X) |
Indireto Y |
ADC ($NN),Y |
PS - Flags afetadas
N: a
V: a
B: -
D: -
D: ?
Z: a
C: a
Ex:
SEC ; Carry <- 1
LDA #$01
ADC #$01
SBC - Subtract With Borrow / Subtrair Com "Vem-um"
Essa instrução adiciona um valor de memória ou imediato ao registrador Acumulador utilizando e a flag Carry,
como terceiro operando, que funciona como "Vem-um" ou Borrow(Empréstimo) e que deve ser previamente setada ou
resetada de acordo com a necessidade.
Na subtração, a flag Carry tem o comportamento inverso ao da adição. Quando há empréstimo, Carry deve receber 0. Quando
não a empréstimo, Carry deve receber 1.
Operação
A <- A - M - (1 - Carry)
A <- A - #$NN - (1 - Carry)
Endereçamento:
Imediato |
SBC #$NN |
Página Zero |
SBC $NN |
Página Zero,X |
SBC $NN,X |
Absoluto |
SBC $NNNN |
Absoluto,X |
SBC $NNNN,X |
Absoluto,Y |
SBC $NNNN,Y |
Indireto X |
SBC ($NN,X) |
Indireto Y |
SBC ($NN),Y |
PS - Flags afetadas
N: a
V: a
B: -
D: -
D: ?
Z: a
C: a
Ex:
CLC ; Carry <- 0, Vem-um
LDA #$02
SBC #$01 ; 2 - 1 - 1 = 0
Histórico de atualizações
- 12/03/2025 - revisão 3 - Correções pontuais; Adição de info. sobre carry na subtração
- 11/09/2024 - revisão 2 - correção em introdução e adiçao de flags afetadas
- 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
- 28/04/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.