Você está na página 1de 22

Índice

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

Instrução Efeito Código de Posição do Pino


operação Vector
TRAP CALL 0024h Não tem 0024h 6
RST 5.5 CALL 002Ch Não tem 002Ch 9
RST 6.5 CALL 0034h Não tem 0034h 8
RST 7.5 CALL 003Ch Não tem 003Ch 7

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 é:

Interrupção Prioridade Posição do Vector


TRAP 1 0024h
RST 7.5 2 003Ch
RST 6.5 3 0034h
RST 5.5 4 002Ch
INTR 5 Nenhuma

Quando um pedido de interrupção é feito, o microprocessador termina a execução da instrução


em curso para somente depois atender a interrupção pendente. A interrupção INTR, também
presente na tabela de prioridades é um canal que permite expandir a capacidade de interrupção. É
então usado um CI extra para essa expansão, como será visto numa seção posterior.

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.

RST 7.5 - accionada por transição somente

RST 6.5 - accionada apenas por nível

RST 5.5 - accionada apenas por nível

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

Fig2. Circuito de interrupção TRAP

Unidade de controlo de Entrada/Saída Serial


É através dessa unidade que o microprocessador recebe e envia dados de forma serial, ou seja, bit
a bit, ao invés de um byte por vez. O pino SID (Serial Input Data) é usado para a entrada de
dados de forma serial e o pino SOD (Serial Output Data) é usado para a saída de dados de forma
serial.

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.

Unidade Lógico-Aritmética (ULA ou ALU)


É responsável por todo o processamento realizado na CPU (execução de instruções aritméticas e
lógicas). É controlada por sinais internos emitidos pela Unidade de Controlo. Tem como entrada
os registadores A (Acumulador) e TEMP (Temporário). É responsável pela sinalização de Status
das operações (FLAGS). É um registador de 8 bits.

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.

Unidade de Controlo e Interrupção

Fig3. Controlo de interrupção

Responsável pelo tratamento das 5 interrupções externas.

RST n salta para a posição de memória 8 vezes n. São interrupções mascaráveis (bloqueadas
através de software).

 RST 5.5 = 44d = 002CH


 RST 6.5 = 0034H
 RST 7.5 = 003CH

Não mascarável. É a de maior prioridade. Utilizada para um desligamento seguro do micro.

 TRAP.

Permite um número maior de interrupções

 INTR.

Unidade de Entrada e Saída serial


Microprocessador recebe e envia dados seriais.

SID – Serial Input data.

7
SOD – Serial Output data.

Fig4. Controlo de E/S Serial

Unidade de Temporização e Controle


Responsável por gerar todos os controles para o 8085 e unidades externas.

 Sinal de leitura - *RD;


 Sinal de escrita - *WR;
 Liberação de barramento para periférico – HLDA;
 Sinal de habilitação de endereço – ALE.

Fig5. Unidade de Temporização e Controle

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

Instrução Efeito Código de operação Posição do Vector


RST 0 CALL 0000h C7 0000h
RST 1 CALL 0008h CF 0008h
RST 2 CALL 0010h D7 0010h
RST 3 CALL 0018h DF 0018h
RST 4 CALL 0020h E7 0020h
RST 5 CALL 0028h EF 0028h
RST 6 CALL 0030h F7 0030h
RST 7 CALL 0038h FF 0038h

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, nos microprocessadores 8085 e 8086/8088 e no microcontrolador 8051, é uma região da


memória reservada pelo usuário, para armazenar temporariamente valores que se deseja guardar
enquanto o registador associado é utilizado em outras operações e para guardar endereços de
retorno em chamadas de sub-rotinas e em interrupções.

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.

No 8085 e no 8086/8088 a pilha cresce no sentido decrescente do endereço de memória

Fig6. Pilha no 8085 e no 8086/8088

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.

Exemplo de armazenamento na pilha:

Supondo que inicialmente SP = 2090 h, A = 01 h, F = 23 h, B = 45 h e C = 67 h, as figuras a


seguir mostram a evolução da pilha após cada instrução dada. A região em destaque corresponde
à posição apontada por SP após a instrução.

Métodos de controlo de entrada e saída


Referem-se a técnicas de Hardware e Software utilizadas para controlar o fluxo de dados entre o
computador e seus periféricos. Os três métodos mais frequentemente encontrados são:

 Varredura (ou E/S por consulta ou Pooling}

Técnica de comunicação na qual o processador interroga periodicamente o periférico para


determinar seu estado. Ela pode ser síncrona ou assíncrona

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

Técnica de comunicação na qual o processador somente é ocupado se há pedido de serviço de


algum periférico. Possui um mecanismo assíncrono; a transferência de dados é feita por Software
(mais lento que DMA).

 DMA (Direct Memory Access)

Técnica de comunicação na qual não se interrompe o processamento do microprocessador (se a


instrução em curso não faz acesso ao barramento). O DMAC (controlador de DMA) envia o sinal
HOLD requerendo o barramento e a CPU responde com HLDA. O DMAC passa a controlar as
linhas de dados, linhas de endereço, e sinais de controlo (RD, WR, etc.); a transferência de dados
é feita por Hardware.

Instruções de Controlo, Pilha e Entrada e Saída


As instruções desse grupo não afectam os flags, a menos que seja indicado.

Mnemónic Símbolo Número Número Modo de Flags


o genérico de de endereçamento afectados
ciclos estados
PUSH rp ((SP) - 1 ← (rh) 3 12 Indirecto por Nenhum
((SP) - 2 ← (rl) Registador
(SP) ← (SP) – 2
PUSH ((SP) - 1 ← (A) 3 12 Indirecto por Nenhum
PSW ((SP) - 2 ← (F) Registador
(SP) ← (SP) - 2
POP rp (rl) ← ((SP)) 3 10 Indirecto por Nenhum
(rh) ← ((SP) + 1) Registador
(SP) ← (SP) + 2
POP PSW (F) ← ((SP)) 3 10 Indirecto por Todas
(A) ← ((SP) + 1) Registador
(SP) ← (SP) + 2
XTHL (L) ← ((SP)) 5 16 Indirecto por Nenhuma

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

Comentário do mnemónico genérico (PUSH rp)

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

Comentário do mnemónico genérico (PUSH PSW)

(Push Processor Status Word) = O conteúdo dos registadores A (acumulador) e F (flags) é


guardado na pilha. O conteúdo do Acumulador é guardado na posição de memória indicada por
SP –1. O conteúdo do registador F é guardado na posição de memória indicada por SP – 2.

Comentário do mnemónico genérico (POP rp)

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.

Comentário do mnemónico genérico (POP PSW)

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.

Comentário do mnemónico genérico (XTHL)

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

Comentário do mnemónico genérico (IN porta)

(Input = Entrada) = O dado colocado na porta indicada é transferido para o acumulador através
do barramento de dados (8 bits).

Comentário do mnemónico genérico (OUT porta)

(Output = Saída) = O dado do acumulador é transferido para a porta indicada através do


barramento de dados (8 bits).

A execução de uma instrução no microprocessador 8085

A execução de uma instrução no microprocessador 8085 começa com a busca da instrução na


memória e na decodificação dessa instrução. Isso ocorre em três ciclos de clock.

Fig6. Ciclos de máquina e de instrução do 8085

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.

Se o ciclo de execução ocorrer em mais de um ciclo de clock inicia-se um novo ciclo


denominado de ciclo de máquina. A cada início de um novo ciclo de máquina tem um novo valor
do contador de programa PC. O primeiro ciclo de máquina tem três ciclos de clock (T1 a T4), os
demais tem três ciclos de clock (T1, T2 e T3). O diagrama de temporização mostrado na Fig.
acima ilustra os sinais de controle presentes durante a execução de uma instrução. São mostrados
apenas os dois primeiros ciclos de máquina.

Fig7. Ciclos de máquina e de instrução do 8085

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 T2 (ciclo de máquina M1): o barramento está liberado. O conteúdo do registador PC é


incrementado em uma unidade, preparando-se para a busca da próxima instrução ou do segundo
byte da instrução em andamento.

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.

Estado T1 (ciclo de máquina M2): 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. Nesse ciclo de máquina M2 o conteúdo buscado pode ser 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 T2 (ciclo de máquina M2): o barramento está liberado. O conteúdo do registador PC é


incrementado em uma unidade, preparando-se para a busca da próxima instrução ou do terceiro
byte da instrução em andamento. Nesse período, o barramento é usado para encerramento da
instrução anterior.

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.

Conjunto de instruções de microprocessadores.

Instrução é o código de programação, que inclui mensagens enviadas ao processador, ordens de


impressão, entre outras. Ela é representada por uma mnemónica que correspondem directamente
aos códigos hexadecimais do computador.

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

Um programa escrito em mnemónicas diz-se escrito em linguagem Assembly.

Em Assembly, cada linha de um programa geralmente apresenta os seguintes campos: label


(rótulo), mnemónicos, operandos e comentário.

Ex.:

START: MVI A,00H ; Inicializa o contador

Onde:

SART é o label e MVI é o mnemónico da instrução. Os operandos são A e 00H.

17
Um conjunto de instruções é o grupo de instruções para a execução das quais um
microprocessador em particular é projectado.

As instruções em microprocessadores, podem ser agrupadas em várias categorias ou


classificações:

 Instruções de manipulação de dados (instruções lógicas e aritméticas) – permitem


efectuar operações como adição, subtracção, deslocamento de bits, complemento,
incremento e ajuste decimal;
 Instruções de transferência de dados - permitem transferir dados entre registadores,
memória e periféricos;
 Instruções de controlo do programa (instruções de desvio) – permitem alterar a sequência
normal de execução do programa, através de chamadas e retornos de sub-rotinas ou
saltos;
 Instruções de controlo de estado da máquina (instruções de controlo do processador) –
permitem controlar o estado de execução, tais como a retenção ou a habilitação de
interrupções;
 Instruções de referência à memória – permitem especificar um endereço da memória
onde uma palavra deverá ser armazenada ou de onde uma palavra deve ser lida.

Instruções do microprocessador Intel 8085.


As instruções do 8085 classificam-se geralmente em quatro tipos:

 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).

Instruções de controlo do estado da máquina.


Estas instruções controlam a operação do próprio microprocessador. Neste grupo estão incluídas
as instruções que param o microprocessador, controlam certos flags no registador de estado do

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

As instruções de controlo do estado da máquina do microprocessador Intel 8085 são:

 SIM (Set Interrupts Mask = Define Máscara de Interrupção);


 RIM (Read Interrupt Mask) = ler máscara de Interrupção);
 DI (Disable Interrupts = Desabilitar interrupções);
 EI (Enable Interrupts = Habilitar Interrupções);
 NOP (No Operation = nenhuma operação é realizada);
 HLT (Halt and enter wait state = retenção).

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

L1: HLT ; Espera que haja uma interrupção


JMP L1 ; Volta para instrução de espera

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.

As instruções são códigos de programação e são representadas por mnemónicos. As instruções


de modo geral são divididas em cinco categorias, mas no microprocessador Intel 8085 apenas
quatro categorias são encontradas.

A instrução de controlo de processos possibilita priorizar operações de instruções que serão


executadas, sabendo no decorrer das instruções existem prioridades assim como interrupções do
próprio usuário. As instruções do processador deverão estar em disponibilidade de controlar
todas as operações feitas incluindo as interrupções feitas.

No 8085, as instruções de controlo de estado de máquina servem para controlar a retenção e


habilitar ou inibir interrupções onde podemos encontrar seis (NOP, HLT, DI, EI, SIM, RIM) e
elas não precisam de qualquer operando em seus mnemónicos.

21
Referências bibliográficas

 Ziller, Roberto M., “Microprocessadores – Conceitos Importantes,” Editora do autor,


Florianópolis, SC, 2000.
 TAUB, Herbert. Circuitos Digitais e Microprocessadores. São Paulo, McGraw Hill,
1984.

 Tutorial do Emulador emu8086 – http://www.emu8085.com

22

Você também pode gostar