Introdução à linguagem de montagem

A linguagem de montagem é bem parecida com os códigos do computador, utilizando também a codificação binária. Porém, ela depende do tipo de processador, não existindo, portanto, linguagem de montagem única. Assim, é preciso conhecer um mínimo do funcionamento de um processador para poder entender esse conceito. Como um processeador real possui diversos registros e instruções, aqui veremos apenas o que diz respeito a um processador simples.

Visão geral do processador

O processador está conectado à memória através de uma conexão chamada bus (ou barramento). Os dados de que o processador precisa ficam armazenados no que chamamos de registros. Cada um deles possui sua própria utilidade, conforme pode ser visto na tabela abaixo:

Nome do registro Tamanho
Acumulador AX 16 bits
Registro auxiliar básico BX 16 bits
Registro auxiliar (contador) CX 16 bits
Registro auxiliar de dados DX 16 bits
Ponteiro de instrução IP 16 bits
?ndice de fonte SI 16 bits
?ndice de destino DI 16 bits
Código de registro de segmentos CS 16 bits
Registro do segmento de dados DS 16 bits
Registro do segmento da pilha SS 16 bits
Registro do segmento adicional ES 16 bits
Ponteiro de pilha SP 16 bits
Ponteiro básico BP 16 bits

Os registros AX, BX, CX e DX são os mais usados para os cálculos:

  • O registro AX é usado para fazer cálculos aritméticos ou enviar um parâmetro a uma interrupção;
  • O registro BX é usado para fazer cálculos aritméticos ou cálculos sobre os endereços;
  • O registro CX é usado, geralmente, como contador de loops;
  • O registro DX é usado para armazenar os dados destinados às funções.

Trata-se da utilização básica desses registros, mas, na prática, eles podem ser usados para outros fins.

Esses registros podem ser usados por blocos de um byte (8 bits). A letra X de seus nomes é substituída pelo L (de low - baixo, em inglês - para indicar os bits mais leves) e H (de high - alto, em inglês - para indicar os bits mais pesados). Além disso, nas arquiteturas x86, esses registros se estendem a 32 bits e seu nome é precedido por um E (de extended - estendido, em inglês).

EAX (32 bits)
AX (16 bits)
AH (8 bits) AL (8 bits)

Por que utilizar a linguagem de montagem?

Para fazer o processador executar uma série de instruções, é preciso fornecer dados binários (muitas vezes representados em notação hexadecimal para facilitar a leitura). As funções em notação hexadecimal são difíceis de decorar e é por isso que a linguagem de montagem foi desenvolvida. Com ela, é possível anotar as instruções com nomes explícitos seguidos de parâmetros.

Veja o exemplo de um programa em código:

A1 01 10 03 06 01 12 A3 01 14

Trata-se da representação hexadecimal de um programa que soma os valores de duas casas da memória e armazena o resultado em uma terceira casa. É óbvio que este tipo de escrita é dificilmente legível por nós, humanos.

Assim, já que todas as instruções que o processador pode executar são associadas a um valor binário, utilizamos uma notação simbólica em forma de texto correspondente a cada função. Ou seja, o que chamamos de linguagem de montagem. No exemplo anterior, a sequência A1 01 10 significa copiar o conteúdo da memória no endereço 0110h no registo AX do processador. Isto se nota em linguagem de montagem:

MOV AX, [0110]

Todas as instruções têm uma notação simbólica associada (fornecida pelo fabricante do processador). O uso de linguagem de montagem consiste, portanto, em escrever, de forma simbólica, a sucessão de instruções precedidas por seus endereços a fim de identificar as instruções e passar facilmente de uma para outra. Essas instruções são armazenadas em um arquivo de texto (o arquivo fonte) que, graças a um programa específico (chamado de linguagem de montagem) será traduzido para o código de máquina.

O programa anterior escrito em linguagem de montagem daria isso:

Endereço da instrução Instrução em código de máquina Instrução em linguagem de montagem Comentários sobre a instrução
0100 A1 01 10 MOV AX, [0110] Copiar o conteúdo de 0110 no registro AX
0103 03 06 01 12 ADD AX, [0112] Adicionar o conteúdo de 0112 à AX e por o resultado no AX
0107 A3 01 14 MOV [0114], AX Armazenar AX no endereço da memória 0114

A escrita em linguagem de montagem, embora ainda difícil, é muito mais fácil de ser compreendida por um ser humano, porque, de modo geral, os nomes são mais fáceis de decorar do que números.

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
Este documento, intitulado 'Introdução à linguagem de montagem', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade