Académique Documents
Professionnel Documents
Culture Documents
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
INTRODUÇÃO
Microprocessador
Microprocessador8085
8085
z Intel 8080
– Primeiro microprocessador de 8 bits da Intel
– Sucessor do primeiro microprocessador do mundo (de 4 bits)
z Intel 8085
– Versão melhorada do 8080
– Primeiro microprocessador com grande sucesso comercial
– Muito usado em instrução por ter uma arquitectura simples e
“limpa”
8 bits de dados
V.Lobo @ EN
11
Arquitectura interna
Microprocessador
D7-D0 Microprocessador8085
8085
B1-DIRECTIONAL
DATA BUS
DATA BUS
BUFFER/LATCH
(8 BIT)
INTERNAL DATA BUS
ARITHMETI INSTRUCTION
LATCH DECODER AND 8 E 8
8 C D
LOGIC MACHINE REG. REG.
UNIT CYCLE H 8 8
L REGISTE
(ALU) 8 ENCODING REG. REG. R
16 ARRAY
STACK POINTER
16
PROGRAM COUNTER
DECIMAL TIMING
ADJUST AND INCREMENTER/DECREMENTER
CONTROL ADDRESS LATCH 16
V.Lobo @ EN
WR RD IO/M S0 S1 ALE INT INTA RST & TRAP SID SOD HOLD HOLD
ACK
x1 X2 CLK OUT READY
RESET IN ADRESS BUS 22
Página 1
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Implementação em Silício
Microprocessador
Microprocessador8085
8085
z Nº de transistors: 6000
z Diferentes modelos,
que se diferenciam por:
– Frequência. de relógio
– Tecnologia de
construção (NMOS,
CMOS, largura das pistas,
etc)
– Robustez de
encapsulamento
V.Lobo @ EN
33
REGISTOS
Microprocessador
Microprocessador8085
8085
A
B C
D E
H L
V.Lobo @ EN
44
Página 2
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
REGISTOS
Microprocessador
Microprocessador8085
8085
z Program Counter
– Contém o endereço da próxima instrução a ser executada
z Stack Pointer
– Contém o endereço do topo do stack (é gerido pelo µP)
z STACK
– Estrutura computacional que permite guardar dados numa
base LIFO (Last In First Out)
– Comporta-se como uma pilha de livros onde podem ser
postos livros, e retirados
– O acesso ao stack é feito APENAS COM DUAS INSTRUÇÕES:
→PUSH - põe um dado (de 16 bits) no stack
→POP - retira um dado (de 16 bits) do stack
Instruções:
PUSH BC PUSH DE PUSH HL PUSH PSW
POP BC POP DE POP HL POP PSW
LXI SP,(endereço inicial do stack)
V.Lobo @ EN
55
FLAGS
Microprocessador
Microprocessador8085
8085
Z S CY P AC
V.Lobo @ EN
66
Página 3
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
FLAGS
Microprocessador
Microprocessador8085
8085
z As flags são:
– Z Zero
→1 = O resultado da última operação foi 0
→0 = O resultado da última operação não foi 0
– S Sign (igual ao bit mais significativo; assume notação de complemento para 2)
→1 = O resultado da última operação é < 0
→0 = O resultado da última operação é ≥ 0
– CY Carry
→1 = Houve Carry
→0 = Não houve Carry
– P Parity
→1 = Paridade Par
→ 0 = Paridade Ímpar
– AC AUXILARY CARRY
→1 = Houve Carry em BCD
→0 = Não houve Carry em BCD
V.Lobo @ EN
77
INSTRUCTION SET
Microprocessador
Microprocessador8085
8085
Página 4
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
MOVER DADOS
Microprocessador
Microprocessador8085
8085
z Modos de endereçamento
– Há várias maneiras de referir o dado que se pretende usar:
Imediato 36
V.Lobo @ EN
99
MOVER DADOS
Microprocessador
Microprocessador8085
8085
z MOV r1,r2
– Move os dados (8 bits) do registo r2 para o registo r1
– Ex: MOV A,B ; põe no acumulador o conteúdo de B
MOV H,D ; põe em H o conteúdo de D
Página 5
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
MOVER DADOS
Microprocessador
Microprocessador8085
8085
z XCHG (exchange)
– Troca o conteúdo de HL com DE
V.Lobo @ EN
11
11
MOVER DADOS
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
12
12
Página 6
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
OPERAÇÕES ARITMÉTICAS
Microprocessador
Microprocessador8085
8085
z ADD r / ADC r
– Somar o registo ao acumulador ( C/CARRY )
z ADD M / ADC M
– Somar a memória ao acumulador ( C/CARRY )
MVI A, 255
MVI B,1
MVI C,2
Exemplos ADD B
ADI 30
ADC C
Agora, qual o valor de A ?
V.Lobo @ EN
13
13
OPERAÇÕES ARITMÉTICAS
Microprocessador
Microprocessador8085
8085
z SUB r / SBB r
– Subtrair o registo ao acumulador ( C/Borrow)
z SUB M / SBB M
– Subtrair a memória ao acumulador ( C/Borrow )
MVI A,10
Exemplos SUI 03
MVI B,AFH
MVI C,10H
ADD B
SBB C
Agora, qual o valor de A ?
V.Lobo @ EN
14
14
Página 7
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
OPERAÇÕES ARITMÉTICAS
Microprocessador
Microprocessador8085
8085
z DAD rp
– adicionar o par rp ao par HL DAD BC
z DAA
– Corrigir uma soma /subtracção em BCD DAA
z INR r
– incrementar o registo r INR B
z INR M
– Incrementar o conteúdo da posição apontada por HL INR M
z INX rp
– Incrementar o par de registos rp INX BC
– O par rp (BC, DE, ou HL), comporta-se como um número de 16 bits
V.Lobo @ EN
15
15
OPERAÇÕES ARITMÉTICAS
Microprocessador
Microprocessador8085
8085
z DCR r
– Decrementar o registo r
z DCR M
– Decrementar o conteúdo da posição apontada por HL
z DCX rp
– Decrementar o par de registos rp
MVI H,00H
MVI L,FFH
Exemplos INX H
MVI L,FF
INC L
DCR M
DCR H
Agora, qual o valor de H e L ?
V.Lobo @ EN
16
16
Página 8
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
OPERAÇÕES ARITMÉTICAS
Microprocessador
Microprocessador8085
8085
z OPERAÇÕES DE COMPARAÇÃO
– Subtraem os operandos mas não guardam o resultado.
– Afectam as flags, que podem depois ser usadas para tomar
decisões do tipo “se B=A então...”
z CMP r
– comparar o acumulador com o registo R
z CMP M
– Comparar o acumulador com o conteúdo da posição apontada
por HL
z CPI data 8
– Comparar o acumulador com o valor indicado
V.Lobo @ EN
17
17
OPERAÇÕES LÓGICAS
Microprocessador
Microprocessador8085
8085
z ANA r
– AND lógico entre o acumulador e o registo r
z ANA M
– AND lógico entre o acumulador e a posição apontada por HL
z ANI data 8
– AND lógico entre o acumulador e o dado indicado
MVI A,10H
MVI B,FFH
Exemplos MVI C,10H
CMP C
ANA B
CMP B
Agora, qual o valor de A,B,C, e
das FLAGS ?
V.Lobo @ EN
18
18
Página 9
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
OPERAÇÕES LÓGICAS
Microprocessador
Microprocessador8085
8085
z ORA r
– OR lógico entre o acumulador e o registo r
z ORA M
– OR lógico entre o acumulador e a posição apontada por HL
z ORI data 8
– OR lógico entre o acumulador e o dado indicado
MVI A,F8H
ANI 08H
ORI 02
Agora, qual o valor de A ?
V.Lobo @ EN
19
19
z Jumps
– Fazem com que a próxima instrução não seja a instrução
imediatamente a seguir, mas sim outra qualquer
z JMP addr 16
– Salta para o endereço dado
z JNZ addr 16
– Salta para o endereço dado se Z=0 (o acumulador ≠ 0)
z JZ addr16
– Salta para o endereço dado se Z=1 (o acumulador = 0)
z JNC addr 16
z JC addr 16
– Salta para o endereço dado se CY=0 / CY=1
V.Lobo @ EN
20
20
Página 10
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
z JPE addr 16
– Salta se P=1 (parity even)
z JPO addr 16
– Salta se P=0 (parity odd)
z JP addr 16
– Salta se S=0 (positive)
z JM addr 16
– Salta se S=1 (minus)
z PCHL
– Põe em “PC” o conteúdo “HL” ⇒ Salta para o endereço contido
em HL.
– É como se fosse JMP M.
V.Lobo @ EN
21
21
ROTAÇÕES
Microprocessador
Microprocessador8085
8085
CY MSB LSB
z RLC
– Rotate (acumulator) left to
carry
CY MSB LSB
z RRC
– Rotate right to carry
CY MSB LSB
z RAL
– Rotate left through carry
CY MSB LSB
z RAR
– Rotate right trough carry
V.Lobo @ EN
22
22
Página 11
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
NEGAÇÕES E “SET”
Microprocessador
Microprocessador8085
8085
z CMA
– Complementa o acumulador
z CMC
– Complementa a flag carry
z STC
– Set carry flag ( faz cy=1)
V.Lobo @ EN
23
23
METODOLOGIA EM ASSEMBLER
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
24
24
Página 12
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
METODOLOGIA EM ASSEMBLER
Microprocessador
Microprocessador8085
8085
z FAZER CODIFICAÇÃO
– Escrever uma tabela com as mnenónicas, endereço, código
máquina, e nº de bytes usados
EXEMPLOS:
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
26
26
Página 13
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
SUB - ROTINAS
Microprocessador
Microprocessador8085
8085
z Objectivo
– Dividir o programa em tarefas simples e modulares
– Criar procedimentos que podem ser “chamados” de diversos
pontos do programa.
z Vantagens
– Código mais compacto
→Se é necessário fazer várias vezes a mesma coisa, existe
apenas 1 porção de código para a executar
– Código mais modular
→Permite uma programação mais ordenada e estruturada
– Menos erros
→As sub-rotinas podem ser testadas uma a uma
V.Lobo @ EN
27
27
INSTRUÇÕES CALL/RET
Microprocessador
Microprocessador8085
8085
z CALL addr 16
– Chama uma sub-rotina
– Guarda o endereço contido em “pc” no stack e salta para o
endereço “addr”
z RET
– Retorna de uma sub-rotina
– Vai buscar um endereço ao stack, e salta para esse endereço
Página 14
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Calls condicionais
Microprocessador
Microprocessador8085
8085
z Exemplo
Converter o valor de [2000]
Rotina que recebe um dado no acumulador
em negativo se ele for positivo
e calcula o complemento para 2
LDA 2000
CMA ; complementa A
ANA A
INR A ; soma 1
CP 2A00
RET
STA 2000
V.Lobo @ EN
29
29
PASSAGEM DE PARÂMETROS
Microprocessador
Microprocessador8085
8085
z 1 - NOS REGISTOS
– Nº limitado de parâmetros
– Rápido e eficiente
z 3 - NO STACK
– Nº ilimitado de parâmetros
– Não interfere c/ o resto do programa
– Diversas convenções sobre quem põe e/ou tira os dados do Stack
V.Lobo @ EN
30
30
Página 15
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Exemplo de parâmetros
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
31
31
Passagem de Parametros
Microprocessador
Microprocessador8085
8085
z Passagem de parâmetros “à C”
– A rotina que põe os dados no stack antes de chamar a sub-rotina,
retira-os após o retorno
– Permite que se use um nº de parâmetros reais inferior ao nº de
parâmetros formais
– Cada rotina deixa o stack pointer exactamente na mesma
posição em que o recebeu
– Os parâmetros são metidos no stack “da direita para a esquerda”
V.Lobo @ EN
32
32
Página 16
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
V.Lobo @ EN
33
33
SOFTWARE INTERRUPTS
Microprocessador
Microprocessador8085
8085
Página 17
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
z Ocupam só 1 byte
z Objectivos
– Forçar o µp a actuar em função de um “evento” externo (que o
fará executar um certo programa)
– O µP não tem que perder tempo a verificar o sistema, pois o
sistema avisa-o quando é necessário
– Eventos urgentes são prontamente atendidos
z Há 2 tipos de interrupções
– Umas dependem directamente de pinos do µP, outras necessitam
de circuitos externos
V.Lobo @ EN
36
36
Página 18
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Interrupções directas
Microprocessador
Microprocessador8085
8085
z Pino INTR
– Existe um pino de entrada INTR pelo qual o µP recebe o pedido de
interrupção
– Quando poder atender a interrupção, o µP responde com a
activação do pino de saída INTA (interrupt acknolege)
– Quando é gerado um INTA o up vai gerar um ciclo de “opfetch”
(leitura do opcode da memória) mas sem pôr um endereço no bus
→quem gerou o INTR tem que fornecer um opcode
V.Lobo @ EN
38
38
Página 19
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Exemplo simples
Microprocessador
Microprocessador8085
8085
Software
Ligações físicas
Prog.Pincipal Rotina de interrupção
Endereço Conteúdo
Interruptor Rst 5.5
inst.1
002C INC B
inst.2
002D RET
8085 inst.3
...
...
...
NOTA: Como veremos adiante,
esta rotina teria alguns problemas
V.Lobo @ EN
de carácter prático 39
39
Máscara de interrupções
Microprocessador
Microprocessador8085
8085
Página 20
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Máscara de interrupções
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
41
41
Máscaras (1=Disable)
Mask Set Enable (1=Enable Interrupts)
Reset do Flip-flop do RST 7.5
Máscaras (1=Disable)
Interrupt Enable (1=Enable Interrupts)
Interrupções pendentes (1=pendente)
V.Lobo @ EN
42
42
Página 21
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Prioridades
Microprocessador
Microprocessador8085
8085
V.Lobo @ EN
43
43
z São assíncronas
– Não é possível saber em que ponto do código é que vão ser
chamadas
– logo torna-se necessário salvaguardar o contexto:
→PC é guardado automaticamente pelo “CALL”
→FLAGS e ACC têm de ser guardados quase sempre (PUSH PSW)
→Outras reg. só os que forem usados
V.Lobo @ EN
44
44
Página 22
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
RIM SIM
SID 7.5 6.5 5.5 IE 7.5 6.5 5.5 SOD SOE N.U. 7.5 MSE 7.5 6.5 5.5
z IN addr8
– Lê do porto IO indicado para o Acumulador
z OUT addr8
– Escreve do Acumulador para o porto de IO indicado
V.Lobo @ EN
46
46
Página 23
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
V.Lobo @ EN
47
47
X1 → 1 40 ← Vcc (+5V)
z Existem várias X2
Reset Out
→
←
2
3
39
38
←
→
Hold
Hlda
“embalagens” SOD ← 4 37 → Clock out
SID → 5 36 ← ~Reset In
(packaging options) TRAP → 6 35 ← Ready
RST 7.5 → 7 34 → IO/~M
RST 6.5 → 8 33 → S1
z Forma mais vulgar RST 5.5 → 9 32 → ~RD
(disponível no INTR
~INTA
→
←
10
11
31
30
→
→
~WR
ALE
laboratório) AD0 ↔ 12 29 → S0
AD1 ↔ 13 28 → A15
– DIP de 40 pinos AD2 ↔ 14 27 → A14
– Níveis TTL AD3 ↔ 15 26 → A13
AD4 ↔ 16 25 → A12
AD5 ↔ 17 24 → A11
z Pinout do 8085: AD6
AD7
↔
↔
18
19
23
22
→
→
A19
A9
Vss → 20 21 → A8
V.Lobo @ EN
48
48
Página 24
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
A8-A15
Addr Data
AD0-AD7 A0-A7
8085
Latch ALE
ALE D0-D7
V.Lobo @ EN
49
49
Pinos de temporização/reset/interrupts
Microprocessador
Microprocessador8085
8085
z X1, X2
– Ligados a um cristal externo para gerar o clock de sistema.
– Montagem típica:
z CLK out
– Clock de sistema para os periféricos
z ~Reset In
– Mantido a 0 durante 4 ciclos de relógio força uma reinicialização
z Reset out
– Usado para fazer reset aos outros componentes do sistema
V.Lobo @ EN
50
50
Página 25
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Outros pinos
Microprocessador
Microprocessador8085
8085
z Vcc e Vss
– Alimentação (5V cc) e massa
z SID, SOD
– Comunicações série
z S0, S1
– Status (para ver o ciclo de BUS)
V.Lobo @ EN
51
51
z Funcionamento
– Quando alguém quer o BUS, gera um pedido de HOLD ao µP
– Quando o µP poder prescindir do BUS, põe as suas saídas em Tri-
State, e activa o pino HLDA (Hold Acknowledge)
HOLD
HLDA 8085
V.Lobo @ EN
52
52
Página 26
Microprocessadores
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Ciclos de Bus
Microprocessador
Microprocessador8085
8085
z Ciclos T e ciclos M
z Há só 7 de ciclos máquina (M) no BUS:
– OF, MR, MW, IOR, IOW, INA, BI
Página 27