Como começar a programar em Assembly

Conforme foi explicado no tutorial passado, sobre os
níveis de abstração da programação na computação, existem vários tipos de
Assembly pois essa linguagem trabalha diretamente no hardware, e como você
sabe, existem diversos tipos de hardwares (processadores, para sermos mais
específicos).

Portanto, é necessário que seja feita algumas escolhas.
Vamos escolher as mais comuns, abrangentes e de fácil
acesso possível.


Arquitetura usada: IA-32 (Intel Architecture 32-bit)

Vamos ensinar a linguagem Assembly para processadores da
Intel.




Embora os de 64 bits sejam os que estão crescendo e
ocupando seu lugar no mercado, para iniciar, ainda é mais indicado os estudos
pelos processadores de 32 bits.
Aqui você encontra uma lista de processadores da Intel:

Embora a tecnologia tenha avançado bastante, os conjuntos
de instruções não mudaram a ponto de ser necessário um novo aprendizado. Embora
os primeiros microprocessadores da Intel de 32 bits, tenham quase 30 anos, seu ‘jeitão’
continua o mesmo, e amplamente usado.
O que vêm mudando é capacidade e velocidade de
processamento dos mesmos.

“E se meu processador for diferente?”


É quase impossível não ter acesso a um computador com
processador Intel hoje em dia, mas se você não tiver, deve ou estudar por um
material mais específico para sua máquina ou estudar para os processadores da Intel,
pois embora seja diferente, a linguagem Assembly difere nos detalhes, sendo possível
o aprendizado da linguagem.

Esse tipo de arquitetura também foi implementada em
processadores da AMD, por exemplo.
Esses conjuntos de instruções de diversos processadores
diferentes obedecem a um conjunto de instruções da mesma arquitetura, que são
conhecidos como x86-32, i386 ou
simplesmente x86 (subtende-se que se
trata de 32 bits, pois os processadores de 16 bits estão em desuso).

Assembler: mnemônicos e opcode (operation code)

Como já dissemos, os computadores em si só ‘entendem’ e
obedecem uma série de comandos representados por números 0 e 1.
Obviamente, poderíamos escrever 0’s e 1’s diretamente
para nossas máquinas, mas o trabalho e as chances disso dar errado são
gigantescas.

Por isso, é comum trabalharmos com números hexadecimais
em Assembly (base numérica de 16 elementos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,
C, D, E e F). Porém, embora ajude bastante, ainda é algo extremamente
enfadonho.

Para superar essas barreiras, a linguagem de Assembly
possui palavras reservados chamada mnemônicos, que servem para o humano
programar com maior facilidade, sem ter que usar números o tempo inteiro.



























Por exemplo, até mesmo linguagem C podemos trabalhar com
endereços de memória.
Mas endereços são números (e geralmente grandes), então
para evitar decorar e escrever números, damos nomes as nossas variáveis e
passamos a tratar elas por esse nome, e não pelo seu endereço.

Então, o mnemônico é um nome que usamos para substituir
diversos comandos, é como se fosse um atalho: estamos escrevendo com nomes diferentes,
mas a ação é a mesma, pois é mais fácil tratar uma pessoa pelo seu nome do que
com seu número do RG.

Mas existe uma diferença entre o Assembly e as demais
linguagens: em Assembly, tudo é binário, inclusive as operações com os dados.
Podemos somar um número a outro usando apenas números
binários que representam as etapas da soma. Obviamente isso é extremamente
trabalhoso, e vamos usar o mnemônico add ao invés de números, para tratar
operações de adição.
Por exemplo, a instrução hexadecimal dessa operação é: 83060F000A

Ou seja, com os mnemônicos vamos dar nomes as operações,
dados e instruções, ao invés de trabalhar com os opcodes, que são
instruções diretas de máquinas.

Ou seja, escrevemos na forma ‘humana’(nomes) e ela é
transformada em forma de máquina (binários), e quem faz isso é um programa
chamado Assembler.
O Assembler vai transformar cada instrução feita na
linguagem Assembly para a linguagem de máquina.

Existem diversos tipos de Assemblers no mercado, mas
vamos usar o NASM (Netwide Assembler), pois ele é gratuito, atualizado e
está disponível tanto para as plataformas Linux como para Windows.

Para mais informações sobre como baixar o NASM, acesse
seu site oficial e instale o NASM para seu sistema, para que possa prosseguir
com nosso curso de Assembly: http://www.nasm.us/

Nenhum comentário:

Tutoriais de Programação