40
1 Microprocessadores Prof. Arthur Braga Tópicos n Arquitetura Básica 8086/8088 n Registradores e Flags do 8086 ¤ Registradores de Finalidade Geral. ¤ Registradores Apontadores de Pilha. ¤ Registradores de Indexação. ¤ Registradores de Segmento. ¤ Registrador de Flags. ¤ Ponteiro de Instrução. n Emulando o 8086 n Modos de Endereçamento do 8086 n Acesso à Memória no 8086 ¤ Ciclos de Barramento do 8086 n Modos Mínimo e Máximo

05 8086 Arquitetura Básica

Embed Size (px)

DESCRIPTION

as

Citation preview

1

Microprocessadores

Prof. Arthur Braga

Tópicosn Arquitetura Básica 8086/8088

n Registradores e Flags do 8086¨ Registradores de Finalidade Geral.

¨ Registradores Apontadores de Pilha.

¨ Registradores de Indexação.

¨ Registradores de Segmento.

¨ Registrador de Flags.

¨ Ponteiro de Instrução.

n Emulando o 8086n Modos de Endereçamento do 8086

n Acesso à Memória no 8086¨ Ciclos de Barramento do 8086

n Modos Mínimo e Máximo

2

MICROPROCESSADOR ?

CONCEITOS BÁSICOS

Unidades Básicas de um Microprocessador Genérico:

Unidade Lógico Aritmética (ULA): responsável pela realização das operaçõeslógicas e aritméticas.

Unidade de Controle (UC): responsável pela decodificação e execução dasinstruções, fornecendo os sinais de temporização adequados para as diversaspartes do processador e do próprio computador.

Registradores: memórias internas para armazenamento de informação binária(dados, endereços e instruções).

3

CONCEITOS BÁSICOS

Assembly é a linguagem que possui instruções diretamente associadas acódigos da linguagem de máquina, e que permite indicar ao processador asações a serem realizadas (programa). Exemplo: o código 03h em linguagemde máquina faz com que o processador some um determinado operando com oacumulador, e guarde o resultado no próprio acumulador. Já a instruçãoADD AX,BX em assembly implementa uma das referidas somas.

Barramento é um conjunto de condutores por onde trafegam sinais utilizadospara efetivar a comunicação entre o processador e um determinado circuito,como uma memória. Se estes sinais forem os próprios pinos, utiliza-se adenominação de barramento local.

Ciclo de barramento é a sequência com que são gerados os diversos sinaisnecessários para a CPU acessar a memória e os periféricos. Como o 8086trabalha com barramento síncrono, existe um diagrama de tempo marcando acadência desses sinais.

CONCEITOS BÁSICOS

Arquitetura de von Neumann

4

CONCEITOS BÁSICOS

Arquitetura de Harvard

As CPUS 8086/8088

5

As CPUs 8086 / 8088

As CPUs 8086 / 8088

Estrutura das CPUs 8086 / 8088

Característica Comum: endereçamento a 20 bits,podendo acessar 1 Mbyte de memória.

(1978)

(1979)

6

As CPUs 8086 / 8088

≈ 29.000 transístores

As CPUs 8086 / 8088

mínimo

?

7

A CPU é dividida em duas unidades independentes:

As CPUs 8086 / 8088

• EU – Unidade deExecução –responsável peladecodificação eexecução dasinstruções.

• BIU – Unidade deInterface com oBarramento –responsável pelainterface com obarramentoexterno.

Ciclos de busca e execução:

As CPUs 8086 / 8088• Toda vez que a EU está pronta para executar uma nova instrução, ela

retira um código do topo da Fila de Códigos na BIU.

• Se a Fila de Códigos está vazia, então a BIU executa um ciclo de busca(“fetch”) e a EU é obrigada a aguardar esse ciclo.

• Raramente a Fila de Códigos estará vazia.

Se memória ou I/O (E/S)devem ser acessadosdurante a execução deuma instrução, então a EUinforma à BIU sobre essanecessidade – que seráatendida com a geraçãode ciclos de barramentopela BIU.

Quais são os registradores do 8086 ?

8

As CPUs 8086 / 8088

REGISTRADORESREGISTRADORES

REGISTRADOR

Registradores e Flags do 8086

9

Registradores e Flags no 8086:

q São 4 registradores de finalidade geral (16 bits) (AX,BX,CX e DX).

q São 2 registradores apontadores de pilha (16 bits) (SP e BP).

q São 2 registradores de indexação (16 bits) (SI e DI).

q São 4 registradores de segmento (16 bits) (CS, DS, SS e ES).

q Há 1 registrador de estado (flags) (16 bits) (PSW).

q E 1 ponteiro de instrução (16 bits) (IP).

Registradores e Flags do 8086

Como são utilizados os registradores ?

Registradores e Flags do 8086

Registradores de Finalidade Geral

Cada registrador de finalidade geral (AX , BX , CX e DX)pode ser acessado como um registrador de 16 bits oucomo dois registradores de 8 bits:

AX = AH:AL , BX = BH:BL , CX = CH:CL e DX = DH:DL

Todos os registradores de finalidade geral podem serusados como operandos em operações lógicas earitméticas, de 8 ou 16 bits.

10

Registradores e Flags do 8086

Registradores de Finalidade Geral

AX – Acumulador Primário:q Todas as operações de I/O são realizadas com o uso auxiliar desteregistrador.

qOperações que utilizam dados imediatos necessitam de menos memóriaquando feitas através de AX.

qAlgumas operações com strings e instruções aritméticas pedem o usodeste registrador.

qGeralmente, é usado pelos compiladores para guardar valoresretornados de subrotinas.

Registradores e Flags do 8086

Registradores de Finalidade Geral

BX – Registrador Base:q É o único registrador de finalidade geral que pode ser utilizado nocálculo de endereços de memória.

qTodas as referências à memória que usam esse registrador no cálculode endereço consideram segmento de dados como padrão.

11

Registradores e Flags do 8086

Registradores de Finalidade Geral

CX – Contador:q É decrementado durante as operações com loops e strings.

qTipicamente, é usado para controlar o número de repetições de umainstrução antecedida pelo prefixo REP.

qTambém é usado para controlar rotações e deslocamentos de váriosbits.

Registradores e Flags do 8086

Registradores de Finalidade Geral

DX – Endereçador de I/O e Registrador de Dados:q Foi-lhe dado o nome de registrador de dados principalmente por forçados mnemônicos.

qEm algumas operações de I/O, fornece o endereço, coisa que nenhumoutro registrador pode fazer.

qTambém utilizado em operações aritméticas, incluindo multiplicação edivisão.

qPode ser usado por compiladores, juntamente com AX, para guardarvalores retornados de subrotinas.

12

Registradores e Flags do 8086

Registradores de Finalidade Geral

Operações podem ser realizadas apenas em partes de 8bits desses registradores, afetando o conjunto de 16 bits:

mov AX, 2155hmov AH, 43h

AX = 2155hAX = 4355h

Operações que trabalhem apenas com uma parte de 8 bits,não afetarão a outra parte do registrador de 16 bits:

mov DX, 21FFhinc DL

DX = 21FFhDX = 2100h

Registradores e Flags do 8086

Registradores Apontadores de Pilha

A pilha é particularmente importante no que diz respeito ao uso desubrotinas. Quando uma instrução chama uma subrotina, é precisomarcar qual instrução do programa deve ser executada após o términoda subrotina.

Outra aplicação para a pilha é a possibilidade de alocação dinâmicade variáveis. As variáveis alocadas na pilha são acessadas com oauxílio de BP.

Os registradores SP e BP são usados para acessar dados nosegmento de pilha.

Os registradores SP e BP também podem ser usados como operandosem operações lógicas e aritméticas de 16 bits.

13

SP – Ponteiro de Pilha (“Stack Pointer”):q Utilizado no cálculo do endereço do topo da pilha, controlando a

alocação dinâmica de variáveis e o empilhamento de endereços deretorno de subrotinas.qTodas as referências ao SP, por definição, relaciona-se ao segmento de

pilha.

Registradores e Flags do 8086

Registradores Apontadores de Pilha

BP – Ponteiro de Base:q Permite acessar dados alocados na pilha.qTipicamente é usado para acessar parâmetros que foram passados via

pilha para uma determinada subrotina.

Registradores e Flags do 8086

Registradores de Indexação

Os registradores de Indexação (SI e DI):q São usados para acessar dados na memória de dados.qSão extensivamente usados nas operações com strings.qPodem ser usados como operandos em todas as operações lógicas e

aritméticas de 16 bits.

14

Registradores e Flags do 8086

Registradores de Segmento

Quando projetou o 8086, a Intel se preocupou em facilitar o acesso e ogerenciamento de memória desta CPU que poderia chegar a 1 MByte.Por isso, decidiu particionar essa memória em segmentos de 64 K (16bits) endereços. Assim, todo acesso à memória do 8086 é feito atravésde segmentos de 64 K endereços.

Os Registradores de Segmento funcionam como selecionadoresdestas faixas de endereçamento. Cada registrador especifica o iníciode uma faixa de 64 K (65.536) de endereços consecutivos.

O acesso a endereços dentro de um segmento é feito através de umdeslocamento (offset) a partir do endereço-base.

São 4 tipos de segmentos considerados: CÓDIGO, DADOS, PILHA eEXTRA.

Registradores e Flags do 8086

Registradores de Segmento

CS – Segmento de Código (“Code Segment”):q Todos os acessos ao código de programa tomam este registrador

como seletor. O “offset” é o registrador IP.

DS – Segmento de Dados (“Data Segment”):q Todo acesso a dados usa este registrador como referência, com 3

exceções:q Endereços para acessos à pilha usam o registrador SS.q Endereços para acesso a dados que usam o BP são calculados a

partir de SS.qOperações com strings, que usam DI no cálculo do endereço, são

feitas usando ES.

15

Registradores e Flags do 8086

Registradores de Segmento

SS – Segmento de Pilha (“Stack Segment”):q Todos os acessos a dados que utilizam os registradores SP ou BP

tomam como referência este registrador.

ES – Segmento Extra (“Extra Segment”):q Operações com strings que usam DI para calcular o endereço são

feitas usando o registrador ES para definir o segmento.

Registradores e Flags do 8086

Palavra de Estado do Programa (PSW) ou Registrador de Flags

C – Carry – reflete o “vai um” do bit mais significativo em operaçõesaritméticas (8 ou 16 bits). Também modificado por algumas instruçõesde rotação e deslocamento.

P – Paridade – indica a paridade do byte menos significativo doresultado de uma operação. (P=1, número par de “1s” no byte menossignificativo; P=0, caso contrário).

16

Registradores e Flags do 8086

A – Carry Auxiliar – reflete o “vai um” do bit 3 em uma operação de8 bits.

Z – Flag Zero – indica se uma operação teve zero como resultado(Z=1, se o resultado da operação for zero; Z=0, caso contrário).

Palavra de Estado do Programa (PSW) ou Registrador de Flags

Registradores e Flags do 8086

S – Flag de Sinal – é igual ao bit de mais alta ordem do resultadode uma operação aritmética (S=0, resultado positivo; S=1, casocontrário).

T – Armadilha (“Trap”) – para a depuração de programas – este bitcoloca o 8086 no modo passo-a-passo, de forma a invocar umaexceção após a execução de cada instrução.

Palavra de Estado do Programa (PSW) ou Registrador de Flags

17

Registradores e Flags do 8086

D – Direção – determina se as operações com strings vãoincrementar ou decrementar os registradores de indexação SI e DI(D=1, SI e DI serão decrementados, a string será acessada de seuendereço mais alto para o mais baixo; D=0, ocorre o contrário).

I – Interrupção – habilita ou desabilita a interrupção pedida pelo pinoINTR (I=1, interrupção habilitada).

Palavra de Estado do Programa (PSW) ou Registrador de Flags

O – Overflow – indica um overflow de magnitude, em aritméticabinária com sinal.

Registradores e Flags do 8086

Palavra de Estado do Programa (PSW) ou Registrador de Flags

18

Registradores e Flags do 8086

Ponteiro de Instrução

O Ponteiro de Instrução (IP) e o registrador CS, juntos,são responsáveis por marcar o endereço da próximainstrução a ser executada.

Como começar o estudo do uso dos registradores

e Flags do 8086 ?

Emulando o 8086

www.emu8086.com

registradores

flags

19

Emulando o 8086

www.emu8086.com

Emulando o 8086

www.emu8086.com

20

Modos de Endereçamento

Modos de EndereçamentoGeração de endereço físico

Como o Processador indica qual posição de Memória ou Periférico

deseja ler/escrever ?

ENDEREÇO FÍSICOCódigo de 20 bits

21

Tipo de referência à memória

Segmento Base padrão

Segmento Base alternativo

Offset

Busca de instrução CS - IP

Operação na pilha SS - SP

Variáveis DS CS, SS, ES *

Fonte para string DS CS, SS, ES SI

Destino para string ES - DI

BP como registro base SS CS, DS, ES *

BX como registro base DS CS, SS, ES *

Registradores Internos – 16 bits Endereço Físico – 20 bitsA geração do endereço físico envolve a combinação de um valor

“offset” (desvio ou deslocamento) de 16 bits contido em um registrador ouexplicitado, com um valor base (seletor) em um Registrador de Segmento(16 bits).

base (SELETOR / Reg. Segmento) + offset = endereço físico

Modos de EndereçamentoGeração de endereço físico

?

Geração de endereço físico

Modos de Endereçamento

Offset: 0 0 0 0 YYYY YYYY YYYY YYYY (deslocamento)

End. Físico: ZZZZ ZZZZ ZZZZ ZZZZ YYYY (20 bits)

Deslocamento de 4 bits a esquerda

Seletor: XXXX XXXX XXXX XXXXSeletor: XXXX XXXX XXXX XXXX 0 0 0 0 início do segmento

NOTAÇÃO PARA O ENDEREÇO FÍSICO DE UM BYTE:

Seletor : Offset

Registrador de Segmento Registrador ou Valor

22

A maioria das variáveis (operandos da memória) normalmente estálocalizada no segmento de dados corrente, embora um programa possainstruir a BIU para acessar uma variável em qualquer um dos segmentosendereçáveis.

O valor “offset” de uma variável na memória é calculado pelo EU. Estevalor é baseado no modo de endereçamento especificado pela instrução. Oresultado é denominado Endereço Efetivo (EA) do operando.

Modos de EndereçamentoGeração de endereço físico

Modos de EndereçamentoGeração de endereço físico

O 8086 pode buscar na memória:

1) INSTRUÇÕES – há modos de endereçamento damemória de programa.

2) DADOS – há modos de endereçamento da memóriade dados.

23

1) Modos de endereçamento da memória de programaSempre a busca de instrução é feita com CS+IP. Porém, instruções de jump e call

podem modificar o conteúdo do IP de três maneiras:a) Endereçamento relativo (programa)

• Um deslocamento de 8 ou 16 bits, especificado de forma imediata éadicionado ao IP (adição binária com sinal);

• Como não altera CS, o salto é intra-segmento (limitado em 64k).

b) Endereçamento direto (programa)• Os valores de IP ou de IP e CS são especificados na instrução de forma

imediata;

• Esta operação é classificada como salto near ou salto far.

Near – altera IP (intrasegmento);Far – altera IP e CS (intersegmento).

c) Endereçamento indireto (programa)• O endereço para um jump ou call é passado de forma indireta (ex. através

do conteúdo de um registrador ou de uma posição de memória) Podeocorrer de duas formas: (i) intrasegmento (modifica apenas IP) ou (ii)intersegmento (modifica IP e CS).

Modos de Endereçamento

Modos de EndereçamentoGeração de endereço físico

O 8086 pode buscar na memória:

1) INSTRUÇÕES – há modos de endereçamento damemória de programa.

2) DADOS – há modos de endereçamento da memóriade dados.

24

2) Modos de endereçamento da memória de dados

Seis modos considerados: Imediato, Direto, Indexado, Implicado,Relativo à Base ou Pilha.

a) Endereçamento imediato – Nesta forma de endereçamento, osoperandos estão definidos nos bytes seguintes ao código da operação. Odado a ser operado é obtido do segmento de código.

Modos de Endereçamento

?

2) Modos de endereçamento da memória de dados

b) Endereçamento direto – Os dois bytes que se seguem ao código dainstrução constituem o offset do endereço (o seletor é DS) físico do dado aser acessado.

Obs: o dado a ser operado é obtido do segmento de dados.

Modos de Endereçamento

25

2) Modos de endereçamento da memória de dados

c) Endereçamento direto, indexado – É obtido com o uso de SI (no segmento de dados) ou DI (no segmento extra) como Indexador.

d) Endereçamento Implicado – Este modo é uma degeneração doanterior. É obtido quando não se especifica qualquer deslocamento.

Modos de Endereçamento

2) Modos de endereçamento da memória de dados

e) Endereçamento relativo à base – Neste modo, é utilizado umregistrador (BX ou BP) para fornecer todos os modos de endereçamento jádescritos, com exceção do imediato.

De forma simplificada, basta somar BX ou BP aos modos anteriores.

Existe duas maneiras de implementação:

• Relativo à memória de dados, neste caso, usam-se BX e DS;

• Relativo à pilha, usam-se BP e SS.

Exemplos:

Modos de Endereçamento

26

2) Modos de endereçamento da memória de dados

e) Endereçamento relativo à base

Exemplos:

Modos de Endereçamento

2) Modos de endereçamento da memória de dados

f) Endereçamento relativo à pilha – Todos os endereçamentos relativosà base também servem para a pilha, basta substituir BX por BP e, comisso, usa-se SS como segmento.

Exemplos:

Modos de Endereçamento

27

2) Modos de endereçamento da memória de dados

Modos de Endereçamento

Selecione view

Selecione memory

EXERCÍCIO PARA CASA: Localize na memória dados armazenados comos modos de endereçamento comentados.

Acesso à Memória no 8086

28

CICLOS DE BARRAMENTO• Um processador realiza ciclos de barramento sempre que for à memória

buscar códigos de instruções para executar. Neste caso o ciclo será deLEITURA.

• Outra situação onde também são gerados ciclos de barramento: quando uma variável for acessada na memória, para consulta ou atualização.

i = j ; em C

mov reg, [ j ] ; em assembly

mov [ i ], reg

reg – representa um registrador interno da CPU.

Ciclo de barramento é a sequência com que são gerados os diversos sinaisnecessários para a CPU acessar a memória e os periféricos. Como o 8086trabalha com barramento síncrono, existe um diagrama de tempo marcando acadência desses sinais.

mínimo

CICLOS DE BARRAMENTO

29

A CPU 8086 é, em verdade, um dos componentes de um sistema comdiversos Circuito Integrados. Por exemplo:

• Gerador de Clock;

• Controlador de barramento;

• Latch não-inversor;

• Transceiver inversor.

EXEMPLO:

Barramento de Endereços e de Dados

Drivers – Para ampliar a capacidade de corrente.

Receivers – Para retirar os sinais dos barramentos.

Transceivers – O conjunto Driver + Receiver.

Barramento de Endereços e de Dados

30

Drivers – Para ampliar a capacidade de corrente.

Receivers – Para retirar os sinais dos barramentos.

Transceivers – O conjunto Driver + Receiver.

Latch – Utilizado para guardar sinais do barramento por um curto períodode tempo.

Barramento de Endereços e de Dados

ACESSANDO A MEMÓRIA

Acesso à Memória no 8086

31

Acesso à Memória no 8086

74LS373: OCTAL TRANSPARENT LATCH WITH 3-STATE OUTPUTS

74LS245: OCTAL BUS TRANSCEIVER

CICLOS DE BARRAMENTO

32

ACESSANDO A MEMÓRIA

A memória estáorganizada em bytes.

Acesso à Memória no 8086

?Acesso à Memória no 8086

X

33

UTILIZAÇÃO DA MEMÓRIA

Implementação utilizando *BHE e A0

Acesso à Memória no 8086

Como utilizar esses sinais ?

UTILIZAÇÃO DA MEMÓRIA

Acesso a 1 Byte de endereço par (endereço x)

Acesso à Memória no 8086

34

UTILIZAÇÃO DA MEMÓRIA

Acesso a 1 Byte de endereço impar (endereço x+1)

Acesso à Memória no 8086

UTILIZAÇÃO DA MEMÓRIA

Acesso a palavra de 16 bits em endereço par (endereço x)

• O endereço de uma palavra de 16 bits é definido pelo seu byte menos significativo.

Acesso à Memória no 8086

35

UTILIZAÇÃO DA MEMÓRIA

Acesso a palavra de 16 bits em endereço impar (endereço x+1)

Acesso à Memória no 8086

UTILIZAÇÃO DA MEMÓRIA

Instruções que acessam bytes e palavras em endereços pares e impares:

Acesso à Memória no 8086

36

Modos Mínimo e Máximo

VARIEDADE DE MODOS DE FUNCIONAMENTO:

• Monoprocessamento (uma única CPU);

• Multiprocessamento (mais de uma CPU);

Modos Mínimo e Máximo

SELEÇÃO DOS MODOS DE FUNCIONAMENTO:

• Modo mínimo (MN /*MX = 1);

• Modo máximo (MN /*MX = 0);

No modo multiprocessamento existe uma lógica interna para gerenciaras prioridades de acesso ao barramento.

Cada CPU pode ter sua própria memória e/ou compartilhar memóriacom outras CPUs.

37

CONFIGURAÇÃO DA CPU 8086

Modos Mínimo e Máximo

Modos Mínimo e Máximo

mínimo

38

LINHAS DE CONTROLE E ESTADO

São divididas em:

• Afetadas por MN / *MX.

• Não afetadas por MN / *MX.

Modos Mínimo e Máximo

Projeto Máximo

39

PROJETO NO MODO MÁXIMO:

O modo máximo é usado para sistemas multiprocessados ou co-processado.Neste modo, utiliza-se o controlador de barramento 8288:

1. O estado da fila interna éinformado por QS0 e QS1 –outros processadores podemsaber o estado de execuçãoda CPU.

2. O estado do barramento éobtido através de *S0, *S1 e*S2.

3. Existe o mecanismo de “lock”do barramento para controlarrecursos compartilhados.

4. *RQ/*GT0 e *RQ/*GT1permitem diversas CPUscompartilharem o mesmobarramento.

Modo Máximo

Projeto Mínimo

40

PROJETO NO MODO MÍNIMO:

• 1 Mb de memória.

• 64 k de I/O ( sinais A16 – A19 mantidos baixos em ciclos de I/O).

Modo Mínimo

Bibliografia Básican Zelenovsky, Ricardo e Mendonça, Alexandre, PC um

guia prático de Hardware e Interfaceamento, MZ EditoraLtda, 4a. edição, 2006. (http://www.mzeditora.com.br/)

n Brey, Barry, The Intel Microprocessors - 8086/88, 286,386 and 486 - Architecture, Programming andInterfacing, Third Edition, PHI, 1994.

Material da DisciplinaSIGAA - Sistema Integrado de Gestão de Atividades Acadêmicas