Upload
eidercassio
View
20
Download
1
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
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)
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 ?
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.
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