Arquitetura de Computadores Nível da linguagem de montagem III.

21
Arquitetura de Computadores Nível da linguagem de montagem III

Transcript of Arquitetura de Computadores Nível da linguagem de montagem III.

Page 1: Arquitetura de Computadores Nível da linguagem de montagem III.

Arquitetura de ComputadoresNível da linguagem de montagem III

Page 2: 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;

Page 3: Arquitetura de Computadores Nível da linguagem de montagem III.

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;

Page 4: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 5: Arquitetura de Computadores Nível da linguagem de montagem III.

Registradores gerais

Page 6: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 7: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 8: Arquitetura de Computadores Nível da linguagem de montagem III.

Registradores de segmento

Page 9: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 10: Arquitetura de Computadores Nível da linguagem de montagem III.

Registradores de ponteiro e índice

Page 11: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 12: Arquitetura de Computadores Nível da linguagem de montagem III.

Registradores de flags

Page 13: Arquitetura de Computadores Nível da linguagem de montagem III.

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.

Page 14: Arquitetura de Computadores Nível da linguagem de montagem III.

Registradores de flags

•SF - Flag de Sinal;•ZF - Flag de Zero;•AF - Flag Auxiliar;•PF - Flag de Paridade.•CF - Flag de Carry (vai um).

Page 15: Arquitetura de Computadores Nível da linguagem de montagem III.

Modos de endereçamento

Page 16: Arquitetura de Computadores Nível da linguagem de montagem III.

Modos de endereçamento

Page 17: Arquitetura de Computadores Nível da linguagem de montagem III.

Instruções

Page 18: Arquitetura de Computadores Nível da linguagem de montagem III.

Instruções

Page 19: Arquitetura de Computadores Nível da linguagem de montagem III.

Instruções

Page 20: Arquitetura de Computadores Nível da linguagem de montagem III.

Pseudo instruções

Page 21: Arquitetura de Computadores Nível da linguagem de montagem III.

Rastreador