Primeiro programa em Assembly - Como fazer o Hello World (Olá Mundo)

Agora que você já sabe instalar o NASM, vamos ensinar como criar seu programa em Assembly.

É um texto com o código em Assembly para você ir se familiarizando.
Tenha em mente que este é apenas o primeiro passo para programar nessa linguagem.
Nos próximos tutoriais vamos ensinar os procedimentos para executar um programa em Assembly, bem como explicar detalhadamente o significado de cada comando nessa verdadeira sopa de letrinhas.

Não se assuste, em breve você entenderá tudo perfeitamente e dominará esse bela e poderosa linguagem de programação.


Código do Hello World em Assembly

Crie um arquivo de texto com o nome "hello.asm" e escreve o seguinte código dentro dele:

section .data
msg     db      'Como programar em Assembly - Curso Assembly Progressivo', 0AH
len     equ     $-msg
 
section .text
global  _start
_start: mov     edx, len
        mov     ecx, msg
        mov     ebx, 1
        mov     eax, 4
        int     80h
 
        mov     ebx, 0
        mov     eax, 1
        int     80h


Sim, todas essas linhas de código são para exibir a mensagem "Como programar em Assembly - Curso Assembly Progressivo".

Esse, porém é um código 'humano', pois usamos mnemônicos, que são símbolos e códigos para que nós possamos entender.
Obviamente, os computadores não leem como as pessoas, eles simplesmente obedece aos comandos em binários.

E é isso que vamos ensinar no próximo tutorial, sobre como criar os object files (código objeto) e linkar arquivos em Assembly, nós vamos ensinar como transformar esse código humano em código binário.
Vamos montar (e não compilar) tal código, que é o que seu computador realmente vai entender e obedecer.

O código de máquina será o código objeto, que são arquivos com extensão .o
Em seguida, o próximo passo é reunir todos esses object files, bem como códigos que usamos de outras bibliotecas, e criar um executável. Ou seja, vamos linkar, agrupar tudo que é necessário para rodar o programa...


11 comentários:

Anônimo disse...

Eu tentei estalar o nasm e não deu certo . Mim ajuda sou louco por esse mundo e agora quero muito aprender.

Li outros tutorias e ele falom jne, je, hexadecimal. Nao entendi nada.

Anônimo disse...

parabéns tá bem legal.
o que são numeros hexadecimal?

Anônimo disse...

são sentenças onde possuem números e letras.

Anônimo disse...

Desculpa, mas como uma pessoa que está louca por "esse mundo', ou seja, pelo que entendi o que programação e visita um site que fala sobre assembly, não sabe o que são hexadecimais?
antes de fazer uma pergunta tão idiota, pq nao procura no google antes?

Hexadecimais: números que estão na base 16
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
.
.
.

TY disse...

Essa pessoa faz um comentário acima, metendo o pau na pessoa do primeiro comentário... E ele encana onde não explica. Pois bem.

Números Hexadecimais são números baseados em 16 caracteres para sua representação numérica. Ou seja, apenas 16 "números", são eles:

0 1 2 3 4 5 6 7

8 9 A B C D E F

Essa sequência numérica vai de 0 a F.

--------------------------

Nos decimais os números vão de 0 a 9.

0 1 2 3 4 5 6 7 8 9

E assim como nos números decimais podemos organizar os números em qualquer sequência (por exemplo 2014 = 7DE em hexadecimal), nos Hexadeciamais, tbm podemos, 9FA4 ( 40868 em decimais ). Existem outras duas bases decimais que conheço, a Binária ( 00110101 ), que trabalham com apenas dois números, zeros e uns, e a Octal, q vai de 0 a 7, trabalham com oito números. É isso aí. Só não pude ser mais completo por falta de tempo, estou de saída, desculpe por isso, mas na net tem bastante material sobre isso.

O PROBLEMA DO BRASILEIRO, É QUE ELE BANALIZA A IGNORÂNCIA, GOSTA DE SE FAZER PARECER MELHOR. NÃO ENSINA, POVO QUE DESCONHECE A GENTILEZA E O PREZO PELO BEM ESTAR DO PRÓXIMO. SABE? ENTÃO ENSINE, NÃO CONDENE O NÃO SABER. UMA VEZ TODOS FOMOS LEIGOS!!!

João Paulo disse...

TY, receba meus sinceros cumprimentos.

O rapaz agrediu gratuitamente um colega que está com dúvidas sinceras. Quem zomba e não explica, duvido muito que de fato saiba.

Anônimo disse...

Hexadecimal para em F pois quando se fala 10 tem repetição de número.

Jonathan disse...

"Esse, porém é um código 'humano', pois usamos mnemônicos, que são símbolos e códigos para que nós possamos entender."

Nossa, quanta humanidade nesse código. Que código fácil de entender é esse de 15 linhas? eu faço isso em 1 em ruby e consigo entender, Assembly parece um ritual pra invocar um ET.

Assembly Progressivo disse...

Jonathan,

Experimente fazer isso em Ruby sem usar um sistema operacional.

Tente fazer isso em Ruby sem usar um compilador.

Tente fazer isso em Ruby, com uma performance que seja pelo menos 1% do Assembly, que use pelo menos 10% da memória que o Assembly usar,

Experimente fazer algo em um hardware que fornece apenas alguns kb de memória (4 ou 8), em Ruby.

O fato de você ver uma mensagem na tela usando uma linha de Ruby não significa que é a mesma coisa, ou melhor, que ver o mesmo resultado usando Assembly.

Poderia continuar por horas e horas citando motivos de se fazer isso em Assembly, e apenas em Assembly.

Assembly Progressivo disse...

Jonathan,

Experimente fazer isso em Ruby sem usar um sistema operacional.

Tente fazer isso em Ruby sem usar um compilador.

Tente fazer isso em Ruby, com uma performance que seja pelo menos 1% do Assembly, que use pelo menos 10% da memória que o Assembly usar,

Experimente fazer algo em um hardware que fornece apenas alguns kb de memória (4 ou 8), em Ruby.

O fato de você ver uma mensagem na tela usando uma linha de Ruby não significa que é a mesma coisa, ou melhor, que ver o mesmo resultado usando Assembly.

Poderia continuar por horas e horas citando motivos de se fazer isso em Assembly, e apenas em Assembly.

João Paulo disse...

Johnatan,

Experimente programar atuadores de válvulas automáticas em Ruby.
Já pensou também se as ordens de bid/ask entre um banco na NYSE e outro na Bolsa de Tóquio fossem programadas em Ruby?