Como criar um programa simples que irá escrever “Hello World” na tela em Assembly

asm

Fala galera, tudo beleza?

Aqui que fala é Giovani e vamos a um novo intere4ssante post!

Hoje há muitas ferramentas, IDEs e bibliotecas que agilizam muito a vida do programador. Mas e como era antigamente, quando tudo era “mato”?

Escrever programas era bem mais complexo, e exibia muito conhecimento de baixo nível do programador.

Linguagens como a Assembly que é uma linguagem de baixo nível, eram as mais comuns, suas instruções são as mesmas instruções do código de máquina.

Legal e para criar um “Hello World”, como seria?

 

Vejamos um exemplo para termos uma noção

section .data
    msg db 'Hello World!', 0

section .text
    global _start

_start:
    ; Write the string to stdout
    mov eax, 4 ; System call number for 'write'
    mov ebx, 1 ; File descriptor for stdout
    mov ecx, msg ; Address of the string to write
    mov edx, 13 ; Length of the string
    int 0x80 ; Call the kernel

    ; Exit the program
    mov eax, 1 ; System call number for 'exit'
    xor ebx, ebx ; Exit code of 0
    int 0x80 ; Call the kernel

 

Parece complicado? Vamos a explicação:

A primeira seção, .data, declara uma única variável chamada msg e a define igual à string “Hello World!” com um terminador nulo no final (o 0).

A segunda seção, .text, é onde a lógica do programa é definida. A primeira linha define um rótulo global chamado _start, que é o ponto de entrada do programa.

As próximas quatro linhas usam a instrução mov para definir os valores apropriados nos registradores necessários para chamar a chamada do sistema de gravação. eax é definido como o número de chamada do sistema para gravação, ebx é definido como o descritor de arquivo para stdout, ecx é definido como o endereço da string a ser gravada e edx é definido como o comprimento da string.

A instrução int é então usada para chamar o kernel, que executará a chamada do sistema de gravação e enviará a string para o console.

Após a string ter sido gravada no console, o programa usa a instrução mov novamente para definir os valores apropriados nos registradores necessários para chamar a chamada de sistema de saída. eax é definido como o número de chamada do sistema para sair, ebx é definido como o código de saída 0 e int é usado para chamar o kernel novamente e sair do programa.

 

Ufa! Quanto Código!

 

Isso é para ter uma noção como pode ser trabalhoso criar tudo desde o nível mais baixo, mas claro que neste nível as possibilidades de uso do hardwares são incríveis.

Conhecer a fundo o Assembly pode ser um grande diferencial, mas claro que o desafio é grande.

Certo pessoal? Eu espero que isso ajude a conhecer um pouco mais do mundo da programação, um abraço e até o próximo post. Valeu!

 

Fonte da imagem: https://freedev.medium.com/

  • Publicado por Giovani Da Cruz
  • 153 views
  • 0 comentarios
  • 6 de abril de 2023

 

Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados a Categoria Assembly

Continue aprendendo

Aumente o seu conhecimento