Entendendo Assembly: Um Guia Detalhado com Exemplos

Classificado em Computação

Escrito em em português com um tamanho de 2,65 KB.

Assembly

Assembly é a linguagem de programação. Significa linguagem de montagem. É considerada a linguagem de mais baixo nível.

Assembler

Assembler é o programa montador. Tem a função de compilar o programa escrito em Assembly. Exemplo: Debug, emu8086.

Linguagem de Máquina

Linguagem de máquina são códigos binários que o processador unicamente opera. É o código mais rapidamente executado pelo processador, pois dispensa decodificação.

Linguagem de Baixo Nível

Linguagem de baixo nível possuem recursos que facilitam a leitura das instruções, porém são limitadas e complexas. São rápidas, pois estão muito próximas (semelhantes) à linguagem de máquina.

Linguagem de Alto Nível

Linguagem de alto nível a codificação se aproxima da linguagem natural, sendo que uma única linha de instrução comporta muitas operações, se comparada à linguagem de baixo nível.

Exemplo de Código em Assembly

1 a 0100

2 0CA3.0100 MOV CX,0003

3 0CA3.0103 MOV AX,000A

4 0CA3.0106 MOV BX,CX

5 0CA3.0108 DIV BX

6 0CA3.010A LOOP 0106

Explicação do Código

0100: referencia o endereço 0100 da memória para iniciar a codificação e manter as instruções na memória (a partir do endereço 0100).

MOV CX, 0003: move o valor hexadecimal 3 para o registrador CX.

MOV AX, 000A: move o valor hexadecimal 000A (10, em decimal) para o registrador AX.

MOV BX,CX: move o conteúdo atual do registrador CX para BX

DIV BX: realiza a divisão AX/BX e coloca o quociente em AX

LOOP 0106: as instruções, a partir do endereço inicial 0106 são repetidas. CX é decrementado em uma unidade até que seja igual a 0 e, assim, o LOOP encerra.

Questão

Qual o último valor armazenado nos registradores AX, BX, CX e DX, após execução completa do código?

Resposta

AX = 0004
BX = 0001
CX = 0000
DX = 0000

Reprodução do Código em C

int AX = 10;
for (int i=3, i>0, i--)
AX = AX - i;

Análise do Código no Debug

a 0100
MOV AX,0002
MOV BX,0002
MUL BX
MOV BX,AX
MOV AX,0008
DIV BX

Correção de Erros

Linha 25: MUL BX
Linha 34: CMP AX,5d
Linha 44: CALL escreve

Resultado Final

Informando o resultado final de AX: AX = 6

Entradas relacionadas: