|   Detalhamento das Micro-operações: 
          Instrução ADD Modificação das  Flags: 
          Funcionamento: add reg1,  reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 Executa add(na ULA) -> Gera flagsAbus = resultado add
 reg1 = Abus
   
            add reg1, memoriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa add(na ULA) -> Gera flagsAbus = resultado add
 reg1 = Abus
   
            add memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa add(na ULA) -> Gera flagsAbus = resultado add
 memoria[op1] = Abus
   
            add reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa add(na ULA) -> Gera flagsAbus = resultado add
 reg1 = Abus
 ______________________________________________________________________ add memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa add(na ULA) -> Gera flagsAbus = resultado add
 memoria = Abus
 _____________________________________________________________________   Instrução SUB Modificação das  Flags: 
          Funcionamento: sub reg1, reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 Executa sub(na ULA) -> Gera flagsAbus = resultado sub
 reg1 = Abus
 ______________________________________________________________________ sub reg1, memoriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa sub(na ULA) -> Gera flagsAbus = resultado sub
 reg1 = Abus
 ______________________________________________________________________ sub memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa sub(na ULA) -> Gera flagsAbus = resultado sub
 memoria[op1] = Abus
 ______________________________________________________________________ sub reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa sub(na ULA) -> Gera flagsAbus = resultado sub
 reg1 = Abus
 ______________________________________________________________________   sub memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa sub(na ULA) -> Gera flagsAbus = resultado sub
 memoria = Abus
 ______________________________________________________________________   Instrução AND Modificação das  Flags: 
          Funcionamento: and reg1,  reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 Executa and(na ULA) -> Gera flagsAbus =  resultado and
 reg1 = Abus
 ______________________________________________________________________ and reg1,  memoriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa and(na ULA) -> Gera flagsAbus =  resultado and
 reg1 = Abus
 ____________________________________________________________  and  memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa and(na ULA) -> Gera flagsAbus = resultado and
 memoria[op1] = Abus
 ______________________________________________________________________ and reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa and(na ULA) -> Gera flagsAbus = resultado and
 reg1 = Abus
 ______________________________________________________________________ and memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa and(na ULA) -> Gera flagsAbus = resultado and
 memoria = Abus
 ______________________________________________________________________ Instrução XOR Modificação das  Flags:  
          Funcionamento: xor reg1,  reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 Executa xor(na ULA) -> Gera flagsAbus = resultado xor
 reg1 = Abus
 ______________________________________________________________________ xor reg1, memoriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa xor(na ULA) -> Gera flagsAbus = resultado xor
 reg1 = Abus
 ____________________________________________________________ xor memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa xor(na ULA) -> Gera flagsAbus = resultado xor
 memoria[op1] = Abus
 ______________________________________________________________________ xor reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa xor(na ULA) -> Gera flagsAbus = resultado xor
 reg1 = Abus
 ______________________________________________________________________ xor memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa xor(na ULA) -> Gera flagsAbus = resultado xor
 memoria = Abus
 ______________________________________________________________________ Instrução OR Modificação das  Flags:  
          Funcionamento: or reg1,  reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 Executa or(na ULA) -> Gera flagsAbus = resultado or
 reg1 = Abus
 ______________________________________________________________________ or reg1, memoriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa or (na ULA) -> Gera flagsAbus = resultado or
 reg1 = Abus
 ____________________________________________________________ or memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa or (na ULA) -> Gera flagsAbus = resultado or
 memoria[op1] = Abus
 ______________________________________________________________________ or reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa or (na ULA) -> Gera flagsAbus = resultado or
 reg1 = Abus
 ______________________________________________________________________ or memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 Executa or (na ULA) -> Gera flagsAbus = resultado or
 memoria = Abus
 ______________________________________________________________________   Instrução MUL Modificação das  Flags:  
          Funcionamento: mul memoriaAbus = Reg-AL
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa mul(na ULA) -> Gera flagsAbus = resultado mul
 Reg-AX = Abus
 ______________________________________________________________________ mul reg1Abus =  Reg-AL
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa mul(na ULA) -> Gera flagsAbus = resultado mul
 Reg-AX = Abus
 ______________________________________________________________________   Instrução DIV Modificação das  Flags:  
          Funcionamento: div memoriaAbus = Reg-AX
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 Executa div(na ULA) -> Gera flagsAbus = quociente
 Reg-AL = Abus
 Abus = resto
 Reg-AH =  Abus
 ______________________________________________________________________ div reg1Abus =  Reg-AX
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 Executa div(na ULA) -> Gera flagsAbus = quociente
 Reg-AL = Abus
 Abus = resto
 Reg-AH = Abus
 ______________________________________________________________________   Instrução NOT Modificação das  Flags:  
          Funcionamento: not Reg1Abus = Reg1
 tmp1 = Abus
 Executa not(na ULA) -> Gera flagsAbus = resultado
 Re1 = Abus
 ______________________________________________________________________ not memoriaAbus = memoria[Op1]
 tmp1 = Abus
 Executa not(na ULA) -> Gera flagsAbus = resultado
 memoria[Op1] = Abus
 ______________________________________________________________________   Instrução CMP Modificação das  Flags:  
          Funcionamento: cmp reg1, reg2Abus = reg1
 tmp1 = Abus
 Abus = reg2
 tmp2 = Abus
 sub tmp1, tmp2 Executa cmp -> Gera flags   
            cmp reg1, memóriaAbus = reg1
 tmp1 = Abus
 Abus = memoria[op1]
 tmp2 = Abus
 sub tmp1, tmp2 Executa cmp -> Gera flags   
            cmp memoria, reg1Abus = memoria[op1]
 tmp1 = Abus
 Abus = reg1
 tmp2 = Abus
 sub tmp1, tmp2 Executa cmp -> Gera flags   
            cmp reg1, imediatoAbus = reg1
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 sub tmp1, tmp2 Executa cmp -> Gera flags______________________________________________________________________
 cmp memoria, imediatoAbus = memoria[op1]
 tmp1 = Abus
 Abus = imediato
 tmp2 = Abus
 sub tmp1, tmp2 Executa cmp -> Gera flags ______________________________________________________________________   Instrução JMP Modificação das  Flags: 
          Funcionamento: jmp labelIP = endereço destino
 ______________________________________________________________________ Instrução JE Modificação das  Flags: 
          Funcionamento: je labelif (Zero_Flag == 1)
 IP = endereço  destino
 ______________________________________________________________________
   Instrução JNE Modificação das  Flags: 
          Funcionamento: je labelif (Zero_Flag == 0)
 IP = endereço  destino
 ______________________________________________________________________
 Instrução JB Modificação das  Flags: 
          Funcionamento: jb labelif (Carry_Flag == 1)
 IP = endereço  destino
 ______________________________________________________________________ Instrução JNB Modificação das  Flags: 
          Funcionamento: jnb labelif (Carry_Flag == 0)
 IP = endereço  destino
 ______________________________________________________________________ Instrução JA Modificação das  Flags: 
          Funcionamento: ja labelif (Carry  Flag == 1 && Zero_Flag == 0)
 IP = endereço destino
 ______________________________________________________________________ Instrução JNA Modificação das  Flags: 
          Funcionamento: jna labelif (Carry Flag  == 0 && Zero_Flag == 1)
 IP = endereço destino
   |