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.