You are on page 1of 44

Microprocessadores

Prof. Arthur Braga

Tpicos
Conceitos Bsicos e Viso Geral. 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


Endereamento da Memria de Programa. Endereamento da Memria de Dados.

Modos Mnimo e Mximo Acesso Memria no 8086


Ciclos de Barramento do 8086

Uso da Pilha pelo Compilador.

Relevncia do estudo da CPU 8086/8088


Arquitetura
Repertrio de instrues Tipos de Dados Modos de endereamento Conjunto de registradores Mecanismos de E/S

Organizao
Tecnologia de memria Interfaces Implementao das instrues Interconexes

Toda a famlia Intel x86 divide a mesma arquitetura bsica. Isto concede compatibilidade de cdigos. A Organizao diferencia-se entre as diferentes verses.

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

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

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

As CPUs 8086 / 8088 OBSERVAO: OBSERVA No confundir a fila de 6 bytes da BIU com memria cache. Os cdigos que so colocados nessa fila so as instrues (cdigos de operao ou opcodes) que sero opcodes executados pela EU. Os dados nunca so colocados nessa fila.

Quais so os registradores do 8086 ?

Registradores e Flags do 8086

Registradores e Flags do 8086


Registradores e Flags no 8086:

So 4 registradores de finalidade geral (16 bits) (AX,BX,CX e DX). DX) So 2 registradores apontadores de pilha (16 bits) (SP e BP). BP) So 2 registradores de indexao (16 bits) (SI e DI). DI) So 4 registradores de segmento (16 bits) (CS, DS, SS e ES). ES) H 1 registrador de estado (flags) (16 bits) (PSW). (PSW) E 1 ponteiro de instruo (16 bits) (IP). (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:
Todas as operaes de I/O so realizadas com o uso auxiliar deste registrador. Operaes que utilizam dados imediatos necessitam de menos memria quando feitas atravs de AX. Algumas operaes com strings e instrues aritmticas pedem o uso deste registrador. Geralmente, usado pelos compiladores para guardar valores retornados de subrotinas.

Registradores e Flags do 8086


Registradores de Finalidade Geral

BX Registrador Base:
o nico registrador de finalidade geral que pode ser utilizado no clculo de endereos de memria. Todas 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:
decrementado durante as operaes com loops e strings. Tipicamente, usado para controlar o nmero de repeties de uma instruo antecedida pelo prefixo REP. REP Tambm 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:


Foi-lhe dado o nome de registrador de dados principalmente por fora dos mnemnicos. Em algumas operaes de I/O, fornece o endereo, coisa que nenhum outro registrador pode fazer. Tambm utilizado em operaes aritmticas, incluindo multiplicao e diviso. Pode 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 subrotinas 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 aloca de variveis. As variveis alocadas na pilha so acessadas com o vari veis auxlio de BP.

12

Registradores e Flags do 8086


Registradores Apontadores de Pilha

SP Ponteiro de Pilha (Stack Pointer):


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

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

Registradores e Flags do 8086


Registradores de Indexao Indexa

Os registradores de Indexao (SI e DI): SI DI


So usados para acessar dados na memria de dados. So extensivamente usados nas operaes com strings. Podem 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. (offset) 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):


Todos os acessos ao cdigo de programa tomam este registrador como seletor. O offset o registrador IP. offset IP

DS Segmento de Dados (Data Segment):


Todo acesso a dados usa este registrador como referncia, mas h 3 excees: Endereos para acessos pilha usam o registrador SS. SS Endereos para acesso a dados que usam o BP so calculados a partir de SS. SS Operaes com strings, que usam DI no clculo do endereo, so feitas usando ES. ES

14

Registradores e Flags do 8086


Registradores de Segmento

SS Segmento de Pilha (Stack Segment):


Todos os acessos a dados que utilizam os registradores SP ou BP tomam como referncia este registrador.

ES Segmento Extra (Extra Segment):


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 Instru

O Ponteiro de Instruo (IP) e o registrador CS, juntos, Instru 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 Gera endere f 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 offset explicitado, com um valor base (seletor) armazenado em um Registrador de Segmento (16 bits). base (SELETOR) + offset = endereo fsico
Tipo de referncia memria
Busca de instruo Operao na pilha Variveis Fonte para string Destino para string BP como registro base BX como registro base

Segmento Base padro


CS SS DS DS ES SS DS

Segmento Base alternativo


CS, SS, ES CS, SS, ES CS, DS, ES CS, SS, ES

Offset
IP SP * SI DI * *

20

Modos de Endereamento
Gerao de endereo fsico Gera endere f
Deslocamento de 4 bits a esquerda

Seletor:Seletor: XXXX XXXX XXXX 0 0 0 0 XXXX XXXX Offset: End. Fsico: 0 0 0 0 YYYY YYYY YYYY ZZZZ ZZZZ ZZZZ ZZZZ

incio do segmento

YYYY (deslocamento) YYYY


(20 bits)

NOTAO PARA O ENDEREO FSICO DE UM BYTE: NOTA ENDERE F

Seletor : Offset
Registrador de Segmento Registrador ou Valor

Modos de Endereamento
Gerao de endereo fsico Gera endere f 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.

21

Modos de Endereamento
Gerao de endereo fsico Gera endere f

O 8086 pode buscar na memria: 1) INSTRUES h modos de endereamento da INSTRU memria de programa.

2) DADOS h modos de endereamento da memria de dados.

Modos de Endereamento
1) Modos de endereamento da memria de programa endere mem
Sempre a busca de instruo feita com CS+IP. Porm, instrues de jump e CS+IP call podem modificar o contedo do IP e/ou CS de trs maneiras: a) Endereamento relativo (programa) Endere 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). intra-

b) Endereamento direto (programa) Endere 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); (intrasegmento) Far altera IP e CS (intersegmento). (intersegmento) c) Endereamento indireto (programa) Endere O dado na memria interpretado como um endereo para um jump ou call. Pode ocorrer de duas formas: (i) intrasegmento (modifica apenas IP) ou (ii) intersegmento (modifica IP e CS).

22

Modos de Endereamento
1) Modos de endereamento da memria de programa endere mem

E o endereamento para a memria de dados ?

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem Seis modos de endereamento para dados: 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.

23

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem 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.
O valor do operando est armazenado no endereo de memria cujo offset est entre colchetes yyzz h

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

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem 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.

24

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem e) Endereamento relativo base Neste modo, utilizado um registrador (BX) para fornecer todos os modos de endereamento j descritos, com exceo do imediato. De forma simplificada, basta somar BX aos modos anteriores. Usa-se DS como registrador de segmento. Exemplos:

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

25

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem 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:

Modos de Endereamento
2) Modos de endereamento da memria de dados endere mem Selecione view

26

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

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

EXERCCIO PARA CASA: Localize na memria dados armazenados com EXERC os modos de endereamento comentados.

27

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: SELE 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.

28

Modos Mnimo e Mximo


CONFIGURAO DA CPU 8086 CONFIGURA

Modos Mnimo e Mximo

mnimo

29

Modos Mnimo e Mximo


LINHAS DE CONTROLE E ESTADO So divididas em: Afetadas por MN / *MX.

No afetadas por MN / *MX.

Modos Mnimo e Mximo


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:

30

Modos Mnimo e Mximo


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

Modos Mnimo e Mximo


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.

31

Projeto Mximo

Modo Mximo
PROJETO NO MODO MXIMO: M 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.

32

Projeto Mnimo

Modo Mnimo
PROJETO NO MODO MNIMO: M 1 Mb de memria. 64 k de I/O ( sinais A16 A19 mantidos baixos em ciclos de I/O).

33

Acesso Memria no 8086

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.

34

Acesso Memria no 8086


ACESSANDO A MEMRIA MEM

CICLOS DE BARRAMENTO

35

Acesso Memria no 8086


ACESSANDO A MEMRIA MEM

O grande problema que os programas operam, na grande maioria das vezes, com bytes.

Acesso Memria no 8086

?
36

Acesso Memria no 8086


UTILIZAO DA MEMRIA UTILIZA MEM Implementao utilizando *BHE e A0

Como utilizar esses sinais ?

Acesso Memria no 8086


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

37

Acesso Memria no 8086


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

Acesso Memria no 8086


UTILIZAO DA MEMRIA UTILIZA MEM 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.

38

Acesso Memria no 8086


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

Acesso Memria no 8086


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

39

Programando o 8086

Uso da pilha pelo compilador

O SEGMENTO DE PILHA fundamental para os compiladores implementarem SUBROTINAS. Este segmento de memria, alm SUBROTINAS de armazenar o endereo de retorno, responsvel por receber endere retorno os parmetros a serem manuseados pela subrotina, que so passados pelo procedimento que a chamou.

40

Uso da pilha pelo compilador


Segmento de cdigo instruo instru instruo instru instruo de chamada instru instruo seguinte instru Pilha retorno

1a. instruo da subrotina instru instruo da subrotina instru instruo da subrotina instru instruo de retorno instru

Uso da pilha pelo compilador EXEMPLO:


Considere uma SUBROTINA que recebe dois parmetros inteiros de 16 bits: parm1 e parm2

Deseja-se que a SUBROTINA retorne a soma dos dois parmetros acrescida de uma unidade.

41

Uso da pilha pelo compilador

Uso da pilha pelo compilador

E caso fosse um call far ?

E a rotina, como seria em assembly ?

42

Uso da pilha pelo compilador

Uso da pilha pelo compilador

E caso fosse um call far ?

43

Bibliografia Bsica
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. Stallings, William. Arquitetura e Organizao de Computadores, Pearson, 8a. Edio, 2010.

Material da Disciplina
http://www.dee.ufc.br/~arthurp

44