Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução...................................................................................................................................................2
Unidades Internas e Registadores do 8085.................................................................................................3
Unidade de controlo de interrupção...........................................................................................................3
Interrupções................................................................................................................................................3
Formas de se activar cada instrução............................................................................................................5
Circuitos de interrupção..............................................................................................................................5
Unidade de controlo de Entrada/Saída Serial..............................................................................................6
Unidade de temporização e controlo..........................................................................................................6
Unidade Lógico-Aritmética (ULA ou ALU)....................................................................................................7
Registador "Acumulador"............................................................................................................................7
Registador "TEMP"......................................................................................................................................7
Registador "Flip-flops dos flags"..................................................................................................................7
Unidade de Controlo e Interrupção.............................................................................................................7
Unidade de Entrada e Saída serial...............................................................................................................8
Unidade de Temporização e Controle.........................................................................................................9
Instruções de recomeço..............................................................................................................................9
Funcionamento da pilha............................................................................................................................10
Métodos de controlo de entrada e saída..................................................................................................12
Instruções de Controlo, Pilha e Entrada e Saída........................................................................................13
Conjunto de instruções de microprocessadores........................................................................................18
Instruções do microprocessador Intel 8085..............................................................................................19
Instruções de controlo do estado da máquina..........................................................................................19
Conclusão..................................................................................................................................................22
Referências bibliográficas..........................................................................................................................23
1
Introdução
Este trabalho resulta das orientações dadas pelo docente da disciplina de Microprocessadores e
Microcontroladores (MIMI). De acordo com as suas orientações, os estudantes formados em
grupo, deviam fazer um estudo sobre pilha, I/O e conjunto de instruções de microprocessadores
olhando mais para instruções de controlo de estado da máquina. Por questões didácticas, decidiu-
se abordar em particular, sobre instruções presentes no microprocessador Intel 8085. Este
microprocessador (8085) de 8 bits foi lançado em 1976 pela Intel.
O trabalho foi elaborado com base em informações colhidas em livros (citados nas referencias
bibliográficas), depois organizado em títulos e subtítulos, tendo sido usada a técnica de
numeração para fixar a estrutura do texto.
2
Unidades Internas e Registadores do 8085
Unidade de controlo de interrupção
Unidade responsável pelo tratamento das 5 interrupções externas do 8085. Essas interrupções são
vectoradas, o que significa que há um endereço fixo, pré-definido, para cada uma (RST n salta
para a posição de memória 8 vezes n: RST 5.5 = 4410 = 2Ch; RST 6.5 = 34h; RST 7.5 = 3Ch.).
As interrupções RST 5.5, RST 6.5 e RST 7.5 podem ser mascaradas, ou seja, elas podem ser
bloqueadas via Software. Já a interrupção TRAP não pode ser bloqueada e é a interrupção de
maior prioridade do 8085. Ela é normalmente activada quando há problemas de falta de energia,
para um desligamento seguro do microprocessador. A interrupção INTR, na verdade, é um canal
para expansão da capacidade de interrupção. Através desse canal um CI especial (Exemplo: CI
8259) é conectado ao 8085, de modo a permitir um número maior de interrupções. O sinal INTA\
faz parte da comunicação entre o 8085 e o CI usado para expansão da capacidade de interrupção.
Interrupções
Além das 8 instruções de recomeço por Software, o 8085 possui 4 instruções de recomeço por
Hardware (Interrupções Externas). Essas instruções são chamadas de TRAP (pino 6), RST 7.5
(pino 7), RST 6.5 (pino 8) e RST 5.5 (pino 9). Quando qualquer desses pinos é activado, os
circuitos internos do 8085 produzirão uma chamada de sub-rotina (CALL) por Hardware que
desviarão o processamento para o endereço predeterminado. A tabela das posições de recomeço
por Hardware (interrupções externas) é dada a seguir.
As operações de entrada e saída por interrupção usam uma das interrupções por Hardware dadas
na tabela, de forma que, quando o periférico está pronto para a transferência de dados a
interrupção seleccionada é accionada, permitindo a transferência de dados de uma forma mais
rápida que a transferência Programada.
Interrupções do 8085
3
As interrupções externas têm uma ordem de prioridade, de forma que, no caso de dois ou mais
pedidos simultâneos de interrupção, a ordem de atendimento é:
Como já foi mencionado, as interrupções são accionadas por sinais externos nos pinos
correspondentes. Para o caso do 8085 esses sinais de accionamento de interrupção podem ser
nível alto no pino (accionamento por nível) ou transição do nível baixo para o nível alto
(accionamento por borda, ou por transição). A figura a seguir ilustra cada uma delas.
Fig1. Pinos
4
Formas de se activar cada instrução
TRAP - accionada simultaneamente por nível e por transição. É usada para eventos catastróficos
tais como falhas na alimentação eléctrica e erros de paridade.
INTR - accionada apenas por nível. Essa interrupção em particular, permite a expansão da
capacidade de interrupções do 8085. Através desse pino um dispositivo de suporte pode ser
usado para aumentar os pinos de interrupção.
Circuitos de interrupção
As interrupções são melhor entendidas através dos circuitos lógicos mostrados a seguir
5
Unidade de temporização e controlo
Esta unidade é responsável por gerar todos os sinais de controlo do 8085, tais como os sinais de
leitura (RD\) e escrita (WR\) de memória, os sinais de liberação de barramento para um
periférico (HLDA) e o sinal de habilitação de endereço para um periférico (ALE). Todas as
unidades internas do 8085 são controladas por esta unidade, que contém, dentre outros, um
contador em anel para sincronização da operação de todas as unidades do 8085. Os sinais de
controlo para outras unidades são enviados após a decodificação das instruções vindas do
registador de Instruções (IR). Recebe ainda sinais do registador de flags e da unidade de
interrupções.
Registador "Acumulador"
É o principal registador da CPU. É utilizado como Buffer temporário de entrada da Unidade
Lógica e Aritmética (ALU ou ULA). Frequentemente é o registador de entrada ou saída da CPU.
É utilizado implicitamente na maioria das instruções. É um registador de 8 bits, o que permite
trabalhar com números sem sinal de 0 a 255 e números com sinal de -128 a +127. O resultado
das operações resultantes da ULA é enviado para o Acumulador.
Registador "TEMP"
É um registador auxiliar usado para a entrada de dados da Unidade Lógico-Aritmética. Os dados
desse registador são enviados para a ULA juntamente com os dados do Acumulador.
6
Registador "Flip-flops dos flags"
É também conhecido como registador F (de flags), ou registador PSW (Program Status Word) É
um registador de 8 bits (mas somente 5 bits são utilizados) que armazena o estado da última
operação realizada na ULA. São 5 as flags do 8085.
RST n salta para a posição de memória 8 vezes n. São interrupções mascaráveis (bloqueadas
através de software).
TRAP.
INTR.
7
SOD – Serial Output data.
8
Instruções de recomeço
O 8085 tem 8 instruções de recomeço por Software (restart), que são: RST 0, RST 1, RST 2,
RST3, RST 4, RST 5, RST 6 e RST 7. Estas instruções são para chamadas de sub-rotinas que são
usadas com frequência. O efeito de uma instrução RST é o mesmo de uma chamada de sub-
rotina, com uso da pilha para guardar o endereço de retorno. A diferença é que cada instrução
RST desvia o processamento para um endereço predeterminado, como mostra a tabela abaixo.
Um outro detalhe é que a chamada de uma RST é feita com apenas 1 byte de código, ao contrário
de uma chamada de sub-rotina normal, que é feita com 3 bytes de código.
Do mesmo modo que no caso de uma sub-rotina comum, quando uma instrução RET é
encontrada o processamento volta para o programa principal.
Instruções de recomeço
Verifica-se da tabela acima que há apenas 8 posições (8 bytes) disponíveis para cada instrução de
recomeço. Sendo assim, normalmente essas posições vectoradas são usadas apenas para desviar
para uma sub-rotina que é frequentemente usada e que não caberia em apenas 8 posições. Uma
instrução de desvio incondicional JMP ADDr é então usada. A chamada da sub-rotina através de
uma dessas instruções de recomeço é mais eficiente que a chamada directa da sub-rotina.
Funcionamento da pilha
Como já foi dito anteriormente, a Pilha é uma região da memória RAM, definida pelo usuário,
para guardar valores que serão usados posteriormente. Assim, o usuário pode guardar o conteúdo
de qualquer registador (dois a dois: A e flags, B e C, D e E, H e L) na pilha e o microprocessador
9
guarda automaticamente os endereços de retorno de sub-rotinas comuns e de sub-rotinas de
interrupções. A seguir é ilustrada a região da memória definida como Pilha (Stack).
A pilha é uma estrutura LIFO (Last In First Out), ou seja, o último valor colocado na pilha é o
primeiro a ser retirado.
Nos três componentes citados: 8085, 8086/8086 e 8051 a instrução PUSH é usada para guardar
um valor na pilha e a instrução POP é usada para retirar um valor da pilha e o registador SP é
usado para apontar o endereço do último valor colocado na pilha.
Observações:
10
(a) O conteúdo guardado na pilha é sempre de 16 bits. Assim, o microprocessador normalmente
guarda o conteúdo de PC, que já é de 16 bits, mas o usuário normalmente guarda o conteúdo de
registadores de 8 bits, que então são associados 2 a 2;
(b) Os registadores duplos que podem ser guardados na pilha são PSW (= A + flags), B (= B +
C), D (= D + E) e H (= H + L);
(c) Para guardar o conteúdo de um desses registadores duplos usa-se a instrução PUSH rp;
(d) Para recuperar o conteúdo que foi guardado na pilha usa-se a instrução POP rp;
(e) Quando uma informação é enviada para a pilha o byte mais significativo é guardado
primeiro; isso significa que o byte menos significativo vai ser retirado primeiro porque o último
dado armazenado é o primeiro a ser retirado;
(f) A pilha do 8085 evolui do maior endereço para o menor, ou seja, a cada vez que uma
informação (2 bytes) é enviada para a pilha, o endereço do topo da pilha é reduzido de 2. Ele é
acrescido de 2 quando a informação é retirada da pilha;
(g) O apontador de pilha SP aponta sempre para o topo da pilha, mas ele é incrementado de 1
antes de cada byte ser armazenado.
11
Tem como desvantagem a perda de tempo porque o processador abandona o programa principal
para fazer a varredura mesmo se nenhum periférico deseja serviço.
Interrupção
12
(H) ← ((SP) + 1) Registador
SPHL (SP) ← (H) (L) 1 6 Registador Nenhuma
IN (A) ← (dado 8 bits) 3 10 Directo Nenhuma
OUT (dado 8 bits) ← (A) 3 10 Directo Nenhuma
(PUSH) - O conteúdo do registador de mais alta ordem (byte superior) do par de registadores é
guardado na posição de memória indicada por SP -1. O conteúdo do registador que contém o
byte inferior da instrução é guardado na posição de memória indicada por SP – 2. O registador
par rp pode ser B (de BC), D (de DE) ou H (de HL). O registador SP é decrementado de 2.
O conteúdo da posição de memória indicada por SP é movido para o registador que representa o
byte inferior (C, E ou L). O conteúdo da posição de memória indicada por SP+ 1 é movido para
o registador que representa o byte superior da instrução (B, D ou H). O conteúdo do registador
SP é incrementado de 2.
O conteúdo da posição de memória indicada por SP é movido para o registador que guarda o
estado das flags (registador F). O conteúdo da posição de memória indicada por SP + 1 é movido
para o acumulador. O conteúdo do registador SP é incrementado de 2.
(Exchange Stack Top with H and L) = O conteúdo da posição de memória indicada por SP é
trocado com o conteúdo do registador L e o conteúdo da posição de memória indicada por SP + 1
é trocado pelo conteúdo do registador H.
13
Comentário do mnemónico genérico (SPHL)
(Move HL to SP) = O conteúdo do registador par HL é movido para o registador de 16 bits SP.
(Input = Entrada) = O dado colocado na porta indicada é transferido para o acumulador através
do barramento de dados (8 bits).
Os três primeiros estados de uma instrução (T1, T2 e T3) correspondem ao ciclo de busca. Cada
estado corresponde a um ciclo de clock. A frequência que corresponde a um ciclo de clock é a
frequência do cristal oscilador dividida por 2. Assim, se o cristal oscilador for de 2 MHz, a
14
frequência de clock é 1 MHz e o período de clock é 1 μs. O microprocessador 8085A-2 pode ser
operado com frequência do cristal de 500 kHz a 5 MHz.
Após a busca e decodificação da instrução o microprocessador passa para a etapa de execução,
que pode ocorrer em 1 ou mais ciclos de clock. Uma vez completada a execução da instrução,
está completo o ciclo de instrução, que é composto pelo ciclo de busca mais o ciclo de execução.
Observa-se no diagrama de temporização que o sinal ALE (Adress Latch Enable) está presente
no início de cada ciclo de máquina. Ele habilita o registador PC a colocar no barramento o
15
endereço da próxima instrução (ou endereço do dado a ser buscado na memória). Esse sinal é
também usado no controle de periféricos.
O barramento denominado A15-A8 contém a parte alta do endereço de 16 bits (PC H). O
barramento AD7-AD0 contém a parte baixa do endereço a ser obtido na memória, ou a instrução
que foi buscada na memória ou ainda dados originados da memória ou de registadores.
Os sinais RD\, WR\ e IO–M\ são sinais de controle de periféricos. Eles indicam o estado das
operações em andamento. RD\ baixo (RD\ = 0) indica que o microprocessador está em período
de leitura, que pode ser de memória (IO–M\ = 0) ou de uma porta de entrada (IO–M\. = 1). WR\
baixo (WR\ = 0) indica uma operação de escrita em memória (IO–M\ = 0) ou em uma porta de
saída (IO–M\. = 1).
O que ocorre em cada estado do diagrama de temporização é mostrado na parte superior da Fig.
Acima Estado T1 (ciclo de máquina M1): o conteúdo do registador PC (contador de programa) é
colocado no barramento e indica o endereço de leitura da memória para obtenção do código de
operação (opcode) da instrução.
Estado T3 (ciclo de máquina M1): a instrução é lida da memória e enviada para o registador de
instrução para ser decodificada. No final deste estado a instrução já está decodificada e a unidade
de controlo inicia o comando das unidades envolvidas na execução da instrução.
Estado T4 (ciclo de máquina M1): nesse período normalmente começa a execução da instrução.
Na instrução MOV A,B, por exemplo, nesse período ocorre a transferência do conteúdo de B em
um registador temporário, TMP, para depois ser transferido para o registador A, durante o estado
T2 da próxima instrução.
16
opcode da próxima instrução ou o segundo byte da instrução em andamento. Os estados T1 e T2
são os únicos estados onde pode ocorrer sobreposição entre duas instruções. Durante o período
de busca da nova instrução a instrução anterior é encerrada. É a sobreposição entre a etapa de
busca de uma instrução e a etapa de execução da próxima instrução (SBE – Sobreposição Busca
Execução).
Estado T3 (ciclo de máquina M2): a instrução é lida da memória e enviada para o registador de
instrução para ser decodificada. No final deste estado a instrução já está decodificada e a unidade
de controlo inicia o comando das unidades envolvidas na execução da instrução.
Os mnemónicos são abreviaturas que lembram a função da instrução que representam, tais como
MOV (do inglês move, para as instruções de movimentação de dados).
Ex.:
Onde:
17
Um conjunto de instruções é o grupo de instruções para a execução das quais um
microprocessador em particular é projectado.
Instruções lógicas e aritméticas (AND, OR, XOR, ADI, ADD, SUB, ANI, RAL, DDA,
etc.);
Instruções de transferência de dados (MOV, IN, LDA, PUSH, etc.);
Instruções de desvio (JMP, CALL, RET, JNZ, RNZ, CC, RST, etc.);
Instruções de controlo de estado da máquina (HLT, EI, DI, SIM, RIM, NOP).
18
processador e fazem que o microprocessador não execute nenhuma operação (“no-ops”). Todas
elas são instruções de um byte e não requerem nenhum operando (endereçamento implícito).
Nos microprocessadores existem mecanismos que permitem inibir as interrupções quando elas
não são bem-vindas. No 8085, este controlo é feito através da máscara de interrupções (interrupt
mask) que é basicamente um registador que permite habilitar ou inibir individualmente as
interrupções RST 5.5, 6.5 e 7.5.
A habilitação das interrupções é feita através da instrução SIM (Set Interrupts Mask), que
transfere para a máscara um valor previamente colocado no acumulador. A figura abaixo, mostra
como o valor colocado no acumulador é interpretado pela instrução SIM.
Na figura, os bits 0, 1 e 2 inibem (bit igual 1) ou habilitam (bit igual a zero) as interrupções RST
5.5, 6.5 e 7.5, respectivamente, se o bit 3 estiver habilitado. Esse bit é colocado em zero quando
se deseja modificar o valor da máscara de interrupções apenas para controlar a porta de saída
serial, sem interferir no estado actual das interrupções. Sabe-se que cada uma das entradas RST
5.5, 6.5, 7.5 é dotada de um flip-flop que memoriza um pedido de interrupção feito enquanto a
interrupção correspondente estiver desabilitada deste modo, quando o bit 4 é colocado em 1
reinicia o flip-flop da entrada RST7.5 descartando a solicitação pendente. As solicitações das
outras entradas não podem ser canceladas.
19
O bit 5 não é utilizado. O bit 6 habilita (bit igual 1) ou inibe (bit igual 0) a escrita na porta serial.
O bit 7 é o dado (0 ou 1) enviado para fora do processador através do pino SOD (Serial Output
Data) quando a máscara de interrupção for escrita com bit 6 em 1.
Ex.:
MVI A, 18H
SIM
No 8085 há uma espécie de chave geral que permite habilitar ou inibir todas as interrupções de
uma só vez. Este controlo é feito pelas instruções EI (Enable Interrupts) e DI (Disable
Interrupts) que controlam o flag IE (Interrupt Enable). Se o flag IE estiver em 1 as interrupções
habilitadas pela máscara estarão de facto habilitadas.
No 8085, a máscara também pode ser lida. Para tanto, utiliza-se a instrução RIM (Read Interrupt
Mask), que transfere o estado actual da máscara para o acumulador.
Os bits 0 a2 têm a mesma interpretação da instrução SIM; o bit 3 é o flag IE (Interrupt Enable),
controlado pelas instruções EI e DI. Os bits 4 a 6 permitem saber o estado dos flip-flops das
interrupções RST 5.5 a 7.5, de modo que um programa em execução tenha como descobrir se há
pedidos pendentes, enquanto as interrupções estão desabilitadas.
A instrução HLT coloca o microprocessador em espera, isto é, para todo processamento até que
haja uma interrupção ou um reinício para que seja possível sair deste estado.
Ex.:
20
Na instrução NOP, nenhuma operação é realizada. A instrução é obtida e decodificada. Contudo
nenhuma operação é executada.
Ex.:
NOP
Conclusão
O microprocessador é um circuito integrado e dispositivo eletrónico lógico programável que
pode ser usado para controlo de processos de ligar e desligar diferentes dispositivos.
21
Referências bibliográficas
22