Arquitetura de Computadores
Nível da linguagem de montagem
III
Introdução básica a linguagem
Assembly
• Será apresentado nesta aula uma introdução ao
assembly do processador 8088.
• Tal assembly é baseado no Microsoft MASM, porém
possui algumas modificações existentes no assembly
utilizado nos SOs baseados no UNIX.
• Para podermos entender a sintaxe da linguagem,
serão apresentados os seguintes aspectos do MASM:
▫
▫
▫
▫
▫
Organização da memória;
Registradores acessíveis;
Modos de endereçamento;
Instruções;
Pseudo-instruções;
Organização da memória
• A memória do 8088 consiste apenas em um
vetor de bytes de 8 bits endereçáveis.
• Essa memória é utilizada para armazenamento
de instruções, pilha e dados.
• O 8088 separa a memória em 4 segmentos de
65.536 bytes cada:
▫
▫
▫
▫
Código;
Dados;
Pilha;
Extra;
Registradores
• Está disponível para o programador assembly o
acesso a o seguinte grupo de registradores:
▫
▫
▫
▫
Registradores gerais;
Registradores de segmento;
Registradores de ponteiro e índice;
Registradores de flag.
Registradores gerais
Registradores gerais
• AX
▫ Acumulador.
▫ Comumente usado em operações matemáticas e de E/S.
• BX
▫ Base.
▫ Comumente usado como uma base ou registrador
apontador.
• CX
▫ Contador.
▫ Usado freqüentemente em loops.
• DX
▫ Deslocamento.
▫ Similar ao registrador de base.
Registradores gerais
• Estes registradores são definidos como registradores
de uso geral, pois podemos realmente armazenar
qualquer coisa que quisermos neles.
• São também registradores de 16 bits, o que significa
que podemos armazenar um inteiro positivo de 0 a
65535, ou um inteiro com sinal de -32768 to 32768.
• AX tem um intervalo de 0 até FFFF.
• Isto significa que existe um intervalo de 0 até FF
para AH e AL.
• Se tivermos de armazenar A61D em AX, AH conterá
A6, e AL conterá 1D.
Registradores de segmento
Registradores de segmento
• CS
▫ Segmento de código.
▫ O bloco de memória onde o código é armazenado.
• DS
▫ Segmento de dados.
▫ A área na memória onde os dados são armazenados.
▫ Durante operações de bloco, quando grandes blocos de dados são
movidos, este é o segmento a que a CPU comumente se refere.
• ES
▫ Segmento extra.
▫ Apenas outro segmento de dados, mas este é comumente usado
quando se quer acessar o vídeo.
• SS
▫ É o segmento de pilha, em que a CPU armazena endereços de
retorno de sub-rotinas.
Registradores de ponteiro e índice
Registradores de ponteiro e índice
• SI
▫ Índice de fonte.
▫ Freqüentemente usado para movimentações de blocos de
instruções.
▫ Este é um ponteiro que, com um segmento, geralmente DS, é
usado pela CPU para leitura.
• DI
▫ Índice de destino.
▫ Novamente, você o usará muito.
▫ Um outro ponteiro que, com um segmento, geralmente ES, é
usado para escrita pela CPU.
• BP
▫ Apontador da base, usado em conjunto com o segmento de pilha.
• SP
▫ Apontador da pilha, comumente usado com o segmento de pilha.
Registradores de flags
Registradores de flags
• Funcionam como sinalizadores.
• As flags são apenas um bit de memória e se localizam dentro do
processador.
• Como cada flag é apenas um bit, num dado momento elas só podem
ser 1 ou 0 ("setada" ou "zerada").
• Existem seis flags usadas para indicar o resultado de certas
instruções.
• Um uso comum das flags é o de desviar a execução para um ponto
em particular do código usando instruções de salto condicinal.
• Estas instruções farão o salto ou não dependendo do estado de uma
ou mais flags.
• Apenas cinco das flags podem ser usadas deste modo - zero, sinal,
carry, overflow e paridade.
• A sexta flag (carry auxiliar) e a sétima flag (flag de direção) são lidas
por outro tipo de instrução.
Registradores de flags
•
•
•
•
•
SF - Flag de Sinal;
ZF - Flag de Zero;
AF - Flag Auxiliar;
PF - Flag de Paridade.
CF - Flag de Carry (vai um).
Modos de endereçamento
Modos de endereçamento
Instruções
Instruções
Instruções
Pseudo instruções
Rastreador
Download

Arquitetura de Computadores