Objetivos
        
    
    
    
    
        
            
                As instruções referente às flags do 8086 têm como propósito setar(1), resetar(0), ou inverter 
                seus valores. Apenas as flags Carry, Interrupt e Direction são suportadas por essas instruções. 
                O modo de endereçamento implícito é utilizado.
            
            Notação utilizada:
            
                
                    
                         | 
                         | 
                    
                
                
                    
                        | <- | 
                        Atribuição | 
                    
                    
                        | ! | 
                        Complemento | 
                    
                    
                        | ;  | 
                        Comentário | 
                    
                    
                        | 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 e Flags.
            
            
                Mais informações sobre interrupção podem ser vistas 
                em Interrupções.
            
         
     
    
    
        
            
                Ao executar a instrução STC, a flag Carry tem seu valor alterado para 1. Essa instrução
                pode ser utilizada em conjunto com instruções aritméticas, por exemplo.
            
            Operação: 
            Cy <- 1
            Operandos
            -
            F(Flags)
            S: -
Z: -
Ac:-
P: -
Cy:1
            Ex:
            MOV AL, 1
MOV BL, 1
STC
ADC BL, AL ;  BL <- AL + BL + 1
         
     
    
        STI - Set Interrupt Enable
        
     
    
        
            
                Executando a instrução STI, a flag Interrupt tem seu valor alterado para 1. Assim,
                as interrupções(INTR,INT) são habilitadas para serem reconhecidas pelo 8086. 
            
            Operação: 
            I <- 1
            Operandos
            -
            F(Flags)
            I: 1
S: -
Z: -
Ac:-
P: -
Cy:-
            Ex:
            ;carregamento de dados
STI
;aguardar interrupção
         
     
    
    
        
            
                Quando usamos a instrução STD, a flag Direction tem seu valor alterado para 1. Assim,
                os registradores SI e DI serão decrementados em 1 ou 2 bytes de acordo com as instruções que utilizam essa 
                flag.
            
            Operação: 
            D <- 1
            Operandos
            -
            F(Flags)
            I: -
D: 1
S: -
Z: -
Ac:-
P: -
Cy:-
            Ex:
            STD
         
     
    
    
        
            
                Ao usar a instrução CLC, a flag Carry tem seu valor alterado para 0. Essa instrução
                pode ser utilizada em conjunto com instruções aritméticas, por exemplo.
            
            Operação: 
            Cy <- 1
            Operandos
            -
            F(Flags)
            I: -
S: -
Z: -
Ac:-
P: -
Cy:0
            Ex:
            MOV AL, 0FFh
MOV BL, 01h
ADD BL,AL   ;Cy <- 1
CLC         ;Cy <- 0
         
     
    
    
        
            
                Ao executar a instrução CLI, a flag Interrupt Enable tem seu valor alterado para 0. 
                Dessa forma, as interrupções(INTR, INT) são desabilitadas não sendo reconhecidas pelo 8086.
            
            Operação: 
            I <- 0
            Operandos
            -
            F(Flags)
            I: 0
S: -
Z: -
Ac:-
P: -
Cy:-
            Ex:
            CLI
;Carregamento de dados
STI
;Aguardar interrupção
         
     
    
    
        
            
                Quando usamos a instrução CLD, a flag Direction tem seu valor alterado para 0. 
                 Assim, os registradores SI e DI serão decrementados em 1 ou 2 bytes de acordo com as instruções 
                que utilizam essa flag.
            
            Operação: 
            D <- 0
            Operandos
            -
            F(Flags)
            I: -
D: 0
S: -
Z: -
Ac:-
P: -
Cy:-
            Ex:
            MOV     AX, CS
MOV     DS, AX      ;Seta regs. de segmento
MOV     ES, AX
LEA     SI, vetor1  ; operando1
LEA     DI, vetor2m ; operando2
MOV     CX, 4       ; qtd bytes
CLD                 ; incrementar DI e SI
REPE    CMPSB       ; comparação
; tratamento não igual
loop:
JMP loop
vetor1 db 1, 2, 3, 4
vetor2 db 1, 2, 3, 4
         
     
    
    
        
            
                Ao usar a instrução CMC, a flag Carry tem seu valor invertido ou complementado. Essa instrução pode
                ser executar em conjunto com instruções aritméticas, por exemplo.
            
            Operação: 
            Cy <- !Cy
1 -> 0
0 -> 1
            Operandos:
            -
            F(Flags)
            S: -
Z: -
Ac:-
P: -
Cy:0
            Ex:
            MOV Al, 0FFh
ADD AL,1 ; Cy <- 1
CMC      ; Cy <- 0
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 18/02/2025 - revisão 1 - ajustes pontuais
 
                - 10/12/2024 - 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.