A linguagem Assembly

Marco
3 min readMay 21, 2019

--

Assembly é uma linguagem de montagem. Ou seja, diferente da maioria das outras linguagens, que são compiladas e/ou interpretadas, programar em Assembly é escrever um código que é diretamente entendido pelo hardware. É uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos. É utilizada em geral para programação em baixo nível de máquina (mais próxima do nível do hardware), sendo que cada família de processadores (Ex. X86, ARM, SPARC, MIPS) possui sua própria linguagem assembly, já que cada processador possui seu próprio conjunto de instruções embutidas.

Histórico

A história das linguagens assembly está intimamente ligada à do programa armazenado no computador. Quando o EDSAC (Electronic Delay Storage Automatic Calculator) foi incorporado com um assembler, que usava a mnemónica (auxiliar de memória) em 1949. Stan Poley escreveu o Programa de Montagem Óptica Simbólica ou SOAP (Symbolic Optimal Assembly Program) para o computador IBM 650 em 1955.

Os microcomputadores, nos seus estágios iniciais, dependiam principalmente de linguagens assembly codificadas manualmente. Isso deveu-se à falta de compiladores de linguagem de alto nível destinados a serem usados em microcomputadores. Outra razão pode derivar do facto das linguagens assembly na época terem muitas vantagens, como um tamanho reduzido, alta velocidade, menos sobrecarga e alta confiabilidade.

Funcionamento

Sabemos que em níveis mais baixos, no metal, a máquina só entende os bits: valores lógicos 1 ou 0 (que se refere à tensão e voltagem), esse é código de máquina, o único que o hardware verdadeiramente entende e obedece.

Podemos programar escrevendo diretamente em binário ou no sistema hexadecimal. Mas seria algo extremamente complicado, confuso e as chances de errarmos seria bem maior.

É ai que entra o Assembly: é conjunto de notação (ou símbolos, conhecidos por mnemônicos) que os humanos entendem. É a linguagem de máquina.

Assim, em vez de um’s e zero’s, escrevemos comandos (ADD de adicionar, MOV de mover, por exemplo) e o Assembler vai montar nosso código, ou seja, substituir esses símbolos, que são uma linguagem que os humanos entendem, por seus respectivos códigos de máquina. E o hardware simplesmente segue esse conjunto de valores de 1 e 0. Porém, existem hardwares diferentes, com arquiteturas diferentes. Como Assembly fala com a máquina, para estruturas de hardware diferente, Assembly diferente.

Vantagens

  • Tamanho dos programas de Assembly são menores;
  • Assembly permite criar ações de alta complexidade, impossíveis ou difíceis de se realizar em linguagens de alto nível;
  • Conhecimento em Assembly possibilita a programação nos outros tipos de linguagem;
  • É um programa recomendável onde o tempo é um fator crítico como por exemplo: medições de tempo que exigem boa performance;
  • Se torna fácil de compreensão com algum conhecimento de conceitos de hardware e seus dialetos.

Desvantagens

  • Programas em Assembly consome muito tempo para o programador;
  • A linguagem não é portável. Ela é portável apenas dentro de uma família de processadores;
  • Como é uma linguagem específica para processadores de cada máquina, é necessário desenvolver um programa para cada máquina;
  • Não existe rotinas pré-definidas, o programador deverá desenvolver suas próprias rotinas;
  • A linguagem Assembly apresenta um número muito reduzido de instruções, do tipo, operações de movimentação de dados em memória, para registros e para memórias, e operações lógicas e aritméticas bem simples. Estas instruções são de baixa expressividade, isto é, elas são de baixo nível. O programador deve programar num nível de detalhamento muito maior para fazer a mesma coisa que em um programa escrito em linguagem de alto nível;
  • Como programador utiliza diretamente os recursos do processador e memória, ele deve conhecer muito bem a máquina onde ele está programando.

Abaixo temos um exemplo do famoso “Hello World” escrito para processadores Intel:

(Fonte: Google Images)

Referências bibliográficas:

Introdução às Linguagens de Programação/Assembly. Wikiversidade. Disponível em: <https://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0s_Linguagens_de_Programa%C3%A7%C3%A3o/Assembly>. Acesso em: 21 de mai. 2019

Introdução ao estudo do Assembly. Assembly Progressivo. Disponível em: <https://www.assemblyprogressivo.net/p/introducao-ao-estudo-do-assembly.html>. Acesso em: 21 de mai. 2019

Linguagem assembly. Knoow.net. Disponível em <http://knoow.net/ciencinformtelec/informatica/linguagem-assembly/>. Acesso em: 21 de mai. 2019.

--

--