
                               ASSEMBLY
                         Comandos e Instrues (Parte 4)
                                Aula nr. 7 de 26

    Algumas instrues afetam  somente  aos  flags.  Dentre elas, as
mais utilizadas so as instrues de comparao entre dois dados.

  Comparaes aritimticas:

    A  instruo  CMP    usada  quando se quer comparar dois dados,
afetando somente aos flags.  Eis a sintaxe:

 Ŀ
   CMP AL,1Fh                                                     
   CMP ES:[DI],1                                                  
   CMP AX,[SI]                                                    
 

    Esta  instruo faz a subtrao entre o operando mais a esquerda
e o mais a direita, afetando  somente  os flags.  Por exemplo, se os
dois operandos  tiverem  valores  iguais  a  subtrao  dar valores
iguais e o flag de ZERO ser 1. Eis a mecnica de CMP:

 Ŀ
   CMP AL,1Fh   ; AL - 1Fh, afetando somente os Flags             
 

  Comparaes lgicas:

    A instruo TEST  usada quando se quer  comparar  o  estado  de
determinados bits de um operando. Eis a sintaxe:

 Ŀ
   TEST AL,10000000b                                              
   TEST [BX],00001000b                                            
 

    Esta  instruo faz um AND com os dois operados, afetando apenas
os flags.  Os flags Z, S  e  P  so  afetados,  os flags O e C sero
zerados.

  Instrues que mudam o estado dos flags diretamente:

    CLC - Abreviao de CLear Carry (Zera o flag Carry).
    CLD - Abreviao de CLear Direction (Ajusta flag de  direo  em
          zero,  especificando  o sentido correto para instrues de
          bloco).
    CLI - Abreviao   de  CLear   Interrupt   (Mascara   flag    de
          interrupo,   no  permitindo  que  a  CPU  reconhea  as
          interrupes mascarveis).
    CMC - Abreviao de CoMplement Carry (Inverte o flag de carry).
    STC - Abreviao de SeT Carry (Faz carry = 1).
    STD - Abreviao  de  SeT  Direction  (flag  de direo setado -
          indica que as instrues de bloco  incrementaro  os  seus
          pointers no sentido contrrio - de cima para baixo).
    STI - Abreviao  de  SeT Interrupt (Faz com que a CPU volte a
          reconhecer as interrupes mascarveis).

    Uma  interrupo    um  "desvio"  feito  pela  CPU  quando   um
dispositivo  requer  a  ateno  da mesma.  Por exemplo, quando voc
digita uma tecla, o circuito do  teclado requisita a ateno da CPU,
que  por  sua  vez,  para  o  que  est fazendo e executa uma rotina
correspondente    requisio  feita  pelo  dispositivo  (rotina  de
interrupo).  Ao final da rotina, a CPU retorna  tarefa que estava
desempenhando antes da interrupo.   Nos PCs, TODAS as interrupes
so mascarveis (podem ser ativadas e desativadas quando quisermos),
com a nica excesso da rotina de  checagem  do  sistema  (o  famoso
MEMORY PARITY ERROR  um exeplo!).
                                                                                              
