Instalando o NASM
Na última postagem mostrei como compilar programas em C utilizando o compilador nativo GCC. Hoje irei explicar um procedimento similar com a linguagem Assembly.
Nessa postagem irei me abster a compilação, até para as pessoas que já tem experiência em outros compiladores e plataformas poderem aproveitar da melhor forma possível.
Em primeiro lugar é necessário saber se o NASM está instalado da seguinte forma: Abra o terminal e digite "nasm -h" , se aparecer algo parecido com a imagem abaixo o nasm não está no seu PC. Caso não esteja basta apenas digitar "sudo apt install nasm" quando estiver com conexão na internet.
Segue o exemplo abaixo:
Como segunda alternativa, você pode baixar o NASM direto do
site.
Como instalar pelo arquivo do site?
1 - Baixe a versão que desejar
2 - Extraia o arquivo
3 - Abra o terminal na pasta que extraiu o arquivo
4 - Digite "./configure"
5 - Digite "make"
6 - Digite "make install"
Compilando um programa "Olá mundo!".
Agora sim vamos ao que interessa, para gerar um programa que diga "Olá mundo!" no terminal, primeiro deve-se baixar este
arquivo ou escrever o seguinte programa:
section .text
global main ;precisa ser declarado pro linker
main: ;ponto de entrada do linker
mov edx,len ;tamanho da mensagem
mov ecx,msg ; mensagem a ser gravada
mov ebx,1 ;saida em stdout
mov eax,4 ;numero da chamada do sistema
int 0x80 ; chamada do kernel
mov eax,1 ;chamada sys_exit
int 0x80
section .data
msg db 'Ola mundo!', 0xa ;string
len equ $ - msg ;tamanho da string
Salve o arquivo com o nome de "ola.asm", e abra o terminal onde salvou o arquivo. Feito isso abra o terminal na pasta (explique isso no post de como compilar programas em c no ubuntu) e digite "nasm -f elf ola.asm", isso vai gerar um arquivo objeto "ola.o".
Agora digite "ld -m elf_i386 -s -o ola ola.o", irá aparecer um aviso mostrando que o ponto de entrada não foi definido, mas não se procupe. Este passo deve gerar um executável.
Finalmente para executar basta digitar no terminal "./ola". Deverá aparecer um Ola mundo no terminal.
No
próximo post irei explicar a estrutura de um programa da linguagem assembly NASM para ubuntu.
Até breve!