3
Obrigado

Algumas palavras de agradecimento nunca são demais.

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 registroTamanho
Acumulador AX16 bits
Registro auxiliar básico BX16 bits
Registro auxiliar (contador) CX16 bits
Registro auxiliar de dados DX16 bits
Ponteiro de instrução IP16 bits
?ndice de fonte SI16 bits
?ndice de destino DI16 bits
Código de registro de segmentos CS16 bits
Registro do segmento de dados DS16 bits
Registro do segmento da pilha SS16 bits
Registro do segmento adicional ES16 bits
Ponteiro de pilha SP16 bits
Ponteiro básico BP16 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çãoInstrução em código de máquina Instrução em linguagem de montagemComentários sobre a instrução
0100A1 01 10 MOV AX, [0110]Copiar o conteúdo de 0110 no registro AX
010303 06 01 12ADD AX, [0112]Adicionar o conteúdo de 0112 à AX e por o resultado no AX
0107A3 01 14MOV [0114], AXArmazenar 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.
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.

0 Comentário