Microprocessadores
INTRODUO
Microprocessador 8085 Microprocessador 8085
Intel 8080
Primeiro microprocessador de 8 bits da Intel Sucessor do primeiro microprocessador do mundo (de 4 bits)
Intel 8085
Verso melhorada do 8080 Primeiro microprocessador com grande sucesso comercial Muito usado em instruo por ter uma arquitectura simples e limpa
8 bits de dados
V.Lobo @ EN
1 1
Arquitectura interna
D7-D0 B1-DIRECTIONAL DATA BUS
ACCUMULATOR 8
TEMP. REG.
FLAG FLIP-FLOPS 5
INSTRUCTION REGISTER 8
MULTIPLEXER 8 W TEMP. REG. 8 Z TEMP. REG. 8 C REG. 8 E REG. L REG. 8 16 16 REGISTE R ARRAY
REGISTER SELECT
ACCUMULATOR LATCH 8
8 8 8
DECIMAL ADJUST
INTERRUPT CONTROL
SERIAL PORT
HOLD CONTROL
CLOCKS
16
WR RD IO/M S0 S1 ALE
V.Lobo @ EN
INT INTA RST & TRAP SID SOD HOLD HOLD ACK
2 2
Pgina 1
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Implementao em Silcio
N de transistors: 6000
Microprocessador 8085 Microprocessador 8085
Incio de fabrico: Abril 1974 (8080) Fabricado pela INTEL e por vrios outros fabricantes sob licena (p.exemplo, Siemens, Philips, Texas, etc) Diferentes modelos, que se diferenciam por:
Frequncia. de relgio Tecnologia de construo (NMOS, CMOS, largura das pistas, etc) Robustez de encapsulamento
V.Lobo @ EN
3 3
REGISTOS
Microprocessador 8085 Microprocessador 8085
A B D H
V.Lobo @ EN
C E L
4 4
Pgina 2
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
REGISTOS
Program Counter Stack Pointer
Contm o endereo do topo do stack ( gerido pelo P)
Microprocessador 8085 Microprocessador 8085
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 INSTRUES: PUSH - pe um dado (de 16 bits) no stack POP - retira um dado (de 16 bits) do stack
Instrues: PUSH BC PUSH DE PUSH HL PUSH PSW POP BC POP DE POP HL POP PSW LXI SP,(endereo inicial do stack)
V.Lobo @ EN
5 5
FLAGS
Microprocessador 8085 Microprocessador 8085
Existe um registo especial que guarda indicaes sobre a ltima operao efectuada pelo P. Esse registo tem 5 bits, ou FLAGS Qualquer operao de aritmtica ou lgica afecta essas flags Cada bit pode ser interrogado separadamente por instrues que necessitam de saber se a ltima operao provocou um carry se o resultado foi 0, etc. Z
V.Lobo @ EN
S CY P AC
6 6
Pgina 3
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
FLAGS
Microprocessador 8085 Microprocessador 8085
As flags so:
Z Zero 1 = O resultado da ltima operao foi 0 0 = O resultado da ltima operao no foi 0 S Sign (igual ao bit mais significativo; assume notao de complemento para 2) 1 = O resultado da ltima operao < 0 0 = O resultado da ltima operao 0 CY Carry 1 = Houve Carry 0 = No houve Carry P Parity 1 = Paridade Par 0 = Paridade mpar AC AUXILARY CARRY 1 = Houve Carry em BCD 0 = No houve Carry em BCD
V.Lobo @ EN
7 7
INSTRUCTION SET
Microprocessador 8085 Microprocessador 8085
Cada instruo um nmero ou cdigo mquina Para facilidade de leitura cada instruo representada (no papel) por uma mnemnica, que se assemelha ao seu significado em ingls
Ex: A instruo CFH faz um restart e tem a mnemnica RST Um programa escrito em mnemnicas diz-se escrito em Assembly Language, ou Assembler
8 8
Pgina 4
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
Modos de endereamento
H vrias maneiras de referir o dado que se pretende usar:
Nome do modo Argumento passado instruo Dado usado
Imediato Directo por registo Directo por Endereo Indirecto por registo Indirecto por endereo Indexado
V.Lobo @ EN
MOVER DADOS
MOV r1,r2
Microprocessador 8085 Microprocessador 8085
Move os dados (8 bits) do registo r2 para o registo r1 Ex: MOV A,B ; pe no acumulador o contedo de B MOV H,D ; pe em H o contedo de D
MOV r1,M
/ MOV M,r1
Move os dados (8 bits) do endereo apontado por HL para o registo r1, ou vice-versa Ex: MOV M,A ; pe o contedo do acumulador no ; endereo de memria apontado por HL
LDAX rp
STAX rp
V.Lobo @ EN
Move para o acumulador o contedo do endereo apontado pelo par de registos rp, ou vice-versa. Ex: STAX BC; pe o contedo do acumulador no ; endereo de memria apontado por BC LDAX HL; equivale a MOV A,M 10 10
Pgina 5
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
(move imediate) Move para o registo r1 o dado indicado. Ex: MVI A,00 ; pe no acumulador o valor 0 MVI B,A0H ; pe em B o valor 160 (load pair imediate)
LXI rp,data(16bits)
Move para o par de registos rp o dado indicado. Ex: LXI BC,0000 ; pe no par BC o valor 0 LXI HL,3F00H ; pe em HL o valor 3F00
XCHG
(exchange)
V.Lobo @ EN
11 11
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
LDA addr
(Load Acumulator)
Mover um dado do endereo ADDR para o acumulador EX: LDA 1000 ; Carrega o acumulador com o dado ; contido no endereo de memria 1000
STA addr
(Store Acumulator) Mover um dado do acumulador para o endereo ADDR EX: STA FFFF ; Carrega no endereo de memria FFFF ; o dado contido no acumulador
V.Lobo @ EN
Pgina 6
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
ADD r / ADC r
Somar o registo ao acumulador ( C/CARRY )
ADD M / ADC M
Somar a memria ao acumulador ( C/CARRY )
Exemplos
V.Lobo @ EN
13 13
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
SUB r / SBB r
Subtrair o registo ao acumulador ( C/Borrow)
SUB M / SBB M
Subtrair a memria ao acumulador ( C/Borrow )
Exemplos
V.Lobo @ EN
Pgina 7
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
DAD rp
adicionar o par rp ao par HL DAD BC
DAA
Corrigir uma soma /subtraco em BCD DAA
INR r
incrementar o registo r INR B
INR M
Incrementar o contedo da posio apontada por HL INR M
INX rp
Incrementar o par de registos rp INX BC O par rp (BC, DE, ou HL), comporta-se como um nmero de 16 bits
V.Lobo @ EN
15 15
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
DCR r
Decrementar o registo r
DCR M
Decrementar o contedo da posio apontada por HL
DCX rp
Decrementar o par de registos rp MVI H,00H MVI L,FFH INX H MVI L,FF INC L DCR M DCR H Agora, qual o valor de H e L ?
Exemplos
V.Lobo @ EN
16 16
Pgina 8
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
OPERAES DE COMPARAO
Subtraem os operandos mas no guardam o resultado. Afectam as flags, que podem depois ser usadas para tomar decises do tipo se B=A ento...
CMP r
comparar o acumulador com o registo R
CMP M
Comparar o acumulador com o contedo da posio apontada por HL
CPI data 8
Comparar o acumulador com o valor indicado 17 17
V.Lobo @ EN
OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085
ANA r
AND lgico entre o acumulador e o registo r
ANA M
AND lgico entre o acumulador e a posio apontada por HL
ANI data 8
AND lgico entre o acumulador e o dado indicado MVI A,10H MVI B,FFH MVI C,10H CMP C ANA B CMP B Agora, qual o valor de A,B,C, e das FLAGS ?
Exemplos
V.Lobo @ EN
18 18
Pgina 9
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085
ORA r
OR lgico entre o acumulador e o registo r
ORA M
OR lgico entre o acumulador e a posio apontada por HL
ORI data 8
OR lgico entre o acumulador e o dado indicado
19 19
Jumps
Fazem com que a prxima instruo no seja a instruo imediatamente a seguir, mas sim outra qualquer
JMP
addr 16
JNZ addr 16
Salta para o endereo dado se Z=0 (o acumulador 0)
JZ JNC JC
V.Lobo @ EN
Pgina 10
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
21 21
ROTAES
Microprocessador 8085 Microprocessador 8085
RLC
CY
MSB
LSB
RRC
RAL
CY
MSB
LSB
RAR
CY
MSB
LSB
V.Lobo @ EN
Pgina 11
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
NEGAES E SET
Microprocessador 8085 Microprocessador 8085
CMA
Complementa o acumulador
CMC
Complementa a flag carry
STC
Set carry flag ( faz cy=1)
V.Lobo @ EN
23 23
METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085
V.Lobo @ EN
Pgina 12
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085
FAZER CODIFICAO
Escrever uma tabela com as mnennicas, endereo, cdigo mquina, e n de bytes usados Mnemnicas MVI MVI SUB DEC A,FFH B,02H B A Endereo Cdigo 4000H 4002H 4004H 4005H XX XX XX XX XX XX NBytes 2 2 1 1
EXEMPLO: Comparar 2 bytes que se encontram em endereos consecutivos. se forem iguais fazer A=1, caso contrrio, fazer A=2. Comece o cdigo no endereo 6000H, e compare o contedo do endereo 2000H com o seguinte.
V.Lobo @ EN
25 25
EXEMPLOS:
Microprocessador 8085 Microprocessador 8085
Escreva programas para: Comparar dois bytes que se encontram em endereos consecutivos. Se forem iguais fazer a=0, se o primeiro for maior, fazer a=1, caso contrrio fazer a=2. Assuma que o endereo do primeiro byte 3010H. Fazer a soma de 2 nmeros de 3 bytes, que se encontram nos endereos apontados por HL e por DE, deixando o resultado no endereo originalmente apontado por HL
V.Lobo @ EN
26 26
Pgina 13
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
SUB - ROTINAS
Microprocessador 8085 Microprocessador 8085
Objectivo
Dividir o programa em tarefas simples e modulares Criar procedimentos que podem ser chamados de diversos pontos do programa.
Vantagens
Cdigo mais compacto Se necessrio fazer vrias vezes a mesma coisa, existe apenas 1 poro de cdigo para a executar Cdigo mais modular Permite uma programao mais ordenada e estruturada Menos erros As sub-rotinas podem ser testadas uma a uma
V.Lobo @ EN
27 27
INSTRUES CALL/RET
Microprocessador 8085 Microprocessador 8085
CALL addr 16
Chama uma sub-rotina Guarda o endereo contido em pc no stack e salta para o endereo addr
RET
Retorna de uma sub-rotina Vai buscar um endereo ao stack, e salta para esse endereo
Endr.
0231
Programa
MOV CALL MOV MVI ADD RET M,B 0522 A,B A,10 B
Operaes
Stack
SP
PC(0235) 0522 STACK PC
X 02 32
0522
SP
STACK PC
V.Lobo @ EN
28 28
Pgina 14
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Calls condicionais
Microprocessador 8085 Microprocessador 8085
Exemplo
Converter o valor de [2000] em negativo se ele for positivo LDA ANA CP STA
V.Lobo @ EN
Rotina que recebe um dado no acumulador e calcula o complemento para 2 CMA INR RET ; complementa A ; soma 1
29 29
PASSAGEM DE PARMETROS
Microprocessador 8085 Microprocessador 8085
1 - NOS REGISTOS
N limitado de parmetros Rpido e eficiente
3 - NO STACK
N ilimitado de parmetros No interfere c/ o resto do programa Diversas convenes sobre quem pe e/ou tira os dados do Stack 30 30
V.Lobo @ EN
Pgina 15
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Exemplo de parmetros
Microprocessador 8085 Microprocessador 8085
Escreva uma rotina para somar dois bytes, e escreva um programa que chame essa sub-rotina.
Passando parmetros nos registos: A rotina recebe os dados nos registos B e C, e devolve o resultado no Acumulador Passando parmetros em endereos fixos A rotina recebe os dados nos endereos 20B0H e 20B1H, devolvendo o resultado no endereo 20B2H Passando parmetros no stack Recebendo no stack os dados e devendo-os tambm no stack Recebendo no stack os dados e o endereo onde deve ser guardado o resultado
V.Lobo @ EN
31 31
Passagem de Parametros
Microprocessador 8085 Microprocessador 8085
Passagem de parmetros C
A rotina que pe os dados no stack antes de chamar a sub-rotina, retira-os aps o retorno Permite que se use um n de parmetros reais inferior ao n de parmetros formais Cada rotina deixa o stack pointer exactamente na mesma posio em que o recebeu Os parmetros so metidos no stack da direita para a esquerda
V.Lobo @ EN
Pgina 16
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
H que documentar especialmente bem a INTERFACE da rotina com o resto do sistema A documentao deve incluir:
quais os parmetros como so passados os parmetros (de entrada e sada) quais os registos modificados qual a ocupao de memria
V.Lobo @ EN
SOFTWARE INTERRUPTS
Microprocessador 8085 Microprocessador 8085
Instrues mquina RST ( restart ) Funcionam como CALLS para endereos prfixados Existem as instrues RST0 a RST7 Para cada RST h 8 bytes de memria disponvel
Geralmente, a interrupo tem de ser vectorizada para outro local, i.e. nesses 8 bytes h um JMP para o local onde a rotina est implementada.
34 34
Pgina 17
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Ocupam s 1 byte Permitem chamadas a rotinas independentes da sua implementao(i.e...) Podem ser revectorizadas facilmente
Podemos substituir as rotinas sem alterar os programas que as chamam
So normalmente usadas para fazer chamadas s rotinas do sistema operativo Normalmente os endereos de RST so ROM, e so revectorizados para RAM RST 0 normalmente faz o reset de todo o sistema
V.Lobo @ EN
35 35
Objectivos
Forar o p a actuar em funo de um evento externo (que o far executar um certo programa) O P no tem que perder tempo a verificar o sistema, pois o sistema avisa-o quando necessrio Eventos urgentes so prontamente atendidos
36 36
Pgina 18
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Interrupes directas
Microprocessador 8085 Microprocessador 8085
Endereo
Tipo de actuao
3CH actuado por flanco (tem 1 FF) 24 H actuado por flanco (MANTIDO)
37 37
Pino INTR
Existe um pino de entrada INTR pelo qual o P recebe o pedido de interrupo Quando poder atender a interrupo, o P responde com a activao do pino de sada INTA (interrupt acknolege) Quando gerado um INTA o up vai gerar um ciclo de opfetch (leitura do opcode da memria) mas sem pr um endereo no bus quem gerou o INTR tem que fornecer um opcode
Exemplo: .
38 38
Pgina 19
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Exemplo simples
Microprocessador 8085 Microprocessador 8085
NOTA: Como veremos adiante, esta rotina teria alguns problemas de carcter prtico
V.Lobo @ EN
39 39
Mscara de interrupes
Microprocessador 8085 Microprocessador 8085
8085
Trap
V.Lobo @ EN
Monoestvel ou Contador
40 40
Pgina 20
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Mscara de interrupes
Microprocessador 8085 Microprocessador 8085
Podemos ligar/desligar todas as interrupes ao mesmo tempo (salvo caso das NMI)
Instruo DI - Desable Interrupts desliga as interrupes Instruo EI - Enable Interrupts liga as interrupes
Para que uma interrupo no se interrompa a si prpria, a sua chamada faz automaticamente DI logo, necessrio fazer EI durante a rotina
o EI s tem efeito depois de 1 instruo (para possibilitar os RETs)
V.Lobo @ EN
41 41
N.U.
Mscaras (1=Disable) Mask Set Enable (1=Enable Interrupts) Reset do Flip-flop do RST 7.5
42 42
Pgina 21
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Prioridades
Microprocessador 8085 Microprocessador 8085
No caso de serem actuadas vrias interrupes simultaneamente, existe uma escala de prioridades entre elas:
os endereos mais baixos so menos prioritrios.
TRAP o mais prioritrio RST 5.5 menos prioritrio que 6.5 e estes dois menos que o 7.5 INTR o menos prioritrio Existem mtodos de controlo de prioridades mais sofisticados (ver 8259)
V.Lobo @ EN
43 43
So assncronas
No possvel saber em que ponto do cdigo que vo ser chamadas logo torna-se necessrio salvaguardar o contexto: PC guardado automaticamente pelo CALL FLAGS e ACC tm de ser guardados quase sempre (PUSH PSW) Outras reg. s os que forem usados
V.Lobo @ EN
44 44
Pgina 22
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
No 8085 as instrues RIM e SIM tambm controlam dois pinos de entrada/sada srie
Pinos SOD ( Serial Output Data ) e SID ( Serial Input Data ) SIM - Send data - Envia um bit do acumulador para SOD RIM - Read data - L o bit presente em SID para o acumulador
RIM
SID 7.5 6.5 5.5 IE 7.5 6.5 5.5
SIM
SOD SOE N.U. 7.5 MSE 7.5 6.5 5.5
45 45
IN addr8
L do porto IO indicado para o Acumulador
OUT addr8
Escreve do Acumulador para o porto de IO indicado
46 46
Pgina 23
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Exemplo de espera passiva: L1: HLT JMP L1 ; Espera que haja uma interrupo ; Volta para a instruo de espera
V.Lobo @ EN
47 47
Pinout do 8085:
X1 X2 Reset Out SOD SID TRAP RST 7.5 RST 6.5 RST 5.5 INTR ~INTA AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
Vcc (+5V) Hold Hlda Clock out ~Reset In Ready IO/~M S1 ~RD ~WR ALE S0 A15 A14 A13 A12 A11 A19 A9 A8
V.Lobo @ EN
48 48
Pgina 24
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
A fim de poupar pinos no integrado, h pinos que ora servem para DADOS ora servem para ENDEREOS
No princpio do ciclo de leitura/escrita so usados para conter o endereo No fim do ciclo de leitura/escrita contm os dados gerado um pulso no pino ALE (Address Latch Enable) para separar os dois tipos de sinais
A8-A15 AD0-AD7 Latch ALE D0-D7 A0-A7 ALE Addr Data
8085
V.Lobo @ EN
49 49
Pinos de temporizao/reset/interrupts
Microprocessador 8085 Microprocessador 8085
X1, X2
Ligados a um cristal externo para gerar o clock de sistema. Montagem tpica:
CLK out
Clock de sistema para os perifricos
~Reset In
Mantido a 0 durante 4 ciclos de relgio fora uma reinicializao
Reset out
Usado para fazer reset aos outros componentes do sistema
50 50
Pgina 25
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Outros pinos
Microprocessador 8085 Microprocessador 8085
Vcc e Vss
Alimentao (5V cc) e massa
SID, SOD
Comunicaes srie
S0, S1
Status (para ver o ciclo de BUS)
V.Lobo @ EN
51 51
Por vezes necessrio usar o bus sem que este esteja controlado pelo P
Sistemas com vrios processadores Sistemas com perifricos/sub-sistemas inteligentes (para DMA por exemplo)
Funcionamento
Quando algum quer o BUS, gera um pedido de HOLD ao P Quando o P poder prescindir do BUS, pe as suas sadas em TriState, e activa o pino HLDA (Hold Acknowledge) HOLD HLDA 8085 52 52
V.Lobo @ EN
Pgina 26
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Ciclos de Bus
Microprocessador 8085 Microprocessador 8085
Operao de Escrita de um dado (MW) Diferenas entre OpFetch (OF), InterruptAck (INA), e MemRead Diferenas entre ciclos de I/O (IOW, IOR) e memria Ciclo Bus Idle (BI) Diagrama de Estados do 8085
V.Lobo @ EN
53 53
Pgina 27