Objetivos
        
    
    
    
    
        
            
                O 6502 possui ao todo seis registradores: PS, PC, SP, A, X e Y que estão 
                listados de forma resumida nas tabelas abaixo. A descrição e uso desses registradores serão explicados mais adiante.
            
            
                
                    
                        | Registrador | 
                        Descrição | 
                        Tamanho(bits) | 
                    
                
                
                    
                        | A | 
                        Accumulator/Acumulador | 
                        8 | 
                    
                    
                        | X | 
                        Registrador/Indexador X | 
                        8 | 
                    
                    
                        | Y | 
                        Registrador/Indexador Y | 
                        8 | 
                    
                    
                        | SP | 
                        Stack Pointer | 
                        8 | 
                    
                    
                        | PC | 
                        Program Counter | 
                        16 | 
                    
                    
                        | PS | 
                        Processor Status | 
                        8 | 
                    
                
            
            
                PS - Processor Status
                
                    
                        | Bit 7 | 
                        Bit 6 | 
                        Bit 5 | 
                        Bit 4 | 
                        Bit 3 | 
                        Bit 2 | 
                        Bit 1 | 
                        Bit 0 | 
                    
                
                
                    
                        | N | 
                        V | 
                        - | 
                        B | 
                        D | 
                        I | 
                        Z | 
                        C | 
                    
                
            
            
                Como os registradores residem na memória interna do processador, o acesso para leitura e escrita de dados é muito mais 
                rápido do que utilizar a memória pois não utiliza o barramento de acesso a RAM que consome mais tempo.
            
         
     
    
        A - Accumulator - Acumulador
        
     
    
        
            
                O registrador A é um registrador de 8-bits que é utilizado em operações aritméticas, lógicas, pilha, carregamento e 
                armazenamento de dados. Quase todas as instruções utilizam o acumulador. 
            
         
     
    
        
X e Y - Registradores de indexação
    
    
        
            
                O 6502 possui dois registradores de índice, X e Y, que são usados tanto para acessar valores em memória quanto utilizados para armazenar valores. 
                Ambos têm o tamanho de 8-bits. 
            
         
     
    
        Program Counter - Contador de Programa
        
     
    
        
            
                O PC é um registrador de 16-bits que armazena o endereço da próxima instrução que será executada pelo processador. 
                Este registrador é incrementado automaticamente à medida que as instruções vão sendo executadas ou modificadas por algumas instruções de desvio de fluxo. 
            
         
     
    
        
Stack Pointer - Ponteiro para Pilha
    
    
        
            
                O SP é um registrador de 16-bits que armazena o endereço disponível na pilha. Este registrador é incrementado 
                automaticamente pelas instruções PUSH e PULL e modificado por outras instruções. 
            
         
     
    
        Processor Status - Status do Processador - Flags
        
     
    
        
            
                O 6502 possui um grupo de flags para que possamos entender seu status após a execuções de suas instruções. Abaixo,
                a explicação das flags:
            
            
            
         
        
            PS - Processor Status
            
                
                    | Bit 7 | 
                    Bit 6 | 
                    Bit 5 | 
                    Bit 4 | 
                    Bit 3 | 
                    Bit 2 | 
                    Bit 1 | 
                    Bit 0 | 
                
            
            
                
                    | N | 
                    V | 
                    - | 
                    B | 
                    D | 
                    I | 
                    Z | 
                    C | 
                
            
        
     
    
        
Bit 0: Carry
    
    
        
            
                A flag C(Carry), pode ser entendida como o “Vai-um ou Vem-um” em operações aritméticas de soma e subtração. 
                Em instrução de deslocamento e rotação de bits armazena os bits mais e menos significativos.           
            
         
     
    
        
Bit 1: Zero
    
    
        
            
                A flag Z(Zero) indica que o valor carregado em um registrador ou memória é igual a zero ou não. 
                Se for igual a zero, a flag recebe o valor 1, caso contrário recebe o valor de 0.
            
         
     
    
        
Bit 2 : Interrupt Enable/Disable
    
    
        
            
                Flag utilizada para habilitar e desabilitar o reconhecimento de interrupções. 
                Quando seu valor é 0, nenhuma interrupção é reconhecida. Quando seu valor é 1, as interrupções são reconhecidas e executadas. Uma Interrupção não-mascarável(NMI) não é afetada pela flag.
            
         
     
    
        
Bit 3: Decimal
    
    
        
            
                Flag utilizada para instruções aritméticas com números decimais.
            
         
     
    
        
Bit 4: Break
    
    
        
            
                Flag utilizada pela instrução BRK(Break) para depuração de código. Essa flag existe apenas quando o PS é salvo na pilha.
            
         
     
    
        
Bit 5: - 
    
    
    
        
Bit 6: Overflow
    
    
        
            
                A flag O(Overflow) é utilizada em operações que envolvem aritmética sinalizada indicando um extravasamento no armazenamento. 
                Por exemplo, se dois valores de mesmo sinal são somados e um valor de sinal contrário é gerado, há overflow. Havendo overflow, a flag recebe o valor 1, caso contrário recebe o valor 0.
            
            
                A flag V pode ser setada(1) atráves do pino SO presente no 6502.
            
         
     
    
        
Bit 5: Negative 
    
    
        
            
                A flag N(Negative) indica a sinalização de um valor armazenado em um registrador. Se um valor for positivo, 
                a flag recebe valor 0, caso seja negativo recebe o valor 1. Um valor sinalizado é indicado pelo bit 7, 
                bit mais significativo.
            
         
     
    
        
"Flags" : Bit 5 e B
    
    
        
            
                A flag B existe apenas quando o PS é salvo na pilha. Quando o PS é restaurado por PHP ou RTI, essa flag é descartada.
                É setada(1) pelas instruções BRK e PHP e resetada(0) quando uma interrupção de hardware(IRQ ou MNI) ocorre. Essa flag
                é utilizada para diferencar entre a interrupção de software BRK e a interrupção de hardware IRQ.
            
            
                A Bit 5, é setada sempre que o PS for salvo(PHP) na pilha e ignorado quando o PS for restaurado(PLP, RTI).
            
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 11/03/2025 - revisão 2 - adição de tópico sobre flags B e Bit 5, Info sobre SO em flag V
 
                - 04/10/2023 - revisão 1 - correção em de links, layout e navegação e descrição SP
 
                - 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.