Escolar Documentos
Profissional Documentos
Cultura Documentos
Tópicos
Arquitetura Básica 8086/8088.
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.
Emulando o 8086.
Modos de Endereçamento do 8086
Endereçamento da Memória de Programa.
Endereçamento da Memória de Dados.
Modos Mínimo e Máximo
Acesso à Memória no 8086
Programando - Uso da Pilha pelo Compilador.
1
As CPUS 8086/8088
(1978)
(1979)
2
As CPUs 8086 / 8088
≈ 29.000 transístores
3
As CPUs 8086 / 8088
?
mínimo
A CPU é dividida em
duas unidades
independentes:
• EU – Unidade de
Execução –
responsável pela
decodificação e
execução das
instruções.
• BIU – Unidade de
Interface de
Barramento –
responsável pela
interface com o
barramento
externo.
4
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.
Ciclos de busca e execução:
Se memória ou I/O devem
ser acessados durante a
execução de uma
instrução, então a EU
informa à BIU sobre essa
necessidade – que será
atendida com a geração
de ciclos de barramento
pela BIU.
OBSERVAÇ
OBSERVAÇÃO:
5
Registradores e Flags do 8086
6
Registradores e Flags do 8086
Como são
utilizados os
registradores
?
7
Registradores e Flags do 8086
AX – Acumulador Primário:
Todas as operações de I/O são realizadas com o uso auxiliar deste
registrador.
Operações que utilizam dados imediatos necessitam de menos memória
quando feitas através de AX.
Algumas operações com strings e instruções aritméticas pedem o uso
deste registrador.
Geralmente, é usado, pelos compiladores, para guardar valores
retornados de subrotinas.
BX – Registrador Base:
É o único registrador de finalidade geral que pode ser utilizado no
cálculo de endereços de memória.
Todas as referências à memória que usam esse registrador no cálculo
de endereço tomam o registrador de segmento DS como segmento
padrão.
8
Registradores e Flags do 8086
CX – Contador:
É decrementado durante as operações com loops e strings.
Tipicamente, é usado para controlar o número de repetições de uma
instrução antecedida pelo prefixo REP.
REP
Também é usado para controlar rotações e deslocamentos de vários
bits.
9
Registradores e Flags do 8086
10
Registradores e Flags do 8086
BP – Ponteiro de Base:
Permite acessar dados alocados na pilha.
Tipicamente é usado para acessar parâmetros que foram passados via
pilha para uma determinada subrotina.
Registradores de Indexaç
Indexação
11
Registradores e Flags do 8086
Registradores de Segmento
Quando projetou o 8086, a Intel se preocupou em facilitar o acesso e o
gerenciamento de memória desta CPU que poderia chegar a 1 MByte.
Por isso, decidiu particionar essa memória em segmentos de 64 K (16
bits) endereços. Assim, todo acesso à memória do 8086 é feito através
de segmentos de 64 K endereços.
Registradores de Segmento
12
Registradores e Flags do 8086
Registradores de Segmento
13
Registradores e Flags do 8086
14
Registradores e Flags do 8086
15
Registradores e Flags do 8086
Ponteiro de Instruç
Instrução
O Ponteiro de Instruç
Instrução (IP) e o registrador CS, juntos,
são responsáveis por marcar o endereço da próxima
instrução a ser executada.
16
Emulando o 8086
www.emu8086.com
Emulando o 8086
www.emu8086.com
17
Emulando o 8086
www.emu8086.com
Modos de Endereçamento
18
Modos de Endereçamento
Geraç
Geração de endereç
endereço fí
físico
Registradores Internos – 16 bits Endereço Físico – 20 bits ?
A geração do endereço físico envolve a combinação de um valor
“offset”
offset” (desvio ou deslocamento) de 16 bits contido em um registrador ou
explicitado, com um valor base em um registro de segmento (16 bits).
Operação na pilha SS - SP
Modos de Endereçamento
Geraç
Geração de endereç
endereço fí
físico
início do
Seletor:Seletor:
XXXX XXXX XXXX XXXX 0XXXX
000 segmento
NOTAÇ
NOTAÇÃO PARA O ENDEREÇ
ENDEREÇO FÍ
FÍSICO DE UM BYTE:
Seletor : Offset
19
Modos de Endereçamento
Geraç
Geração de endereç
endereço fí
físico
A maioria das variáveis (operandos da memória) normalmente está
localizada no segmento de dados corrente, embora um programa possa
instruir a BIU para acessar uma variável em qualquer um dos segmentos
endereçáveis.
O valor “offset” de uma variável na memória é calculado pelo EU. Este
valor é baseado no modo de endereçamento especificado pela instrução. O
resultado é denominado Endereço Efetivo (EA) do operando.
Modos de Endereçamento
1) Modos de endereç
endereçamento da memó
memória de programa
Sempre a busca de instrução é feita com CS+IP.
CS+IP Porém, instruções de jump e
call podem modificar o conteúdo do IP de três maneiras:
a) Endereç
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ç
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ç
Endereçamento indireto (programa)
• O dado na memória é interpretado como um endereço para um jump ou
call. Pode ocorrer de duas formas: (i) intrasegmento (modifica apenas IP)
ou (ii) intersegmento (modifica IP e CS).
20
Modos de Endereçamento
1) Modos de endereç
endereçamento da memó
memória de programa
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
memória de dados
Seis classes: Imediato, Direto, Indexado, Implicado, Relativo à Base ou
Pilha.
a) Endereçamento imediato – Nesta forma de endereçamento, os
operandos estão definidos nos bytes seguintes ao código da operação. O
dado a ser operado é obtido do segmento de código.
21
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
memória de dados
b) Endereçamento direto – Os dois bytes que se seguem ao código da
instrução constituem o offset do endereço (o seletor é DS) físico do dado a
ser acessado.
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
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.
22
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
memória de dados
e) Endereçamento relativo à base – É utilizado um registrador (BX ou
BP) para fornecer todos os modos de endereçamento já descritos, com
exceção do imediato, estão disponíveis neste modo.
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
2) Modos de endereç
endereçamento da memó
memória de dados
e) Endereçamento relativo à base
Exemplos:
23
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
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, com
isso, usa-se SS como segmento.
Exemplos:
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
memória de dados
Selecione view
Selecione memory
24
Modos de Endereçamento
2) Modos de endereç
endereçamento da memó
memória de dados
Selecione view
Selecione memory
25
Modos Mínimo e Máximo
A CPU 8086 é, em verdade, um dos componentes de um sistema com
diversos Circuito Integrados. Por exemplo:
• Gerador de Clock;
• Controlador de barramento;
• Latch não-inversor;
• Transceiver inversor.
EXEMPLO:
26
Modos Mínimo e Máximo
SELEÇ
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 gerenciar
as prioridades de acesso ao barramento.
Cada CPU pode ter sua própria memória e/ou compartilhar memória
com outras CPU´s.
27
Modos Mínimo e Máximo
CONFIGURAÇ
CONFIGURAÇÃO DA CPU 8086
mínimo
28
Modos Mínimo e Máximo
mínimo
29
Projeto Máximo
Modo Máximo
PROJETO NO MODO MÁ
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.
2. O estado do barramento é
obtido através de *S0, *S1 e
*S2.
3. Existe o mecanismo de “lock”
do barramento para controlar
recursos compartilhados.
4. *RQ/*GT0 e *RQ/*GT1
permitem diversas CPUs
compartilharem o mesmo
barramento.
30
Projeto Mínimo
Modo Mínimo
PROJETO NO MODO MÍ
MÍNIMO:
• 1 Mb de memória.
• 64 k de I/O ( sinais A16 – A19 mantidos baixos em ciclos de I/O).
31
Acesso à Memória no 8086
ACESSANDO A MEMÓ
MEMÓRIA
32
Acesso à Memória no 8086
ACESSANDO A MEMÓ
MEMÓRIA
?
33
Acesso à Memória no 8086
UTILIZAÇ
UTILIZAÇÃO DA MEMÓ
MEMÓRIA
34
Acesso à Memória no 8086
UTILIZAÇ
UTILIZAÇÃO DA MEMÓ
MEMÓRIA
35
Acesso à Memória no 8086
UTILIZAÇ
UTILIZAÇÃO DA MEMÓ
MEMÓRIA
Acesso a palavra de 16 bits em endereço impar (endereço x+1)
36
Programando o 8086
37
Uso da pilha pelo compilador
Segmento de Pilha
código instruç
instrução
instruç
instrução retorno
instruç
instrução de chamada
instruç
instrução seguinte
1a. instruç
instrução da subrotina
instruç
instrução da subrotina
instruç
instrução da subrotina
instruç
instrução de retorno
EXEMPLO:
parm1 e parm2
38
Uso da pilha pelo compilador
39
Uso da pilha pelo compilador
40
Bibliografia Básica
Zelenovsky, Ricardo e Mendonça, Alexandre, PC um
guia prático de Hardware e Interfaceamento, MZ Editora
Ltda, 4a. edição, 2006. (http://www.mzeditora.com.br/)
Brey, Barry, The Intel Microprocessors - 8086/88, 286,
386 and 486 - Architecture, Programming and
Interfacing, Third Edition, PHI, 1994.
Zanco, Wagner da Silva. Microcontroladores PIC
16F628A/648A – uma abordagem prática e objetiva,
Editora Érica, 2005.
Material da Disciplina
http://www.dee.ufc.br/~arthurp
41