arquitetura de computadores nível da linguagem de montagem iii

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

Upload: internet

Post on 22-Apr-2015

115 views

Category:

Documents


0 download

TRANSCRIPT

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