sexta-feira, 26 de maio de 2017

Curso de Assembly Aula 07



i--------------©
¦ ASSEMBLY VII ¦
È--------------¥

    Algumas instruçöes afetam  somente  aos  flags.  Dentre elas, as
mais utilizadas säo as instruçöes de comparaçäo entre dois dados.

 ¦ Comparaçöes aritiméticas:

    A  instruçäo  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  instruçäo faz a subtraçäo 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  subtraçäo  dará valores
iguais e o flag de ZERO será 1. Eis a mecânica de CMP:

 +-----------------------------------------------------------------+
 ¦  CMP AL,1Fh   ; AL - 1Fh, afetando somente os Flags             ¦
 +-----------------------------------------------------------------+

 ¦ Comparaçöes lógicas:

    A instruçäo TEST é usada quando se quer  comparar  o  estado  de
determinados bits de um operando. Eis a sintaxe:

 +-----------------------------------------------------------------+
 ¦  TEST AL,10000000b                                              ¦
 ¦  TEST [BX],00001000b                                            ¦
 +-----------------------------------------------------------------+

    Esta  instruçäo faz um AND com os dois operados, afetando apenas
os flags.  Os flags Z, S  e  P  säo  afetados,  os flags O e C seräo
zerados.

 ¦ Instruçöes que mudam o estado dos flags diretamente:

    CLC - Abreviaçäo de CLear Carry (Zera o flag Carry).
    CLD - Abreviaçäo de CLear Direction (Ajusta flag de  direçäo  em
          zero,  especificando  o sentido correto para instruçöes de
          bloco).
    CLI - Abreviaçäo   de  CLear   Interrupt   (Mascara   flag    de
          interrupçäo,   näo  permitindo  que  a  CPU  reconheça  as
          interrupçöes mascaráveis).
    CMC - Abreviaçäo de CoMplement Carry (Inverte o flag de carry).
    STC - Abreviaçäo de SeT Carry (Faz carry = 1).
    STD - Abreviaçäo  de  SeT  Direction  (flag  de direçäo setado -
          indica que as instruçöes de bloco  incrementaräo  os  seus
          pointers no sentido contrário - de cima para baixo).
    STI - Abreviaçäo  de  SeT Interrupt (Faz com que a CPU volte a
          reconhecer as interrupçöes mascaráveis).

    Uma  interrupçäo  é  um  "desvio"  feito  pela  CPU  quando   um
dispositivo  requer  a  atençäo  da mesma.  Por exemplo, quando você
digita uma tecla, o circuito do  teclado requisita a atençäo da CPU,
que  por  sua  vez,  para  o  que  está fazendo e executa uma rotina
correspondente à  requisiçäo  feita  pelo  dispositivo  (ou  seja, a
rotina da interrupçäo).  Ao final da rotina, a CPU retorna à  tarefa
que  estava  desempenhando  antes da interrupçäo.  Nos PCs, TODAS as
interrupçöes  säo  mascaráveis  (podem  ser  ativadas  e desativadas
quando  quisermos),  com a única excessäo da interrupçao de checagem
do sistema (o famoso MEMORY PARITY ERROR é um exeplo!).

Nenhum comentário:

Postar um comentário

Curso SANS 504 Hacker Techniques, Exploits & Incident Handling

SANS SECURITY 504 - Hacker Techniques, Exploits & Incident Handling     SANS Security 504.5.pdf13 MB     SANS Security 504.1.pdf12 M...