Escolar Documentos
Profissional Documentos
Cultura Documentos
Microprocessador 8085: Introdução Arquitectura Interna
Microprocessador 8085: Introdução Arquitectura Interna
Microprocessadores
INTRODUO
Microprocessador 8085 Microprocessador 8085
Arquitectura interna
D7-D0 B1-DIRECTIONAL DATA BUS
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
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
V.Lobo @ EN
1 1
WR RD IO/M S0 S1 ALE
V.Lobo @ EN
INT INTA RST & TRAP SID SOD HOLD HOLD ACK
2 2
Implementao em Silcio
z z
REGISTOS
Microprocessador 8085 Microprocessador 8085 Microprocessador 8085 Microprocessador 8085
N de transistors: 6000
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
A B D H
V.Lobo @ EN
C E L
4 4
REGISTOS
z
FLAGS
Microprocessador 8085 Microprocessador 8085 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 S CY P AC
6 6
z 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 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
V.Lobo @ EN
Pgina 1
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
FLAGS
Microprocessador 8085 Microprocessador 8085
INSTRUCTION SET
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
z z
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
V.Lobo @ EN
7 7
V.Lobo @ EN
8 8
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
MOVER DADOS
z
Modos de endereamento
H vrias maneiras de referir o dado que se pretende usar:
Nome do modo Argumento passado instruo Dado usado
MOV r1,r2
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 z
Imediato Directo por registo Directo por Endereo Indirecto por registo Indirecto por endereo Indexado
V.Lobo @ EN
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 z
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
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
MOVER DADOS
Microprocessador 8085 Microprocessador 8085
z z
LDA addr
(Load Acumulator)
(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 z
Mover um dado do endereo ADDR para o acumulador EX: LDA 1000 ; Carrega o acumulador com o dado ; contido no endereo de memria 1000 z
LXI rp,data(16bits)
(load pair imediate) 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 (exchange)
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 z
XCHG
V.Lobo @ EN
11 11
V.Lobo @ EN
12 12
Pgina 2
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
ADD r / ADC r
Somar o registo ao acumulador ( C/CARRY )
SUB r / SBB r
Subtrair o registo ao acumulador ( C/Borrow)
ADD M / ADC M
Somar a memria ao acumulador ( C/CARRY )
SUB M / SBB M
Subtrair a memria ao acumulador ( C/Borrow )
Exemplos
Exemplos
V.Lobo @ EN
13 13
V.Lobo @ EN
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
DAD rp
adicionar o par rp ao par HL DAD BC
DCR r
Decrementar o registo r
DAA
Corrigir uma soma /subtraco em BCD DAA
DCR M
Decrementar o contedo da posio apontada por HL
INR r
incrementar o registo r INR B
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 ?
INR M
Incrementar o contedo da posio apontada por HL INR M Exemplos
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
V.Lobo @ EN
16 16
OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085
OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085
z OPERAES
DE COMPARAO
ANA r
AND lgico entre o acumulador e o registo r
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... z
ANA M
AND lgico entre o acumulador e a posio apontada por HL
CMP r
comparar o acumulador com o registo R
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 ?
CMP M
Comparar o acumulador com o contedo da posio apontada por HL Exemplos
CPI data 8
Comparar o acumulador com o valor indicado 17 17
V.Lobo @ EN
V.Lobo @ EN
18 18
Pgina 3
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
Jumps
Fazem com que a prxima instruo no seja a instruo imediatamente a seguir, mas sim outra qualquer
ORA M
OR lgico entre o acumulador e a posio apontada por HL
JMP
addr 16
ORI data 8
OR lgico entre o acumulador e o dado indicado
JNZ addr 16
Salta para o endereo dado se Z=0 (o acumulador 0)
JZ JNC JC
V.Lobo @ EN
ROTAES
Microprocessador 8085 Microprocessador 8085
RLC
CY
MSB
LSB
RRC
RAL
CY
MSB
LSB
RAR
CY
MSB
LSB
21 21
V.Lobo @ EN
NEGAES E SET
Microprocessador 8085 Microprocessador 8085
METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085
CMA
Complementa o acumulador z
CMC
Complementa a flag carry z
STC
Set carry flag ( faz cy=1)
V.Lobo @ EN
23 23
V.Lobo @ EN
24 24
Pgina 4
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085
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
26 26
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
V.Lobo @ EN
SUB - ROTINAS
Microprocessador 8085 Microprocessador 8085
INSTRUES CALL/RET
Microprocessador 8085 Microprocessador 8085
z z
CALL addr 16
Chama uma sub-rotina Guarda o endereo contido em pc no stack e salta para o endereo addr
Objectivo
Dividir o programa em tarefas simples e modulares Criar procedimentos que podem ser chamados de diversos pontos do programa. z
RET
Retorna de uma sub-rotina Vai buscar um endereo ao stack, e salta para esse endereo
Endr.
0231
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
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
27 27
V.Lobo @ EN
28 28
Calls condicionais
Microprocessador 8085 Microprocessador 8085
PASSAGEM DE PARMETROS
Microprocessador 8085 Microprocessador 8085
1 - NOS REGISTOS
N limitado de parmetros Rpido e eficiente
Exemplo
Rotina que recebe um dado no acumulador e calcula o complemento para 2 CMA INR RET ; complementa A ; soma 1
Converter o valor de [2000] em negativo se ele for positivo LDA ANA CP STA
V.Lobo @ EN
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
29 29
V.Lobo @ EN
30 30
Pgina 5
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Exemplo de parmetros
Microprocessador 8085 Microprocessador 8085
Passagem de Parametros
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
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
31 31
V.Lobo @ EN
32 32
SOFTWARE INTERRUPTS
Microprocessador 8085 Microprocessador 8085
z z
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.
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
z z
z z
V.Lobo @ EN
V.Lobo @ EN
34 34
z z
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
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
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
35 35 z z
z
V.Lobo @ EN
V.Lobo @ EN
Pgina 6
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Interrupes directas
Microprocessador 8085 Microprocessador 8085
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
Endereo
Tipo de actuao
3CH actuado por flanco (tem 1 FF) 24 H actuado por flanco (MANTIDO)
Exemplo: .
38 38
Exemplo simples
Microprocessador 8085 Microprocessador 8085
Mscara de interrupes
Microprocessador 8085 Microprocessador 8085
Interruptor
NOTA: Como veremos adiante, esta rotina teria alguns problemas de carcter prtico
V.Lobo @ EN
8085 39 39
Trap
V.Lobo @ EN
Monoestvel ou Contador
40 40
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
N.U.
Mscaras (1=Disable) Mask Set Enable (1=Enable Interrupts) Reset do Flip-flop do RST 7.5 z
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) 41 41
V.Lobo @ EN
V.Lobo @ EN
Pgina 7
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.
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
z z
TRAP o mais prioritrio RST 5.5 menos prioritrio que 6.5 e estes dois menos que o 7.5
z
z z
INTR o menos prioritrio Existem mtodos de controlo de prioridades mais sofisticados (ver 8259)
43 43
V.Lobo @ EN
V.Lobo @ EN
44 44
z z
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 z
IN addr8
L do porto IO indicado 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
OUT addr8
Escreve do Acumulador para o porto de IO indicado
45 45
V.Lobo @ EN
46 46
Exemplo de espera passiva: L1: HLT JMP L1 ; Espera que haja uma interrupo ; Volta para a instruo de espera
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
47 47
V.Lobo @ EN
48 48
Pgina 8
Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007
Microprocessadores
Pinos de temporizao/reset/interrupts
Microprocessador 8085 Microprocessador 8085
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
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
8085
z 49 49
V.Lobo @ EN
V.Lobo @ EN
Outros pinos
Microprocessador 8085 Microprocessador 8085
Vcc e Vss
Alimentao (5V cc) e massa
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)
SID, SOD
Comunicaes srie
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
S0, S1
Status (para ver o ciclo de BUS)
V.Lobo @ EN
51 51
V.Lobo @ EN
Ciclos de Bus
Microprocessador 8085 Microprocessador 8085
z z
z z
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
53 53
z z z
V.Lobo @ EN
Pgina 9