Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Assembly para iniciantes...

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

  • Font Size
    #1

    Assembly para iniciantes...

    Estava procurando material para aprender a trabalhar com a linguagem Assembly. Achei algumas coisas interessantes o problema é que esse material é muito difuso e para iniciantes como eu, essa quantidade de informações importantes espalhadas em diversos tutoriais não ajuda muito. É certo que nunca vai existir um livro “completo” falando de uma linguagem de programação ainda mais sobre o Assembly, que sendo linguagem considerada de baixo nível por ser um tipo de linguagem muito próxima da linguagem de maquina, varia de acordo com o Hardware que se pretende programar.
    Então decidi reuni eu mesmo essas informações num conteúdo só, com o objetivo de facilitar o acesso á essas informações muito preciosas. Ajudando pessoas como eu, que estão se iniciando nesse mundo da programação Assembly a entender o mecanismo de funcionamento dessa linguagem tão poderosa.

    Estarei postando constantemente neste fórum conteúdo direcionado à quem é iniciante. Aqueles que puderem contribuir para o enriquecimento de nossos conhecimentos fiquem à vontade para portar observações.

    Conto com o apoio de todos, espero que gostem.
    Abraços

    Então vamos começar:

    Antes de tudo, a introdução (Essa parte é meio chata, mas é importantíssima):

    O Assembly é uma linguagem de baixo nível por ser uma linguagem próxima daquela que as máquinas entendem. Para usá-la é necessário, além do conhecimento da própria linguagem, conhecimento das características de funcionamento da máquina.

    Mas para que eu vou querer aprender uma liguagem desse tipo???

    Para agilizar seus trabalhos. Se você tem uma rotina que acaba fritando a CPU de tanto processamento isso será muito útil. Os executáveis criados em Assembly apresentam duas grandes vantagens: velocidade de execução (como ela está próxima do código de máquina, ela é muito veloz) e tamanho reduzido. Além disto, como a linguagem não tem firulas e vai direto ao ponto (ou aos registradores), a execução exige muito menos recursos porque qualquer assembler supera a capacidade dos melhores compiladores de linguagens de alto nível. O software de desempenho crítica é um alvo natural para os programas em assembly puro.

    Ele também permite a você falar com a máquina a nível de hardware por se comunicar diretamente com o kernel do seu sistema operacional lhe dando muito maior controle e flexibilidade sobre o PC .

    Pra quem se interessar pelo surgimento da linguagem assembly: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Assemble vem do Inglês e significa construir, juntar partes; é daí que vem o nome da linguagem de programação, o ASSEMBLY. Assembler significa construtor e é o nome que se dá a programas que "juntam partes", que "constroem" executáveis. É por isto que não é possível escrever um programa em assembler (como se costuma ver por aí): o programa é escrito em Assembly e depois pode ser transformado num executável por um assembler.

    Quando se escreve um programa, na realidade se escreve um texto que contém um roteiro que precisa ser transformado num programa. Esta transformação é feita em duas etapas. Primeiro, o texto precisa ser transformado num novo roteiro que contenha instruções para a CPU. Esta primeira tradução produz os assim chamados arquivos objeto. O programa que produz arquivos objeto é chamado de assembler ou compilador. Os arquivos objeto, por sua vez, servem de fonte para outro tipo de programa: o linker. Os linkers adicionam referências de endereços aos arquivos objeto e os transformam em arquivos executáveis, a versão final do seu programa. Resumindo as etapas, tem-se o seguinte:

    Editor de texto = Arquivo Texto (.ASM) ---> Assembler (compilador)= Arquivo Objeto (.OBJ) ---> Linker = Arquivo Executável (.EXE) ou uma DLL

    Para criar um programa escrito em Assembly e que rode no ambiente Windows e *nix, essas etapas precisam ser cumpridas.

    Então vamos detalhar um pouco pra entendermos o processo.

    Observe que são três etapas distintas: elaboração do código fonte, compilação e linkedição.

    Os arquivos que contêm o código fonte devem ser gravados em texto ASCII puro, ou seja, não devem conter caracteres especiais de formatação. Podem ser produzidos em qualquer editor de texto que ofereça a possibilidade de salvar arquivos neste formato (geralmente chamado simplesmente de formato texto). Até o bloco de notas do Windows é um bom editor para este trabalho.

    É hábito dos programadores indicar a linguagem usada na extensão do arquivo fonte. Por exemplo, .asm para código fonte em Assembly, .c para a linguagem C, .cpp para a C++ ou .pas para Pascal (Delphi). O programa assembler (ou compilador) aceita qualquer extensão, contanto que o código fonte seja o que ele espera.

    Um arquivo .asm contém as instruções para o processador na forma de palavras e números. Estas instruções serão executadas pelo processador quando o programa rodar. Acontece que o processador não entende o código fonte: ele precisa ser transformado em "linguagem de máquina" e estar "arrumado" de acordo com um padrão que o sistema operacional consiga identificar. Esta transformação é feita em duas etapas: o compilador prepara o código fonte guardando o código fornecido no formato COFF (Common Object File Format) num arquivo objeto (.obj) e este, por sua vez, é transformado pelo linkeditor num arquivo executável (.exe) no formato PE (Portable Executable).

    Um arquivo objeto é criado pelo compilador ou assembler a partir de um arquivo .asm. O compilador pega as instruções do arquivo .asm, que estão em palavras e números, e as transforma no formato objeto COFF, que é o formato que o linker espera. O compilador concatena todo o código e os dados de instrução presentes no código fonte e os coloca em seções de código e de dados no arquivo .obj. A seção de código contém as instruções, os chamados códigos operacionais (opcodes) que o processador executa quando o programa é rodado. A seção de dados contém informações que serão mantidas na memória enquanto o programa estiver sendo executado.

    Não é possível rodar um arquivo .obj como um programa, por que não tem a forma final de um executável. O formato de um executável esperado pelo Windows é o formato PE. Algumas vezes o arquivo .obj é chamado de arquivo "binário" ou simplesmente "bin", o que se justifica porque ele não contém mais os mnemônicos, apenas números.

    O arquivo executável é o arquivo final que pode ser executado pelo sistema operacional. Geralmente está no formato PE, reconhecido pelo Unix, Linux, Windows, etc. O programa é produzido por um linker, o qual usa um ou mais arquivos .obj e .res e os combina num executável final. O formato PE também exige que o executável tenha um cabeçalho com informações a respeito do arquivo .exe. O linker fornece estas informações.

    Em resumo curto e grosseiro: O script é a “receita do programa” é criado num editor de texto simples. O programa assembler pega essa receita e a traduz pra linguagem da CPU (aquele monte de 1 e 0 que todo mundo já conhece). Para o sistema operacional entender esse “binarês” esse tem de ser organizado numa seqüência de execução própria então o programa linker “arruma” o negocio pro sistema operacional entender também.

    Fontes:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Curso de Assembly ¦ Aula Nº 01 ¦
    Por: Frederico Pissarra
    Tutorial de Assembler de Adam Hyde 1.0
    University of Guadalajara
    "Torna-te aquilo que és."
    Similar Threads

  • Font Size
    #2
    Gostei, continue contribuindo amigo. E se possivel coloque umas imagens para chamar mais atenção

    Abraços
    Meu novo blog http://tecno-java.guiadohacker.com.br/

    Comment


    • Font Size
      #3
      Muuuuuuito bom.
      Comecei a estudar essa linguagem a pouco tempo.

      [center]
      Sim! Eu sou um criminoso! E meu crime é o de curiosidade! Meu crime é o de julgar as pessoas pelo que elas falam e pensam e não pela sua aparência. Meu crime é o de ser mais esperto do que vocês, algo pelo que vocês nunca vão me perdoar... Eu sou um hacker, e este é meu manifesto. VocÊs podem até barrar este individuo. Mas você NUNCA vai conseguir acabar com todos nós. Afinal de contas... Somos todos iguais...

      Comment


      • Font Size
        #4
        Esse é um problema que estou enfrentando, além de ser um pouco complicado a linguagem(para os iniciantes), é complicado para se encontrar material.
        Mas creio que com determinação e força de vontade(e porque não dizer inteligência rs...) é possível sim.

        Comment


        • Font Size
          #5
          Site sobre linguagem em assembly para iniciante

          Postado Originalmente por Null Ver Post
          Estava procurando material para aprender a trabalhar com a linguagem Assembly. Achei algumas coisas interessantes o problema é que esse material é muito difuso e para iniciantes como eu, essa quantidade de informações importantes espalhadas em diversos tutoriais não ajuda muito. É certo que nunca vai existir um livro “completo” falando de uma linguagem de programação ainda mais sobre o Assembly, que sendo linguagem considerada de baixo nível por ser um tipo de linguagem muito próxima da linguagem de maquina, varia de acordo com o Hardware que se pretende programar.
          Então decidi reuni eu mesmo essas informações num conteúdo só, com o objetivo de facilitar o acesso á essas informações muito preciosas. Ajudando pessoas como eu, que estão se iniciando nesse mundo da programação Assembly a entender o mecanismo de funcionamento dessa linguagem tão poderosa.

          Estarei postando constantemente neste fórum conteúdo direcionado à quem é iniciante. Aqueles que puderem contribuir para o enriquecimento de nossos conhecimentos fiquem à vontade para portar observações.

          Conto com o apoio de todos, espero que gostem.
          Abraços

          Então vamos começar:

          Antes de tudo, a introdução (Essa parte é meio chata, mas é importantíssima):

          O Assembly é uma linguagem de baixo nível por ser uma linguagem próxima daquela que as máquinas entendem. Para usá-la é necessário, além do conhecimento da própria linguagem, conhecimento das características de funcionamento da máquina.

          Mas para que eu vou querer aprender uma liguagem desse tipo???

          Para agilizar seus trabalhos. Se você tem uma rotina que acaba fritando a CPU de tanto processamento isso será muito útil. Os executáveis criados em Assembly apresentam duas grandes vantagens: velocidade de execução (como ela está próxima do código de máquina, ela é muito veloz) e tamanho reduzido. Além disto, como a linguagem não tem firulas e vai direto ao ponto (ou aos registradores), a execução exige muito menos recursos porque qualquer assembler supera a capacidade dos melhores compiladores de linguagens de alto nível. O software de desempenho crítica é um alvo natural para os programas em assembly puro.

          Ele também permite a você falar com a máquina a nível de hardware por se comunicar diretamente com o kernel do seu sistema operacional lhe dando muito maior controle e flexibilidade sobre o PC .

          Pra quem se interessar pelo surgimento da linguagem assembly: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

          Assemble vem do Inglês e significa construir, juntar partes; é daí que vem o nome da linguagem de programação, o ASSEMBLY. Assembler significa construtor e é o nome que se dá a programas que "juntam partes", que "constroem" executáveis. É por isto que não é possível escrever um programa em assembler (como se costuma ver por aí): o programa é escrito em Assembly e depois pode ser transformado num executável por um assembler.

          Quando se escreve um programa, na realidade se escreve um texto que contém um roteiro que precisa ser transformado num programa. Esta transformação é feita em duas etapas. Primeiro, o texto precisa ser transformado num novo roteiro que contenha instruções para a CPU. Esta primeira tradução produz os assim chamados arquivos objeto. O programa que produz arquivos objeto é chamado de assembler ou compilador. Os arquivos objeto, por sua vez, servem de fonte para outro tipo de programa: o linker. Os linkers adicionam referências de endereços aos arquivos objeto e os transformam em arquivos executáveis, a versão final do seu programa. Resumindo as etapas, tem-se o seguinte:

          Editor de texto = Arquivo Texto (.ASM) ---> Assembler (compilador)= Arquivo Objeto (.OBJ) ---> Linker = Arquivo Executável (.EXE) ou uma DLL

          Para criar um programa escrito em Assembly e que rode no ambiente Windows e *nix, essas etapas precisam ser cumpridas.

          Então vamos detalhar um pouco pra entendermos o processo.

          Observe que são três etapas distintas: elaboração do código fonte, compilação e linkedição.

          Os arquivos que contêm o código fonte devem ser gravados em texto ASCII puro, ou seja, não devem conter caracteres especiais de formatação. Podem ser produzidos em qualquer editor de texto que ofereça a possibilidade de salvar arquivos neste formato (geralmente chamado simplesmente de formato texto). Até o bloco de notas do Windows é um bom editor para este trabalho.

          É hábito dos programadores indicar a linguagem usada na extensão do arquivo fonte. Por exemplo, .asm para código fonte em Assembly, .c para a linguagem C, .cpp para a C++ ou .pas para Pascal (Delphi). O programa assembler (ou compilador) aceita qualquer extensão, contanto que o código fonte seja o que ele espera.

          Um arquivo .asm contém as instruções para o processador na forma de palavras e números. Estas instruções serão executadas pelo processador quando o programa rodar. Acontece que o processador não entende o código fonte: ele precisa ser transformado em "linguagem de máquina" e estar "arrumado" de acordo com um padrão que o sistema operacional consiga identificar. Esta transformação é feita em duas etapas: o compilador prepara o código fonte guardando o código fornecido no formato COFF (Common Object File Format) num arquivo objeto (.obj) e este, por sua vez, é transformado pelo linkeditor num arquivo executável (.exe) no formato PE (Portable Executable).

          Um arquivo objeto é criado pelo compilador ou assembler a partir de um arquivo .asm. O compilador pega as instruções do arquivo .asm, que estão em palavras e números, e as transforma no formato objeto COFF, que é o formato que o linker espera. O compilador concatena todo o código e os dados de instrução presentes no código fonte e os coloca em seções de código e de dados no arquivo .obj. A seção de código contém as instruções, os chamados códigos operacionais (opcodes) que o processador executa quando o programa é rodado. A seção de dados contém informações que serão mantidas na memória enquanto o programa estiver sendo executado.

          Não é possível rodar um arquivo .obj como um programa, por que não tem a forma final de um executável. O formato de um executável esperado pelo Windows é o formato PE. Algumas vezes o arquivo .obj é chamado de arquivo "binário" ou simplesmente "bin", o que se justifica porque ele não contém mais os mnemônicos, apenas números.

          O arquivo executável é o arquivo final que pode ser executado pelo sistema operacional. Geralmente está no formato PE, reconhecido pelo Unix, Linux, Windows, etc. O programa é produzido por um linker, o qual usa um ou mais arquivos .obj e .res e os combina num executável final. O formato PE também exige que o executável tenha um cabeçalho com informações a respeito do arquivo .exe. O linker fornece estas informações.

          Em resumo curto e grosseiro: O script é a “receita do programa” é criado num editor de texto simples. O programa assembler pega essa receita e a traduz pra linguagem da CPU (aquele monte de 1 e 0 que todo mundo já conhece). Para o sistema operacional entender esse “binarês” esse tem de ser organizado numa seqüência de execução própria então o programa linker “arruma” o negocio pro sistema operacional entender também.

          Fontes:
          Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
          Curso de Assembly ¦ Aula Nº 01 ¦
          Por: Frederico Pissarra
          Tutorial de Assembler de Adam Hyde 1.0
          University of Guadalajara
          Boa Tarde!

          Existe um site muito interessante que fabrica simuladores para microcontrador PIC. Eles fornece os manuais gratuitos : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
          Muito Bom !!!

          Comment


          • Font Size
            #6
            Caso continuem a discursão, saibam que estou ansioso para continuar lendo e compartilhando conhecimento! Abraços!

            Comment


            • Font Size
              #7
              muito bom post legal

              Comment


              • Font Size
                #8
                olá eu estou aprendendo a programar ja sei a nível intermediário pascal seu um pouco a mais do que o básico em delphi agora estou aprendendo C e vi nas video aula de C do prof. marco aurelio ele falando sobre assembly.
                fiz uma pesquisa na internet mas ainda não compeendi direito o assenbly ele só serve para criar drivers ou programas normais como as outras de alto nível. desculpem a minha ignorância se puderem me tirar essa dúvida eu agradeço.

                Comment


                • Font Size
                  #9
                  nunca programei e estou inciando no mundo do assembly, queria saber se em engenharia da computação se usa essa linguagem de baixo nivel, quero aprender a programar microcontroladores com assembly e alterar funções basicas dos mesmo...

                  Comment


                  • Font Size
                    #10
                    Postado Originalmente por williamsilvac Ver Post
                    nunca programei e estou inciando no mundo do assembly, queria saber se em engenharia da computação se usa essa linguagem de baixo nível, quero aprender a programar microcontroladores com assembly e alterar funções básicas dos mesmo...
                    sim em engenharia da computação você aprende assembly. até porque você vai programar processadores e não apenas microcontroladores. Eu fiz um tempo de engenharia da computação.
                    O melhor profissional não é aquele que sabe de tudo e sim aquele que nunca para de aprender.

                    Comment


                    • Font Size
                      #11
                      Arquivo para download

                      Olá boa tarde, o arquivos para download não existe mais.

                      Comment


                      • Font Size
                        #12
                        ajuda em programação

                        galera preciso de uma ajuda para o meu curso então se alguem poder me ajudar, agradeço..
                        preciso montar um fluxograma que some 130eh + 102ah e coloque no registrador a.
                        outro e montar um programa que coloque 55d no registrador a.
                        --------------
                        o que eu entendi no fluxograma fica assim
                        inicio/ax130eh/bx102ah/som ax+bx/,.....

                        Comment

                        X
                        Working...
                        X