Compilar um programa de linguagem de
montagem com o Nasm
Junho 2014
Para o Linux
Etapa n° 1. Criar um arquivo fonte
Etapa n° 2. Montar o arquivo fonte
Etapa n° 3. Criação do executável
Etapa n° 4. Execução do programa
Para o Windows
Etapa n° 1. Instalar os softwares necessários
Etapa n° 2. Criar um arquivo fonte
Etapa n° 3. Montar o arquivo fonte
Etapa n° 4. Criação e execução do programa
Nasm é um software Assembly (linguagem de montagem) livre, para arquitetura x86. É possível
encontrá-lo para vários Sistemas Operacionais como o Linux ou o Windows, por exemplo. Um
montador permite montar o código Assembly. (sic) Infelizmente, Assembly significa duas coisas
A linguagem "Assembly", que permite programar em linguagem de máquina usando
mnemônicos
O software que converterá o seu código em linguagem de máquina compreensível pelo
seu processador.
Esta dica não te ensinará a programar com o Nasm, mas a criar um executável para o Linux e o
Windows a partir de um código-fonte para o Nasm.
Para o Linux
Etapa n° 1. Criar um arquivo fonte
Você não precisa de um editor específico para criar um arquivo fonte para o NASM. Você
poderia usar um editor que suporte a sintaxe do montador, mas não há, a meu conhecimento,
quem suporte a sintaxe do Nasm. Então, você pode escolher o gedit, kwrite, xemacs, etc... Ao
salvar o seu arquivo fonte, dê-lhe a extensão .asm
Etapa n° 2. Montar o arquivo fonte
Para esta etapa, você precisará de um software Nasm instalado em sua máquina. Se você roda
no Debian ou Ubuntu, basta digitar o comando
sudo apt-get install nasm
Se você tiver outra distribuição Linux, você deverá usar o gerenciador de pacotes da sua
distribuição (por exemplo, urpmi, yum, emerge, etc) ou compilar o Nasm baixando o arquivo a
partir do site oficial. Passemos à montagem do seu arquivo fonte. Vá para a linha de comando
no diretório onde fica o arquivo fonte que chamaremos "test.asm", por exemplo. Veja a linha a
ser digitada:
nasm -f elf test.asm
Isso criará um arquivo chamado "test.o" no diretório atual. Esse arquivo ainda não é executável,
ele ainda é apenas um arquivo de objeto, ou seja, um arquivo que deve ser conectado com as
bibliotecas das quais ele depende, como por exemplo, a biblioteca padrão "libc".
Etapa n° 3. Criação do executável
Agora que já temos o nosso arquivo de objeto chamado "test.o", vamos criar o nosso executável.
Dois casos se apresentam aqui:
Seu programa começa com um procedimento chamado "_start". Isso significa que seu
programa tem seu próprio ponto de entrada, sem usar a função "main" (principal). Isso não
muda muita coisa, mas você precisará usar o comando "ld" para criar o executável:
ld test.o -o test
Seu programa começa com um procedimento chamado "main". Você precisará utilizar o
gcc para criar o seu executável:
gcc test.o -o test
Pronto, nosso executável foi criado, ele se chama "test" e se situa no diretório atual.
Etapa n° 4. Execução do programa
Para executar nosso programa chamado "test", basta digitar este comando:
./test
Você também pode usar um depurador para assistir à execução. Para fazê-lo, você pode utilizar
o gdb, que é usado em linha de comando. Se, no entanto, você quiser um depurador mais
visual, existem interfaces gráficas que utilizam o gdb em plano de fundo, como o "Insight".
Para o Windows
IMPORTANTE: No Windows, a convenção de chamada de configuração não é a mesma, a
função chamada deve limpar, ela mesma, a pilha. Da mesma forma, o "mains" não existe no
Windows, ele deve ser substituído pelo WinMain. Se o seu ponto de entrada for "_start" ou
"main", é preciso trocar para "_WinMain@16" e mudar o "ret" no final, deste procedimento de
entrada, para "ret 16". Exemplo de um arquivo fonte correto no Windows:
section .text
global _WinMain@16
_WinMain@16:
mov eax, 0
ret 16
Etapa n° 1. Instalar os softwares necessários
Vamos primeiro instalar o Nasm. Vá na seção de download do Kioskea ou no site oficial, na
seção de downloads (selecione a versão Win32 binários). Mantenha o seu arquivo em um canto,
ele será usado mais tarde. A etapa mais delicada vai ser a de instalar "MingW", que é um
ambiente de desenvolvimento grátis para o Windows. Neste endereço, escolha a última versão
do MinGW. Atualmente, é a versão 5.0.0. Se ele te propor atualizar a sua instalação desde o
início, diga não. Deixe todas as opções padrão selecionadas e, em seguida, espere o fim da
instalação. Agora, vamos inserir o Nasm no ambiente de desenvolvimento MingW, como
selvagens, mas com delicadeza. Descompacte o arquivo do Nasm, você deveria obter uma
pasta com, entre outras coisas, um arquivo chamado "nasm.exe" Copie este arquivo no diretório
C:\MinGW\bin
Etapa n° 2. Criar um arquivo fonte
Como para o Linux, não é preciso usar um editor específico para criar um arquivo fonte para o
NASM. Você pode usar o bloco de notas por exemplo, mas cuidado, o bloco de notas do
Windows tem uma tendência a acrescentar a extensão .txt aos arquivos que ele cria. Para evitar
qualquer ambiguidade, recomendo exibir as extensões dos seus arquivos. Evite, em todos os
casos, processamentos de texto como o Word ou o WordPad, que podem salvar o seu arquivo
com um formato inadequado. Se quiser, utilize um editor que use a sintaxe Nasm como
NasmEdit IDE (gratuito). Em todo caso, sugiro que você dê a extensão .asm ao seu arquivo
fonte.
Etapa n° 3. Montar o arquivo fonte
Abra o interpretador de comandos do Windows (digite cmd.exe em "Executar" do menu "Iniciar"
ou, diretamente, "cmd" na barra de "busca" do logotipo do Windows no Vista. Com este
interpretador de comandos, você deverá ir para a pasta contendo o seu arquivo fonte com o
comando "cd". Assim que estiver nesse diretório, monte o seu arquivo fonte (vamos chamá-lo de
"test.asm") com este comando:
nasm -f win32 test.asm -o test.o
Agora, você tem um arquivo de objeto que ainda não é executável, mas que o dera em breve.
Passemos à última etapa.
Etapa n° 4. Criação e execução do programa
Ainda em sua janela de comando, digite um último comando passado para criar o executável:
ld test.o -o test.exe
Se você tiver um problema com esse comando, talvez você tenha esquecido de ler o ponto
importante que citei acima, no início da seção "Para o Windows". Para testar o seu executável,
basta digitar "test" na janela de comando. Se você quiser um depurador para ver mais de perto o
que está acontecendo, use o OllyDbg. É um excelente depurador. Tradução feita por Lucia
Maurity y Nouira
Este documento, intitulado « Compilar um programa de linguagem de montagem com o Nasm »a partir de Kioskea
(pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta
página, nas condições estipuladas pela licença, como esta nota aparece claramente.
F: http://ec.ccm2.net//br.ccm.net/faq/pdf/compilar-um-programa-de-linguagem-de-montagem-com-o-nasm-8005-li9jbv.pdf