arquitetura de computadores nível da linguagem de montagem iii
TRANSCRIPT
Arquitetura de ComputadoresNí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