Sistemas Digitais: Ruahn Fuser

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 19

SISTEMAS

DIGITAIS

Ruahn Fuser
UNIDADE 4
Microprocessador
comercial: funcionamento
e conjunto de instruções
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

 Identificar a arquitetura básica de um microprocessador Intel.


 Descrever a operação de barramento multiplexado do microproces-
sador Intel.
 Relacionar os grupos de instruções do microprocessador Intel.

Introdução
Um microprocessador é caracterizado por um sistema digital formado
por um conjunto de transistores, subdividido em alguns blocos deno-
minados recursos básicos, tais como: registradores, unidade lógica e
aritmética (ULA) e contadores para controle de endereços. Capaz de
realizar instruções por meio de uma notação legível de código de má-
quina, esse sistema pode ser classificado como um chip programável. Ele
aceita algoritmos em diferentes linguagens de programação por meio
de compiladores específicos.
Na década de 1970, foi criada uma calculadora a partir do chip Intel
4004 de 4 bits, primeiro sistema eletrônico a utilizar um microprocessador
comercial. O Intel 4004 foi construído com 2.300 transistores, com um
barramento de 4 bits e capacidade para endereçar 640 bytes de memória.
Ele trabalhava a 740 kHz e era capaz de realizar até 92 mil instruções por
segundo. Atualmente, os microprocessadores estão presentes na maioria
dos dispositivos eletrônicos, como televisores, notebooks, videogames,
sistemas automotivos e controladores para automação industrial.
2 Microprocessador comercial: funcionamento e conjunto de instruções

Neste capítulo, você vai estudar o dispositivo Intel 8086, que é uma
evolução do Intel 4004 e vem sendo muito utilizado em sistemas ele-
trônicos. Para isso, você vai ver alguns detalhes do dispositivo, como
arquitetura básica e recursos disponíveis, barramentos de fluxo de in-
formações e microinstruções.

Arquitetura básica do Intel 8086


Também conhecida como arquitetura x86, a organização dos processadores da
família 8086 foi baseada na arquitetura CISC (Complex Instruction Set Com-
puter ou computador com conjunto complexo de instruções). A organização do
hardware que realiza os processos pode ser subdividida em duas partes bem
definidas: EU (Execution Unit ou unidade de execução) e BIU (BUS Interface
Unit ou unidade de interface de barramento).

Unidade de execução
Essa unidade é responsável por processar as instruções. Nela estão presentes
os recursos para decodificação e execução das tarefas. Ela é composta por
registradores de dados ou de propósito geral, ponteiros, registradores de
estados ou flags, barramento de dados de 16 bits e unidade lógica e aritmética.

Registradores de dados ou propósito geral

A unidade de execução possui quatro registradores de 16 bits que podem ser


utilizados nas operações lógicas e aritméticas. Tais registradores podem ser
utilizados com 16 ou 8 bits, pois são subdivididos da seguinte forma.

 AX: conhecido como “acumulador”, é utilizado em operações aritmé-


ticas e lógicas, em instruções de entrada/saída, conversões, etc. Pode
ser dividido em dois registradores de 8 bits com acesso independente:
AH, o byte mais significativo, e AL, o byte menos significativo.
 BX: conhecido como “base”, é utilizado para referenciar posições de
memória, gerenciamento de tabelas, etc. Pode ser dividido em dois
registradores de 8 bits com acesso independente: BH, o byte mais
significativo, e BL, o byte menos significativo.
 CX: conhecido como “contador”, é utilizado como índice em operações
de repetição, podendo ser incrementado ou decrementado. Pode ser
Microprocessador comercial: funcionamento e conjunto de instruções 3

dividido em dois registradores de 8 bits com acesso independente: CH,


o byte mais significativo, e CL, o byte menos significativo. O CL pode
ser visto como um contador de 8 bits.
 DX: conhecido como “dados”, é utilizado em operações aritméticas
e lógicas, em instruções de entrada/saída, conversões, etc. Pode ser
dividido em dois registradores de 8 bits com entrada independente: DH,
o byte mais significativo, e DL, o byte menos significativo.

Em alguns casos, o DX é utilizado como uma extensão do AX para armazenar valores de


32 bits. Por exemplo, no caso de instrução de multiplicações, é possível armazenar um
resultado de 32 bits pode meio de AX concatenado com DX. Outro exemplo é o caso
de divisão em que o DX é utilizado para armazenar o resto da operação. Além disso, o
DX também pode ser utilizado para especificar o endereço de portas de entrada/saída.

Ponteiros

A unidade de execução possui quatro registradores de 16 bits que são utilizados


como ponteiros para indicar algum local de uma memória específica ou o
acesso aos dados no segmento da pilha. Veja a seguir.

 SP (Stack Pointer): é o apontador de pilha. É o índice que aponta para


o topo da pilha utilizada para armazenar endereços da memória de
programa quando o código é desviado a partir de uma interrupção ou
uma chamada de função.
 BP (Base Pointer): é o apontador de base. É utilizado para endereça-
mento de memória, indexando o endereço inicial de uma tabela que
será manipulada pela CPU. Geralmente é utilizado em conjunto com a
SS e permite acesso de dados dentro do segmento de pilha.
 SC (Source Index): é o índice fonte. É utilizado em conjunto com o
DS para realizar endereçamento indireto, ou seja, pode apontar para a
origem de dados que se deseja movimentar.
 DI (Destination Index): é o índice destino. É utilizado em conjunto
com o ES para realizar endereçamento indireto, ou seja, pode apontar
para o destino dos dados que serão movimentados.
4 Microprocessador comercial: funcionamento e conjunto de instruções

A utilização dos ponteiros SI e DI em conjunto facilita a movimentação de dados


sequenciados entre posições fonte, indicadas por SI, e destino, indicadas por DI. Os
ponteiros são muito utilizados em operações com strings.

Registrador de estado ou flags

Também conhecido como PSW (Program Status Word), possui um registrador


de 16 bits, utilizado como bits individuais que indicam propriedades do sistema.
Veja a organização do registrador de estado na Figura 1.

Figura 1. Organização do registrador de estado.


Fonte: Adaptada de Carvalho (2000, documento on-line).

A seguir, você pode ver o significado das flags.

 X: não utilizado e geralmente inicializado como zero.


 OF (Overflow Flag): é o erro de transbordamento. Indica um estouro
na capacidade de um registrador:
■ 1 = houve erro de transbordamento;
■ 0 = não houve erro de transbordamento.
 DF (Direction Flag): é a flag de direção. Indica a direção em que as
operações com os registradores SI e DI estão sendo realizadas:
■ 1 = os registradores SI e DI estão sendo decrementados;
■ 0 = os registradores SI e DI estão sendo incrementados.
 IF (Interrupt Flag): é a flag de interrupção. Indica se as interrupções
estão habilitadas:
■ 1 = interrupções habilitadas;
■ 0 = interrupções desabilitadas.
 TG (Trap Flag): é a armadilha. Utilizada para depuração de programas,
colocando o chip em modo de debug:
■ 1 = indica que após a próxima instrução ocorrerá uma interrupção.
A própria interrupção limpa essa flag;
■ 0 = caso contrário.
Microprocessador comercial: funcionamento e conjunto de instruções 5

 SG (Sign Flag): é a flag de sinal. Indica se o resultado de uma operação


é positivo ou negativo em termos de aritmética de complemento de 2
(a operação dessa flag é dependente de OF):
■ 1 = resultado negativo;
■ 0 = resultado positivo.
 ZF (Zero Flag): é a flag de zero. Indica se o resultado da última operação
lógica ou aritmética é igual a zero:
■ 1 = igual a zero;
■ 0 = diferente de zero.
 AF (Auxiliar Carry Flag): é a flag de carry auxiliar. Utilizada em
instruções com códigos BCD:
■ 1 = quando ocorre um carry ou “vai um” do bit 3 para o bit 4 em
uma operação de soma, ou o não empréstimo do bit 4 para o bit 3
em uma subtração;
■ 0 = caso contrário.
 PF (Parity Flag): é a flag de paridade. Indica um número par de números
1 no byte inferior do resultado de alguma operação lógica ou aritmética:
■ 1 = número par;
■ 0 = número ímpar.
 CF (Carry Flag): é a flag de “vai um”. Indica que em uma operação
de soma ou subtração sobrou um bit. Na soma, o bit é definido como
“vai um”; na subtração, como “empréstimo”. Também é utilizada em
algumas instruções de rotação e deslocamento, quando o último bit do
registrador possui nível lógico 1:
■ 1 = nível lógico do bit sobrando deve ser tratado;
■ 0 = não houve necessidade de tratamento na operação.

Unidade de interface de barramento


Essa unidade faz a intermediação entre a EU e os barramentos de dados e de
endereços do meio externo. Além disso, é capaz de controlar a transmissão
de sinais de endereços, dados e controle, gerenciando a sequência de busca e
execução de instruções. Para isso, é composta por cinco registradores de 16
bits, uma fila de armazenamento de até 4 bytes de instruções e um sistema
que faz o endereçamento de 20 bits a partir de registradores de 16 bits. Você
pode conhecer melhor tais recursos a seguir.
6 Microprocessador comercial: funcionamento e conjunto de instruções

Registradores de segmentos

São registradores de 16 bits utilizados para endereçamento de memória, tanto


para instruções quanto para dados e pilhas. Os segmentos são blocos de me-
mória endereçáveis de 64 Kbytes. Durante a execução de um procedimento,
há ao menos quatro segmentos ativos, descritos a seguir.

 CS (Code Segment): é o segmento de código. Endereça o segmento


onde estão as instruções que serão executadas pela CPU.
 SS (Stack Segment): é o segmento de pilha. Endereça o segmento
reservado à pilha para gerenciamento de chamadas de sistema.
 DS (Data Segment): é o segmento de dados. Endereça o segmento onde
estão os dados que são manipulados pela CPU.
 ES (Extra Segment): é o segmento de dados extras. Endereça um seg-
mento extra para dados. É geralmente utilizado para manipulação de
tabelas e strings.

Ponteiros

Essa unidade possui um registrador de 16 bits dedicado a trabalhar junto ao


program counter.

 IP (Instruction Pointer): é o ponteiro de instruções. É utilizado em


conjunto com o CS para saber o endereço da próxima instrução a ser
executada. É automaticamente incrementado em função do tamanho
em bytes da instrução executada, de modo a apontar sempre para a
instrução seguinte.

Fila de instruções

Essa unidade possui uma fila com seis registradores de 16 bits para armazenar
instruções que serão executadas pela CPU. É esse recurso que permite o
pipeline durante a execução do programa.

Unidade de geração de endereços

É uma unidade que transforma os endereços contidos nos registradores de


segmentos de 16 bits em valores de 20 bits. Esse circuito faz a interface entre
os circuitos internos e externos do sistema.
Microprocessador comercial: funcionamento e conjunto de instruções 7

Dinâmica do barramento multiplexado


A BIU realiza a interface entre os sinais de dados, endereços e controle in-
ternos e os periféricos externos ao componente. Porém, para trabalhar com
uma quantidade de pinos reduzida, o Intel 8086 possui um barramento que
utiliza os mesmos pinos para endereço e dados. Para entender melhor como
funciona o barramento multiplexado, você deve primeiro observar quais são
os pinos disponíveis para essa função. Na Figura 2, a seguir, você pode ver a
disposição física dos pinos.

Figura 2. Pinos do Intel 8086.


Fonte: Adaptada de Intel (1990, documento on-line).

Pinos de dados e endereços do barramento multiplexado


Os pinos de dados e endereços são compartilhados para enviar e receber
informações conforme a configuração do pino ALE.
8 Microprocessador comercial: funcionamento e conjunto de instruções

 AD15 – AD0: esses pinos são o barramento multiplexado propriamente


dito. Eles integram os 16 bits que transportam os dados e os endereços.
 A19 – A16: esses pinos transportam os 4 bits restantes do endereço. Porém,
eles têm uma segunda função: indicar o status em algumas operações.
 : transporta um sinal que indica que os dados contidos nos 8
bits mais significativos do barramento são dados válidos.

Pino
Esse pino tem a importante função de definir o modo de operação do proces-
sador. Existem dois modos de operação, como você pode ver a seguir.

 Modo mínimo: o processador gera todos os sinais de controle para


o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e
INTA), além de possuir uma entrada de controle denominada HOLD.
Você vai conhecer melhor todos esses sinais de controle adiante.
 Modo máximo: o processador não gera os sinais de controle, que devem
ser gerados por outro processador que trabalha em conjunto. Ou seja,
esse modo é utilizado para sistemas que contam com coprocessadores.

Pinos de controle
Os pinos de controle servem para gerenciar as operações realizadas por dis-
positivos externos. Cada pino possui funções específicas, descritas a seguir.

QS0 (ALE)

No modo mínimo, assume o address latch enable (endereço habilitado). Já no


modo máximo, representa queue status 0 (estado da fila 0).

 Modo mínimo:
■ ALE = 1 — indica que o barramento multiplexado está sendo usado
para transportar um endereço;
■ ALE = 0 — caso contrário.
 Modo máximo:
■ QS0 — é utilizado junto ao QS1 para indicar o estado da fila em
bytes na entrada da EU.
Microprocessador comercial: funcionamento e conjunto de instruções 9

No modo mínimo, assume o data transmit/receive (transmissão e recepção


de dados). Já no modo máximo, representa a linha de status S1.

 Modo mínimo:
■ = 1 — indica que o processador está transmitindo dados;
■ = 0 — indica que o processador está recebendo dados.
 Modo máximo:
■ — é utilizado junto ao e ao para indicar qual operação
está sendo executada.

No modo mínimo, assume o write (escrita). Já no modo máximo, representa


locked (trancado).

 Modo mínimo:
■ = 1 — caso contrário;
■ = 0 — indica que o processador está executando uma operação
de escrita.
 Modo máximo:
■ = 1 — caso contrário;
■ = 0 — indica que outros processadores não devem tentar
tomar o barramento de sistema pois o 8086 não atenderá a uma
solicitação HOLD.

No modo mínimo, assume o memory/InputOutput (memória/EntradaSaída).


Já no modo máximo, representa a linha de status S2.

 Modo mínimo:
■ = 1 — indica que as linhas de endereço se referem ao espaço
de endereçamento de memória;
■ = 0 — indica que as linhas de endereço se referem ao espaço
de endereçamento de I/O.
 Modo máximo:
10 Microprocessador comercial: funcionamento e conjunto de instruções

■ — é utilizado junto ao e ao para indicar qual operação


está sendo executada.

No modo mínimo, assume o data enable (dados habilitados). Já no modo


máximo, representa a linha de status S0.

 Modo mínimo:
■ — indica que o barramento está sendo utilizado para transportar
dados ou status.
 Modo máximo:
■ — é utilizado junto ao e ao para indicar qual operação
está sendo executada.

RD

Conhecido como read (leitura), indica que o processador está executando


uma operação de leitura.

READY

Em português, ready significa “pronto”. Indica que o processador já pode


concluir uma operação de leitura ou escrita. Pode ser usado para solicitar à
CPU um tempo de espera para executar toda a operação.

Os barramentos são normalmente utilizados para interconectar vários periféricos,


oferecendo assim uma carga considerável. As CPUs são projetadas para fornecer, pelo
barramento, um tipo de sinal específico, não possuindo alta capacidade de corrente.
Logo, para suportar as intercomunicações entre dispositivos, são necessários ampli-
ficadores de correntes intermediários denominados drivers, que fornecem a corrente
necessária para a CPU entregar seus sinais ao barramento, e receivers, utilizados para
retirar os sinais do barramento. Para linhas bidirecionais, são utilizados um driver e um
receiver, conjunto denominado transceiver.
Microprocessador comercial: funcionamento e conjunto de instruções 11

Pinos de arbitragem do barramento


Os pinos de controle servem para gerenciar as operações realizadas por dis-
positivos externos. Cada pino possui funções específicas, como você pode
ver a seguir.

RQ0/GT0 (HOLD)

No modo mínimo, assume o hold (manter) e permite que um periférico controle


o barramento. Quando habilitado, todos os sinais de controle são configurados
como alta impedância. Já no modo máximo, representa request/grant (solicitar/
conceder) e funciona de forma bidirecional, com a função de conceder ou
solicitar o controle do barramento.

RQ1/GT1 (HLDA)

No modo mínimo, apresenta a resposta para a solicitação de HOLD. Já no modo


máximo, representa request/grant (solicitar/conceder) e funciona de forma
bidirecional, com a função de conceder ou solicitar o controle do barramento.

Além dos pinos de controle do barramento multiplexado,


existem alguns poucos que não foram devidamente apre-
sentados nesta seção. O datasheet do microprocessador Intel
8086 apresenta todos os elementos descritos de forma sucinta
e prática. Vale a pena conferir no link ou código a seguir.

https://goo.gl/Nkga2c

Microinstruções assembly
A microinstrução do Intel 8086 é baseada em arquitetura CISC, como você
já viu. Dessa forma, as microinstruções podem assumir tamanhos variados.
A seguir, você vai conhecer alguns detalhes da programação em linguagem
de montagem do 8086.
12 Microprocessador comercial: funcionamento e conjunto de instruções

Sintaxe assembly
Alguns pontos são importantes para um melhor entendimento durante a exe-
cução de programas em linguagem assembly. Veja:

 A linguagem assembly não é case-sensitive, ou seja, não diferencia letra


maiúscula de letra minúscula. Uma sugestão para os códigos é usar
letra maiúscula para o código e letra minúscula para os comentários.
 As instruções, que serão definidas a seguir, com seus respectivos mne-
mônicos e operandos, são convertidas por meio de seus opcodes (códigos
de operações) para linguagem de máquina.
 As diretivas são auxiliares de organização. São utilizadas pelo com-
pilador e auxiliam na montagem, sempre realizando alguma tarefa
específica, tal como: alocar espaços de memória, criar sub-rotinas,
definir valores fixos, etc.
 Uma linha de comentário é iniciada com “;” e é utilizada para docu-
mentação durante um código. É importante inserir comentários sucintos
que auxiliem, posteriormente, na manutenção dos algoritmos.

A declaração de uma instrução pode assumir diferentes formatos e, as-


sumindo diferentes formatos, pode ser utilizada com objetivos distintos. O
formato base para a declaração é:

[LABEL:]
[MNEMÔNICO] [OPERANDOS] [; comentário]

A label (rótulo) é utilizada para a organização do código, e o montador a


traduzirá posteriormente para um endereço de memória de programa.
Os operandos podem assumir zero, um ou dois valores distintos, conforme
o mnemônico utilizado. É esse detalhe que torna o assembly com tamanhos
de opcodes variados.

NOP ; sem operandos: não realiza nada.


DEC DX ; um operando: decrementa 1 de DX.
SUB DX, 8d ; dois operandos: subtrai 8 de DX e guarda
o resultado em DX.
Microprocessador comercial: funcionamento e conjunto de instruções 13

Já os mnemônicos são os códigos dos operadores, ou as microinstruções


possíveis contidas no papel de dados do microprocessador. Tal linguagem
de montagem está subdividida, no Intel 8086, em seis grupos principais:
transferência de dados, funções aritméticas, funções lógicas, manipulação
de strings, controle de fluxo e controle de processador. Você pode conhecer
melhor os grupos a seguir.

Transferência de dados

Utilizada para a manipulação de dados durante um procedimento, como mover,


desempilhar, carregar, etc.

Estrutura:
MOV DESTINO, FONTE

MOV D0, D1 ; move o valor contido na variável D1 para


a variável D0.
MOV DX, Ah ; move o valor decimal 10 para o registrador
DX.

Funções aritméticas

São responsáveis por realizar a matemática com registradores. Usualmente, em mi-


croprocessadores estão disponíveis operações matemáticas com números binários.

Estrutura:
ADD DESTINO, FONTE

ADD D0, D1 ; soma o valor contido na variável D1 à


variável D0 e guarda o resultado ; em D0.
ADD DX, Fh ; soma o valor decimal 15 ao registrador DX
e guarda em DX.
14 Microprocessador comercial: funcionamento e conjunto de instruções

Funções lógicas

São operações lógicas realizadas entre registradores. É importante tomar cui-


dado, pois tais operações são realizadas bit a bit com os valores de registradores.

Estrutura:
NOT REGISTRADOR

NOT D0 ; inverte o valor contido no registrador


D0.

Manipulação de strings

São instruções dedicadas à manipulação de strings. Essas instruções são


interligadas diretamente com os registradores de segmentos apresentados
no item BIU.

Estrutura:
MOVS

MOVSB ; move um byte do segmento [DS:SI] para o segmento


[ES:DI].
MOVSW ; move uma word do segmento [DS:SI] para o segmento
[ES:DI].
Microprocessador comercial: funcionamento e conjunto de instruções 15

Controle de fluxo

Tais instruções geralmente manipulam o program counter do processador.


Servem para gerenciar o fluxo do programa e realizar algumas estratégias
de programação. Além disso, permitem a chamada de funções e o desvio da
sequência natural da execução do programa.

Estrutura:
JMP DESTINO

JMP LABEL ; pula para o endereço de memória de programa


contido em label.
JMP 00h ; pula para o vetor de reset (endereço 00h)
do microprocessador.

Controle de processador

Realiza algumas funções especiais para o gerenciamento do processador.

Estrutura:
CLC

CLC ; essa instrução limpa a flag carry.

Para programar em assembly, é importante conhecer todas as microins-


truções do microprocessador em uso. Para isso, acesse a folha de dados do
dispositivo e procure pelo descritivo de microinstruções para conhecer o
restante das instruções.
16 Microprocessador comercial: funcionamento e conjunto de instruções

CARVALHO, M. B. Os microprocessadores 8086/88: hardware. [2000?]. Disponível em:


<http://www.telecom.uff.br/orgarqcomp/Slides/OrgComp_pt3_Hardware_8086.
pdf>. Acesso em: 21 ago. 2018.
INTEL. 8086 16-BIT HMOS microprocessor 8086/8086-2/8086-1. 1990. Disponível em:
<https://pt.scribd.com/document/21242899/8086-Datasheet>. Acesso em: 22 ago. 2018.

Leituras recomendadas
BARRETTO, M. Microprocessadores. 2000. Disponível em: <http://engeletrica.sobral.
ufc.br/professores/marcelo/Micro/Apostila_Microprocessadores.pdf>. Acesso em:
22 ago. 2018.
INTEL. 4004 single chip 4-BIT P-channel microprocessor. 1987. Disponível em: <http://
www.applelogic.org/files/4004Data.pdf>. Acesso em: 22 ago. 2018.
PANNAIN, R. Arquitetura do microprocessador 8086. [2000]. Disponível em: <http://www.
ic.unicamp.br/~pannain/mc404/aulas/pdfs/OBCLM2.pdf>. Acesso em: 22 ago. 2018.
WEBER, R. F. Fundamentos da arquitetura de computadores. 4. ed. Porto Alegre: Book-
man, 2012.

Você também pode gostar