Sei sulla pagina 1di 40

Microprocessadores

Prof. Arthur Braga

Tpicos
n

Arquitetura Bsica 8086/8088

Registradores e Flags do 8086

Registradores de Finalidade Geral.

Registradores Apontadores de Pilha.

Registradores de Indexao.

Registradores de Segmento.

Registrador de Flags.

Ponteiro de Instruo.

Emulando o 8086

Modos de Endereamento do 8086

Acesso Memria no 8086

Ciclos de Barramento do 8086

Modos Mnimo e Mximo

MICROPROCESSADOR ?

CONCEITOS BSICOS

Unidades Bsicas de um Microprocessador Genrico:


Unidade Lgico Aritmtica (ULA): responsvel pela realizao das operaes
lgicas e aritmticas.
Unidade de Controle (UC): responsvel pela decodificao e execuo das
instrues, fornecendo os sinais de temporizao adequados para as diversas
partes do processador e do prprio computador.
Registradores: memrias internas para armazenamento de informao binria
(dados, endereos e instrues).

CONCEITOS BSICOS
Assembly a linguagem que possui instrues diretamente associadas a
cdigos da linguagem de mquina, e que permite indicar ao processador as
aes a serem realizadas (programa). Exemplo: o cdigo 03h em linguagem
de mquina faz com que o processador some um determinado operando com o
acumulador, e guarde o resultado no prprio acumulador. J a instruo
ADD AX,BX em assembly implementa uma das referidas somas.
Barramento um conjunto de condutores por onde trafegam sinais utilizados
para efetivar a comunicao entre o processador e um determinado circuito,
como uma memria. Se estes sinais forem os prprios pinos, utiliza-se a
denominao de barramento local.
Ciclo de barramento a sequncia com que so gerados os diversos sinais
necessrios para a CPU acessar a memria e os perifricos. Como o 8086
trabalha com barramento sncrono, existe um diagrama de tempo marcando a
cadncia desses sinais.

CONCEITOS BSICOS

Arquitetura de von Neumann

CONCEITOS BSICOS

Arquitetura de Harvard

As CPUS 8086/8088

As CPUs 8086 / 8088

As CPUs 8086 / 8088


Estrutura das CPUs 8086 / 8088

(1978)
(1979)

Caracterstica Comum: endereamento a 20 bits,


podendo acessar 1 Mbyte de memria.

As CPUs 8086 / 8088

29.000 transstores

As CPUs 8086 / 8088

?
mnimo

As CPUs 8086 / 8088


A CPU dividida em
duas unidades
independentes:
EU Unidade de
Execuo

responsvel pela
decodificao e
execuo
das
instrues.
BIU Unidade de
Interface com o
Barramento

responsvel pela
interface com o
barramento
externo.

As CPUs 8086 / 8088


Toda vez que a EU est pronta para executar uma nova instruo, ela
retira um cdigo do topo da Fila de Cdigos na BIU.
Se a Fila de Cdigos est vazia, ento a BIU executa um ciclo de busca
(fetch) e a EU obrigada a aguardar esse ciclo.
Raramente a Fila de Cdigos estar vazia.
Ciclos de busca e execuo:
Se memria ou I/O (E/S)
devem
ser
acessados
durante a execuo de
uma instruo, ento a EU
informa BIU sobre essa
necessidade que ser
atendida com a gerao
de ciclos de barramento
pela BIU.

Quais so os registradores do 8086 ?

As CPUs 8086 / 8088

REGISTRADORES
REGISTRADORES

REGISTRADOR

Registradores e Flags do 8086

Registradores e Flags do 8086


Registradores e Flags no 8086:

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


q So 2 registradores apontadores de pilha (16 bits) (SP e BP).
q So 2 registradores de indexao (16 bits) (SI e DI).
q So 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 instruo (16 bits) (IP).

Como so 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 ou
como 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 ser
usados como operandos em operaes lgicas e
aritmticas, de 8 ou 16 bits.

Registradores e Flags do 8086


Registradores de Finalidade Geral

AX Acumulador Primrio:
q Todas as operaes de I/O so realizadas com o uso auxiliar deste
registrador.
qOperaes que utilizam dados imediatos necessitam de menos memria
quando feitas atravs de AX.
qAlgumas operaes com strings e instrues aritmticas pedem o uso
deste registrador.
qGeralmente, usado pelos compiladores para guardar valores
retornados 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 no
clculo de endereos de memria.
qTodas as referncias memria que usam esse registrador no clculo
de endereo consideram segmento de dados como padro.

10

Registradores e Flags do 8086


Registradores de Finalidade Geral

CX Contador:
q decrementado durante as operaes com loops e strings.
qTipicamente, usado para controlar o nmero de repeties de uma
instruo antecedida pelo prefixo REP.
qTambm usado para controlar rotaes e deslocamentos de vrios
bits.

Registradores e Flags do 8086


Registradores de Finalidade Geral

DX Endereador de I/O e Registrador de Dados:


q Foi-lhe dado o nome de registrador de dados principalmente por fora
dos mnemnicos.
qEm algumas operaes de I/O, fornece o endereo, coisa que nenhum
outro registrador pode fazer.
qTambm utilizado em operaes aritmticas, incluindo multiplicao e
diviso.
qPode ser usado por compiladores, juntamente com AX, para guardar
valores retornados de subrotinas.

11

Registradores e Flags do 8086


Registradores de Finalidade Geral

Operaes podem ser realizadas apenas em partes de 8


bits desses registradores, afetando o conjunto de 16 bits:
mov AX, 2155h
mov AH, 43h

AX = 2155h
AX = 4355h

Operaes que trabalhem apenas com uma parte de 8 bits,


no afetaro a outra parte do registrador de 16 bits:
mov DX, 21FFh
inc DL

DX = 21FFh
DX = 2100h

Registradores e Flags do 8086


Registradores Apontadores de Pilha
Os registradores SP e BP so usados para acessar dados no
segmento de pilha.
A pilha particularmente importante no que diz respeito ao uso de
subrotinas. Quando uma instruo chama uma subrotina, preciso
marcar qual instruo do programa deve ser executada aps o trmino
da subrotina.
Os registradores SP e BP tambm podem ser usados como operandos
em operaes lgicas e aritmticas de 16 bits.
Outra aplicao para a pilha a possibilidade de alocao dinmica
de variveis. As variveis alocadas na pilha so acessadas com o
auxlio de BP.

12

Registradores e Flags do 8086


Registradores Apontadores de Pilha

SP Ponteiro de Pilha (Stack Pointer):


q Utilizado no clculo do endereo do topo da pilha, controlando a
alocao dinmica de variveis e o empilhamento de endereos de
retorno de subrotinas.
qTodas as referncias ao SP, por definio, relaciona-se ao segmento de
pilha.

BP Ponteiro de Base:
q Permite acessar dados alocados na pilha.
qTipicamente usado para acessar parmetros que foram passados via
pilha para uma determinada subrotina.

Registradores e Flags do 8086


Registradores de Indexao

Os registradores de Indexao (SI e DI):


q So usados para acessar dados na memria de dados.
qSo extensivamente usados nas operaes com strings.
qPodem ser usados como operandos em todas as operaes lgicas e
aritmticas de 16 bits.

13

Registradores e Flags do 8086


Registradores de Segmento
Quando projetou o 8086, a Intel se preocupou em facilitar o acesso e o
gerenciamento de memria desta CPU que poderia chegar a 1 MByte.
Por isso, decidiu particionar essa memria em segmentos de 64 K (16
bits) endereos. Assim, todo acesso memria do 8086 feito atravs
de segmentos de 64 K endereos.
Os Registradores de Segmento funcionam como selecionadores
destas faixas de endereamento. Cada registrador especifica o incio
de uma faixa de 64 K (65.536) de endereos consecutivos.
O acesso a endereos dentro de um segmento feito atravs de um
deslocamento (offset) a partir do endereo-base.
So 4 tipos de segmentos considerados: CDIGO, DADOS, PILHA e
EXTRA.

Registradores e Flags do 8086


Registradores de Segmento

CS Segmento de Cdigo (Code Segment):


q Todos os acessos ao cdigo 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 referncia, com 3
excees:
q Endereos para acessos pilha usam o registrador SS.
q Endereos para acesso a dados que usam o BP so calculados a
partir de SS.
q Operaes com strings, que usam DI no clculo do endereo, so
feitas usando ES.

14

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 referncia este registrador.

ES Segmento Extra (Extra Segment):


q Operaes com strings que usam DI para calcular o endereo so
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 operaes


aritmticas (8 ou 16 bits). Tambm modificado por algumas instrues
de rotao e deslocamento.

P Paridade indica a paridade do byte menos significativo do


resultado de uma operao. (P=1, nmero par de 1s no byte menos
significativo; P=0, caso contrrio).

15

Registradores e Flags do 8086


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

A Carry Auxiliar reflete o vai um do bit 3 em uma operao de


8 bits.

Z Flag Zero indica se uma operao teve zero como resultado


(Z=1, se o resultado da operao for zero; Z=0, caso contrrio).

Registradores e Flags do 8086


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

S Flag de Sinal igual ao bit de mais alta ordem do resultado


de uma operao aritmtica (S=0, resultado positivo; S=1, caso
contrrio).

T Armadilha (Trap) para a depurao de programas este bit


coloca o 8086 no modo passo-a-passo, de forma a invocar uma
exceo aps a execuo de cada instruo.

16

Registradores e Flags do 8086


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

I Interrupo habilita ou desabilita a interrupo pedida pelo pino


INTR (I=1, interrupo habilitada).

D Direo determina se as operaes com strings vo


incrementar ou decrementar os registradores de indexao SI e DI
(D=1, SI e DI sero decrementados, a string ser acessada de seu
endereo mais alto para o mais baixo; D=0, ocorre o contrrio).

Registradores e Flags do 8086


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

O Overflow indica um overflow de magnitude, em aritmtica


binria com sinal.

17

Registradores e Flags do 8086


Ponteiro de Instruo

O Ponteiro de Instruo (IP) e o registrador CS, juntos,


so responsveis por marcar o endereo da prxima
instruo a ser executada.

Como comear o estudo


do uso dos registradores
e Flags do 8086 ?

Emulando o 8086

registradores

flags

www.emu8086.com

18

Emulando o 8086

www.emu8086.com

Emulando o 8086

www.emu8086.com

19

Modos de Endereamento

Modos de Endereamento
Gerao de endereo fsico

Como o Processador indica qual


posio de Memria ou Perifrico
deseja ler/escrever ?
ENDEREO FSICO
Cdigo de 20 bits

20

Modos de Endereamento
Gerao de endereo fsico
Registradores Internos 16 bits

Endereo Fsico 20 bits

A gerao do endereo fsico envolve a combinao de um valor


offset (desvio ou deslocamento) de 16 bits contido em um registrador ou
explicitado, com um valor base (seletor) em um Registrador de Segmento
(16 bits).
base (SELETOR / Reg. Segmento) + offset = endereo fsico
Tipo de referncia
memria

Segmento Base
padro

Segmento Base
alternativo

Offset

Busca de instruo

CS

IP

Operao na pilha

SS

SP

Variveis

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

Modos de Endereamento
Gerao de endereo fsico
Deslocamento de 4 bits a esquerda

incio do
segmento

Seletor:Seletor:
XXXX XXXX XXXX XXXX 0XXXX
000
Offset:
End. Fsico:

0 0 0 0 YYYY YYYY YYYY


ZZZZ

ZZZZ ZZZZ

ZZZZ

YYYY

(deslocamento)

YYYY

(20 bits)

NOTAO PARA O ENDEREO FSICO DE UM BYTE:

Seletor : Offset
Registrador de Segmento

Registrador ou Valor

21

Modos de Endereamento
Gerao de endereo fsico
A maioria das variveis (operandos da memria) normalmente est
localizada no segmento de dados corrente, embora um programa possa
instruir a BIU para acessar uma varivel em qualquer um dos segmentos
endereveis.
O valor offset de uma varivel na memria calculado pelo EU. Este
valor baseado no modo de endereamento especificado pela instruo. O
resultado denominado Endereo Efetivo (EA) do operando.

Modos de Endereamento
Gerao de endereo fsico

O 8086 pode buscar na memria:


1) INSTRUES h modos de endereamento da
memria de programa.

2) DADOS h modos de endereamento da memria


de dados.

22

Modos de Endereamento
1) Modos de endereamento da memria de programa
Sempre a busca de instruo feita com CS+IP. Porm, instrues de jump e call
podem modificar o contedo do IP de trs maneiras:
a) Endereamento relativo (programa)

Um deslocamento de 8 ou 16 bits, especificado de forma imediata


adicionado ao IP (adio binria com sinal);

Como no altera CS, o salto intra-segmento (limitado em 64k).

b) Endereamento direto (programa)

Os valores de IP ou de IP e CS so especificados na instruo de forma


imediata;

Esta operao classificada como salto near ou salto far.


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

c) Endereamento indireto (programa)

O endereo para um jump ou call passado de forma indireta (ex. atravs


do contedo de um registrador ou de uma posio de memria) Pode
ocorrer de duas formas: (i) intrasegmento (modifica apenas IP) ou (ii)
intersegmento (modifica IP e CS).

Modos de Endereamento
Gerao de endereo fsico

O 8086 pode buscar na memria:


1) INSTRUES h modos de endereamento da
memria de programa.

2) DADOS h modos de endereamento da memria


de dados.

23

Modos de Endereamento
2) Modos de endereamento da memria de dados
Seis modos considerados: Imediato, Direto, Indexado, Implicado,
Relativo Base ou Pilha.
a) Endereamento imediato Nesta forma de endereamento, os
operandos esto definidos nos bytes seguintes ao cdigo da operao. O
dado a ser operado obtido do segmento de cdigo.

Modos de Endereamento
2) Modos de endereamento da memria de dados
b) Endereamento direto Os dois bytes que se seguem ao cdigo da
instruo constituem o offset do endereo (o seletor DS) fsico do dado a
ser acessado.

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

24

Modos de Endereamento
2) Modos de endereamento da memria de dados
c) Endereamento direto, indexado obtido com o uso de SI (no
segmento de dados) ou DI (no segmento extra) como Indexador.

d) Endereamento Implicado Este modo uma degenerao do


anterior. obtido quando no se especifica qualquer deslocamento.

Modos de Endereamento
2) Modos de endereamento da memria de dados
e) Endereamento relativo base Neste modo, utilizado um
registrador (BX ou BP) para fornecer todos os modos de endereamento j
descritos, com exceo do imediato.
De forma simplificada, basta somar BX ou BP aos modos anteriores.
Existe duas maneiras de implementao:

Relativo memria de dados, neste caso, usam-se BX e DS;

Relativo pilha, usam-se BP e SS.

Exemplos:

25

Modos de Endereamento
2) Modos de endereamento da memria de dados
e) Endereamento relativo base
Exemplos:

Modos de Endereamento
2) Modos de endereamento da memria de dados
f) Endereamento relativo pilha Todos os endereamentos relativos
base tambm servem para a pilha, basta substituir BX por BP e, com
isso, usa-se SS como segmento.
Exemplos:

26

Modos de Endereamento
2) Modos de endereamento da memria de dados
Selecione view
Selecione memory

EXERCCIO PARA CASA: Localize na memria dados armazenados com


os modos de endereamento comentados.

Acesso Memria no 8086

27

CICLOS DE BARRAMENTO

Um processador realiza ciclos de barramento sempre que for memria


buscar cdigos de instrues para executar. Neste caso o ciclo ser de
LEITURA.

Outra situao onde tambm so gerados ciclos de barramento: quando


uma varivel for acessada na memria, para consulta ou atualizao.
i = j ; em C
mov reg, [ j ] ; em assembly
mov [ i ], reg

reg representa um registrador interno da CPU.


Ciclo de barramento a sequncia com que so gerados os diversos sinais
necessrios para a CPU acessar a memria e os perifricos. Como o 8086
trabalha com barramento sncrono, existe um diagrama de tempo marcando a
cadncia desses sinais.

CICLOS DE BARRAMENTO

mnimo

28

Barramento de Endereos e de Dados


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

Gerador de Clock;

Controlador de barramento;

Latch no-inversor;

Transceiver inversor.

EXEMPLO:

Barramento de Endereos e de Dados


Drivers Para ampliar a capacidade de corrente.
Receivers Para retirar os sinais dos barramentos.
Transceivers O conjunto Driver + Receiver.

29

Barramento de Endereos e de Dados


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 perodo
de tempo.

Acesso Memria no 8086


ACESSANDO A MEMRIA

30

Acesso Memria no 8086


74LS373: OCTAL TRANSPARENT LATCH WITH 3-STATE OUTPUTS

74LS245: OCTAL BUS TRANSCEIVER

CICLOS DE BARRAMENTO

31

Acesso Memria no 8086


ACESSANDO A MEMRIA

A
memria
est
organizada em bytes.

Acesso Memria no 8086

?
32

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Implementao utilizando *BHE e A0

Como utilizar esses sinais ?

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Acesso a 1 Byte de endereo par (endereo x)

33

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Acesso a 1 Byte de endereo impar (endereo x+1)

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Acesso a palavra de 16 bits em endereo par (endereo x)

O endereo de uma palavra de 16 bits definido pelo seu byte


menos significativo.

34

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Acesso a palavra de 16 bits em endereo impar (endereo x+1)

Acesso Memria no 8086


UTILIZAO DA MEMRIA
Instrues que acessam bytes e palavras em endereos pares e impares:

35

Modos Mnimo e Mximo

Modos Mnimo e Mximo


VARIEDADE DE MODOS DE FUNCIONAMENTO:
Monoprocessamento (uma nica CPU);
Multiprocessamento (mais de uma CPU);

SELEO DOS MODOS DE FUNCIONAMENTO:


Modo mnimo (MN /*MX = 1);
Modo mximo (MN /*MX = 0);
No modo multiprocessamento existe uma lgica interna para gerenciar
as prioridades de acesso ao barramento.
Cada CPU pode ter sua prpria memria e/ou compartilhar memria
com outras CPUs.

36

Modos Mnimo e Mximo


CONFIGURAO DA CPU 8086

Modos Mnimo e Mximo

mnimo

37

Modos Mnimo e Mximo


LINHAS DE CONTROLE E ESTADO
So divididas em:

Afetadas por MN / *MX.

No afetadas por MN / *MX.

Projeto Mximo

38

Modo Mximo
PROJETO NO MODO MXIMO:
O modo mximo usado para sistemas multiprocessados ou coprocessado.
Neste modo, utiliza-se o controlador de barramento 8288:
1. O estado da fila interna
informado por QS0 e QS1
outros processadores podem
saber o estado de execuo
da CPU.
2. O estado do barramento
obtido atravs 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.

Projeto Mnimo

39

Modo Mnimo
PROJETO NO MODO MNIMO:

1 Mb de memria.

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

Bibliografia Bsica
n

Zelenovsky, Ricardo e Mendona, Alexandre, PC um


guia prtico de Hardware e Interfaceamento, MZ Editora
Ltda, 4a. edio, 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.

Material da Disciplina
SIGAA - Sistema Integrado de Gesto de Atividades Acadmicas

40

Potrebbero piacerti anche