Objetivos
Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.
- Instruções aritméticas
- ADC
- SBC
Aritmética decimal/Binária e flag D
Exemplos ilustrativos
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.
A flag D deve ser previamente configurada de acordo com o tipo do adição é desejada:
binária(0) ou bcd(1).
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. Essa flag que deve ser previamente setada
ou resetada de acordo com a necessidade.
Operação
A <- A + (M) + Carry
ou
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[bit 7]
V: mundaça de sinal ? 1 : 0
B: -
D: -
D: -
Z: A == 0 ? 1 : 0
C: houve carry ? 1 : 0
Ex:
CLD ; modo binário
SEC ; Carry <- 1
LDA #$01
ADC #$01
SBC - Subtract With Borrow / Subtrair Com "Vem-um"/Empréstimo
Essa instrução subtrai um valor de memória ou imediato ao registrador Acumulador utilizando
e a flag Carry como terceiro operando que funciona como "Vem-um"/Borrow(Empréstimo). Essa flag
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,
a Carry recebe 0, Quando não há empréstimo, Carry recebe 1.
Operação
A <- A - (M) - (1 - Carry)
ou
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[bit 7]
V: mundaça de sinal ? 1 : 0
B: -
D: -
D: -
Z: A == 0 ? 1 : 0
C: houve empréstimo ? 0 : 1
Ex:
CLC ; Carry <- 0, Vem-um
LDA #$02
SBC #$01 ; 2 - 1 - 1 = 0
Histórico de atualizações
- 11/05/2026 - revisão 4 - Ajustes: objetivos, intro, sintaxes e descrições; Adição: como setar flags
- 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.