Faça uma pergunta »

Introdução à Linguagem de Montagem

Setembro 2015


Pré-requesitos necessários


A linguagem de montagem e bem parecida com o Código de máquina (ou seja, a linguagem que usa o computador : informações em binário, 0 ou 1). Depende muito do tipo de processador. Assim, não existe uma linguagem de montagem, mas, uma linguagem de montagem por tipo de processador. Assim sendo, é preciso conhecer um mínimo do funcionamento de um processador para poder abordar esta parte. Um processador real, no entanto, tem registros e instruções demais para ser estudado em detalhe. É por esta razão que só os registros e as instruções de um processador simples (Intel 80x86 16-bit) serão estudados nesta dica.

O processador, visão geral...


Um processador é conectado à memória através de uma conexão chamada bus. Os dados que o processador precisa ficam armazenados no que chamamos de registros (eles são anotados AX, BX, CX, DX,...). Cada um tem sua própria utilidade:


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 à 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.

Os registres AX, BX, CX e DX podem ser usados por blocos de um byte (8 bits), a letra X de seus nomes é substituída pelo L (como Low para indicar os bits mais leves) e H (para High para indicar os bits mais significativos). Além disso, nas arquiteturas x86 32 bits, esses registros se estenderam a 32 e viram seu nome precedido de um E (para Extended).


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, mas dá no mesmo...). Ora, as funções em notação hexadecimal são difíceis de decorar, é 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 máquina:
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; isto é o que chamamos de linguagem de montagem. No exemplo anterior a seqüência A1 01 10 significa copiar o conteúdo da memória no endereço 0110h <Ital /> 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 <ital> 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 um modo geral, os nomes são mais fáceis de decorar do que números.


Tradução feita por Lucia Maurity y Nouira

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Introducao-a-linguagem-de-montagem.pdf

Veja também

PowerPoint - Rearrange the order of your slides
Por deri58 em 31 de outubro de 2012
Linux: El comando fdisk
Por pablojorgesanguinetti1 em 20 de junho de 2013
Tagliare file audio in PowerPoint 2010
Por apfel9 em 20 de maio de 2015
Publicado por pintuda.
Este documento, intitulado « Introdução à Linguagem de Montagem »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.