Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

(1) Mini's Artigos sobre Assembly

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    (1) Mini's Artigos sobre Assembly

    #*# O que é Assembly?
    Assembly ou linguagem de montagem é uma notação legível por humanos para o código de máquina que uma
    arquitetura de computador específica usa, utilizada para programar dispositivos computacionais, como
    microprocessadores e microcontroladores. A linguagem de máquina, que é um mero padrão de bits, torna-se
    legível pela substituição dos valores em bruto por símbolos chamados mnemónicos.


    #*# Registradores 8 bits, 16 bits e 32 bits:
    Registradores, são pequenas porções de memória, que servem para armazenar dados temporariamente, fica lozalizada no processador.

    Os registradores podem armzenar três tipos de dados, Byte, Word e Dword, em Hexadecimal séria o seguinte:
    BYTE 00 - Podem armazenar até 255, ou FF em Hexadecimal;
    WORD 00 00 - Podem armazenar até 65535, ou FFFF em Hexadecimal;
    DWORD 00 00 00 00 - Podem armazenar até 4,294,967,295 ou FFFFFFFF.

    Agora que já sabemos os tipos de dados que os registradores podem aramazenar vamos conhecer eles...

    Código PHP:
                                32bit  16bit 8bit
                                EAX    AX    AL
            ______EAX______     ECX    CX    CL
            ______
    |___AX___     EDX    DX    DL
            ______
    |_AH_|_AL     EBX    BX    BL
            00 00 
    00 00     ESP    SP    AH
                                EBP    BP    BH
                                ESI    SI    CH                            
                                EDI    DI    DH 

    Os registradores EAX, ECX em diante, podemos ver logo ai em cima na ilustração, podem armazenar até 4 bytes, ou
    seja, um DWORD de 32 bits, os AX, CX em diante, podem armazenar 2 bytes(16 bits), os AL, CL em diante, podem
    armazenar 1 byte(8 bits)...
    Além desses temos outros, que são os de Segmento, que são CS, SS, DS, ES. E temos os de Status(FLAGS) e o Ponteiro de
    instrução, que é o IP. Esses que nós vimos, são os de uso Geral, dados e endereço.

    Espero que tenha entendido essa parte, não entendeu? Tenha calma, leia novamente
    com atenção, não é tal dificil como parece, rsrs (:

    #*# Flags(Registrador de estados)

    * CF(Carry Flag) - É sinalizada quando excede o limite do tamanho do dado. Tipo, um byte de 255, se tentamos somar mais 1 dá 256,
    mas esse resultado não dá em um byte, então a flag Carry é ativada.

    * PF(Parity Flag) - Flag Paridade, ou seja, se a flag estiver setada, a paridade é par, se não é ímpar.

    * AF(Auxiliaty Flag ) - Essa flag funciona como a CF, porém do bit 3 a 4, ou seja, como se indicasse o estouro de
    nibble. Mas funciona apenas com sequência numéricas em formato Binary-Coded Decimal (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).

    * ZF(Zero Flag) - Se uma operação resultou em resultado zero, a flag é ativada, se não, fica desativada(lógico kkkk).
    foi zero, se não, foi diferente de zero.

    * SF(Sing Flag) - Ativa com resultados negativos.

    * TF(Trap Flag) - Essa flag possibilita uma interrupção especial após executar uma única instrução com a
    finalidade de acompanhar passo-a-passo a execução de cada instrução (operações de debug).

    * IF(Interrupt Enable Flag) - Ativa ou desativa as chamadas de interrupção

    * DF(Direction Flag) - A Flag de Direção indica a direção das operações de string. Se estiver
    setada o registrador apontador ESI e EDI são decrementados, se não estiver setada ESI e EDI são
    incrementados. Em outras palavras, a operação em corda é feita de frente-para-trás ou de trás-para-frente.

    * OF(Overflow Flag) - Ativa quando tiver Overflow, ou seja, quando o tamanho de armazenamento não é suficiente.

    As Flag sevem para emiti sinais na execução do código. Se nós fazemos uma operação, que nessa operação resulto em zero,
    então, a flag ZF(Zero Flag) é ativada, por sua vez, se logo a frente estiver um JZ(Salte se Zero) ele salta, porque, a maioria
    dos saltos dependem das flag's para que possam pular pra próxima instrução. Esse foi um exemplo com a ZF, com as outras flags, será
    diferente...
    Exemplo:
    EAX = 10
    EAX = EAX - 10
    comparar EAX == 0
    JZ (endereço da proxima instrução)


    Eita, muita coisa né? Mas nem precisa se assustar, quando nós começamos a programar, ver os Saltos e as comparações,
    sua mente vai se abrir, você vai ver que não é tão dificil assim, rsrs...
    Se escrevi algo de errado, por favor, comentar

    Att #M0rph... (:

    Referências:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    "Nunca desista de seus sonhos. Desisti de seus sonhos é abrir mão da felicidade."
    (Augusto Cury)



    Meu Blog... http://www.lab-infor.blogspot.com
    Meu canal do Youtube... http://www.youtube.com/user/rodrigo32323232

  • Font Size
    #2
    Show cara show mesmo !!!!

    Comment


    • Font Size
      #3
      mto bom, bem explicadinho , aguardando mais desses ^^
      sigpicToda verdade passa por três estágios. Primeiramente, é ridicularizada. Em segundo lugar, é violentamente confrontada. Por último, torna-se aceita como evidência

      Comment


      • Font Size
        #4
        Muito bom cara.Sou iniciante em Assembler,e isso vai me ajudar muito,pode ter certeza.Espero mais post desses.

        Comment


        • Font Size
          #5
          Show! faça mais. rsrs

          Comment


          • Font Size
            #6
            Muito bom, super bem explicado !
            .

            - PHP & VB C0d3r.

            Nickguitar.dll@hotmail.com

            http://www.youtube.com/user/superskate56 <~ Hacking tuts =)

            Quando aprendemos a ouvir, também aprendemos a falar..
            Quando aprendemos a ler, também aprendemos a escrever.
            Então, quando aprendemos a usar um computador, por que não aprender a programa-lo ?


            I'm C0ding for $$$

            #~: Just $this :~#

            Comment

            X
            Working...
            X