Escolar Documentos
Profissional Documentos
Cultura Documentos
Microprocessador Z80:
Organização, Temporização e Funcionamento Básco,
Reportório de Instruções e Modos de Endereçamento
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Sumário:
1. Arquitectura, temporização e funcionamento básicos do Z80.
a. Descrição da pinagem (pin out) do Z80 e sua categorização em 3 (4?) barramentos;
b. Organização interna da CPU Z80; distinção dos dois blocos principais e seus constituintes;
c. Ciclos de Temporização no Z80: Relógio/Clock; Ciclo T/Estado Máquina; Ciclo Máquina; Ciclo de Instrução; Diversos
tipos de Cliclos máquina: M1 (Opcode Fetch); Leitura da memória, Escrita da Memória; Refrescamento da memória
dinâmica; de Entrada; Saida; Pedido e reconhecimento do barramento; Pedido e reconhecimento de interupções; Ciclo
da interrupção não mascarável (NMI); Ciclo do HALT; Ciclo do reconhecimento do desligamento da fonte (Power-down).
3. Modos de endereçamento.
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80 - Arquitectura e características básicas:
‒ Von Neumann;
‒ CISC, 158 instruções; Mem.
‒ 8bits Dados;
‒ 16bits Endereços Mem;
‒ 16 bits Endereços I/O;
‒ Ordem multibyte: LSB primeiro,
ie, Little-Endian;
‒ 40 pinos, 5V/TTL, 2 a 8MHz,
SRAM, DRAM c/refresh,DMA. I/O
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Pinagem e categorias dos sinais/barramentos
Barramento
de
Endereços
Barramento
de Controle
Alimentação e Barramento
temporização de Dados
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Arquitectura
Mem.
I/O
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Microcomputador básico
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Qualquer instrução que é executada é constituida por:
• um Ciclo de instrução (ICyc) (= todos os passos p/a s/execução); por s/vez o ICyc é composto por ciclos máquina:
um ciclo M1 (ciclo máquina 1) c/a função de busca da instrução (Opcode Fetch); M1 é seguido, eventualmente de;
mais ciclos máquina (M2; M3, ...; varia de acordo c/a instrução). Por s/vez, cada cíclo máquina é composto por:
vários estados máquina (ou T ciclos de relógio = 1/Freq.).
Cada instrução tem a sua própria estrutura/sequência de ciclos máquina.
Um ciclo máquina é de modo grosserio um acesso à memória externa.
Início
Descodificar e executar
Fluxograma simplificado de
funcionamento do computador de CPA
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
A duração total do ciclo de instrução é o somatório dos estados máquina de todos os ciclos máquina envolvidos. O
tempo exclui os T ciclos de execução se não houver mais nenhum acesso à memória nessa instrução.
Os T ciclos de execução não contam para a duração do ciclo de instrução por causa da sobreposição entre o
período de execução e o ciclo M1 da próxima instrução, p/mitigar o engarrafamento de von Neumann e assim
aumentar o desempenho.
Início
Descodificar e executar
Fluxograma simplificado de
funcionamento do computador da
sobreposição busca-execução
CPA.
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Exemplos:
LD A, (5000h); Opcode?:
LD (5001h), A; Opcode?:
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Ex:
In A, (31h); Opcode?:
Out (54h), A; Opcode?:
TPC: Vide o manual p/ outros ciclos máquina
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento /Temporização /Execução de instruções
Mem.
I/O
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento / Temporização / Execução de instruções
Reportório de Instruções
O Z80 é uma máquina CISC mais complexa que o 8080 tendo (o Z80) um
reportório de instruções mais extenso, bem como e daí uma série de recursos em
registos internos e modos de endereçamento mais rico.
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento / Temporização / Execução de instruções
Reportório de Instruções (cont.)
Notação e codificação:
Instrução: Cada instrução é especificada/apresentada em forma de mnemónico (o que é mnemónico?
porquê o uso de um mnemónico?) seguido de operandos, tal como em:
LD A, 1; carregar 0 dado 1 para o Acumulador. LD = mnemónico; A e 1 são os operandos.
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento / Temporização / Execução de instruções
Reportório de Instruções (cont.)
Sintaxe de uma instrução:
Menemónico Operando de Operando Comentário inciado por ;
destino** de origem
Exercício:
1. Consultar o manual [1] e a tabela em [2] para familiarizar-se com as instruções.
2. Escolha 20 instruções de diversos tipos e interprete a sua sintaxe. Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Armazenamento de dados multibyte
Ordem de dado multi-byte (Endianess) :
é a ordem em que o código de um dado multibyte é armazenado
na memória:
• Big endian: guarda o byte mais significativo no local de memória Little endian Big endian
numèricamente mais baixo e vice-versa;
• Little endian: guarda o byte menos significativo no local de LD A, 26h 4200 3E
memória numèricamente mais baixo e vice-versa. ;(3E 26) 4201 26
Zona do
LD (5020h), A 4202 32
O Z80 pertence ao último grupo ( little endian ). Por ex: Suponha programa
;(32 20 50) 4203 20
que tem o dado de 32 bits: 90AB12CDh. Este valor é guardado 4204 50
INC HL 4205 23
como mostram as primeiras tabelas ao lado; Entretanto, é
;(23)
importante observar que:
M O opcode vai sempre em primeiro lugar, depois vai o dado; se este é
5020 26 Zona dos
duplobyte, então a ordem de armazenamento obedece à endianness do mP; dados
5021
MSe opcode é duplo-byte: deve ser tratado como uma sequência de 5022
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento / Temporização / Execução de instruções
Reportório de Instruções (cont.)
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Funcionamento / Temporização / Execução de instruções
Reportório de Instruções (cont.)
Tipos (grupos) de Instruções (cont.).
Cada grupo, como se vê, se subdivide de acordo c/a categoria dos dados e/ou das operações envolvidas.
Pormenores podem ser vistos no manual da Zilog que subcategoriza as instruções nos seguintes
subgrupos:
Load and Exchange
Block Transfer and Search
Arithmetic and Logical
Rotate and Shift
Bit Manipulation (Set, Reset, Test)
Jump, Call, and Return
Input/Output
Basic CPU Control
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções
Exemplos: OBS: A partir de uma dada instrução, sempre
• AND A; A A . A ; operaão lógica;
podemos imaginar outras possíveis instruções (=
• LD B, 08; instrução de transferência de 8 Bits
• LD HL, BC; instrução de transferência de 16 bits; pensamento CISC), mas
• ADD A,B; A A + B ;operação de aritmética; M Cuidado: nem todas as instruções que se
• JR 0F3; instrução de transferência de controle
imaginam, existem efectivamente! Use
• JMP 5002h; instrução de transferência de controle
• CALL 2000h; instrução de transferência de controle sempre o manual para confirmar.
• RET; instrução de transferência de controle (devolução) Entretanto há componentes da
• RETI; instrução de transferência de controle (devolução)
microarquitectura (hardware) e instruções não
• IN D, (C); instrução de transferência (leitura) de E/S;
• CPDR; instrução de procura em bloco; documentadas oficialmente!
• RST 0; instrução de transferência de controle à pág.zero
• IM 0; instrução de configuração de controle de interrupções
• HALT; instrução de paragem (até surgir uma interrupção)
• BIT 1, C; operação de teste de bit;
• RLC H; operação aritmética;
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções
OBS:
Vide [1], [2], 10, ... para alternativas e pormenores.
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
O modo de endereçamento é a forma como uma instrução, implìcita ou explicitamente expecifica a
forma de acesso a memória externa, portas de entrada/saída ou os registos internos do processador,
para poder ler ou guardar o seus operandos. Tal está também ligado aos formatos de armazenamento
dos dados naqueles locais.
Qualquer instrução começa sempre por um ou dois bytes de opcode. Depois do opcode segue-se
eventualmente (frequentemente) um ou mais bytes que se referem ao operando.
Op Code (1 byte) Op Code (1 byte) Op Code (1o.byte) Op Code (1o.byte) Op Code (1 byte)
LD A, dado
Dado (high byte) Dado (1 byte) JP (r_indx) INC HL
LD (nn), A LD A, (IX+n) 23
LD A, 05 JP (IY)
LD (5020h),A
3E 05 LD A, (IX + 1) FD E9
32 20 50
DD 46 01
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Os principais modos de Endereçamento do Z80:
• Imediato (simples) e Imediato Extendido;
• Endereçamento Directo (ou Extendido):
• Indirecto por registo (HL, C, BC, DE);
• Implícito de registo (A);
• Implícito de pilha (através do SP);
• Pagina zero modificado (RST p);
• Indexado (IX, IY);
• de Bit;
• Relativo (ao PC - contador de programa) (saltos/transferências de controle);
• Implícito de transferência ou procura (comparação) em bloco (memória, e/ou input/output);
• Combinados/Múltiplos: mais do um dos modos acima citados estão presentes na instrução;
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Op Code (1byte) Op Code (1byte) Op Code (1byte)
Modos de Endereçamento Dado (1 byte) Dado (low byte) Dado (low byte)
Result: A 26h 31 FD 5F 21 30 50
próprio dado a ser carregado para dentro da CPU para Result: SP5FFDh Result: A 5030h
(a) (b)
à posteriori ser eventualmente processado. (i) Imediato
(ii) Imediato extendido
(simples)
Endereços Dados
No endereçamento Imediato (simples) o dado imediato
é um byte [fig(i)] enquanto no endereçamento Imediato
LD A, 26h 4200 3E
Extendido [fig(ii)] o dado é uma palavra (word), 2 bytes. ;(3E 26) 4201 26 Zona do
LD SP, 5FFDh 4202 32
programa
;(31 FD 5F) 4203 20
aponta para o verdadeiro local dado a ser lido ou escrito. 3A 63 52 LD BC, (5262h) LD HL, (5060h)
Result: A 80h ED 4B 27 05 2A 60 50
Depois de carregar (e descodificar) o Opcode este Result: A 809Fh Result: HL 3B26h
Fig 8. (a) (b)
endereço é carregado para o buffer de endereços e então Directo/Extendido
Fig 6. Directo/Extendido de 16 bits
de 8 bits
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Indexado (pelos registos de índice IX, IY ):
O registo de índice (IX ou IY) tem um endereço de 16 bits que deve ser Op Code (2 bytes) Dado (1 byte)
DD 46 01 LD A, (IX+1)
local definitivo.
Depois de carregar (e descodificar) o Opcode há um ciclo de busca do Result.: A (IX+1)
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de bloco: Transferêcia (LDI, LDIR, LDD, LDDR); input (INI, INIR, IND, INDR);
output(OUTI, OTIR, OUTD, OTDR); comparação/procura (CPD, CPDR).
até que BC=0. Trata-se de um laço que faz transferência dum 4205 23
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Transferência em bloco: LDI, LDIR, LDD, LDDR (Cont.)
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Input em bloco: INI, INIR, IND, INDR. Endereços Dados
LD C, portaFonte; 23
LD HL, topoDestino;
LD B, numBytes;//0=>256 Figura de análise para LDI, LDIR, LDD, LDDR
INIR; ou INI Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Input em bloco: INI, INIR, IND, INDR (Cont.).
Instrução Destino Fonte Contador Sintaxe/Semântica
LD B, numBytes;//0=>256
OTIR; ou INI Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Output em bloco: OUTI, OTIR, OUTD, OTDR (Cont).
Instrução Fonte Destino Contador Sintaxe/Semântica
OUTI (HL) (C) B Lê o byte do local de memória apontado por HL e o
transfere para o porto de saída apontado por C . Após
isso, incrementa HL e decrementa B.
(C)<-(HL); HL++; B--
OTIR (HL) (C) B Lê o byte do local de memória apontado por HL e o
transfere para o porto de saída apontado por C . Após
isso, incrementa HL e decrementa B.
Repetir até B=0: (C)<-(HL); HL++; B--
OUTD (HL) (C) B Lê o byte do local de memória apontado por HL e o
transfere para o porto de saída apontado por C . Após
isso, decrementa tanto HL como B.
(C)<-(HL); HL--; B- -
OTDR (HL) (C) B Lê o byte do local de memória apontado por HL e o
transfere para o porto de saída apontado por C . Após
isso, decrementa tanto HL como B.
Repetir até B=0: (C)<-(HL); HL--; B--
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Procura num bloco: CPI, CPIR, CPD, CPDR.
Endereços Dados
que está no acumulador numa tabela cujo topo ou base está no HL.
CPI/CPIR ou CPD/CPDR podem ser usados por exemplo quando se
tem uma tabela de consulta com 2 colunas onde por ex. a 1a coluna 5220 4 Vector F(x)
5221 64
tem o valor x e a 2a coluna tem o valor F(x). Suponha que F(x) = x2 .
5222 16
Quando A = (HL), a flag Z=1 e nesse case CPIR abandona o ciclo. 5223 225
Pode-se então consultar o valor da coluna 2 para obter F(x) ou seja
F(A). Vejamos o programa exemplo: Figura de análise para LDI, LDIR, LDD, LDDR
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Endereçamento Implícito de Procura num bloco: CPI, CPIR, CPD, CPDR (Cont).
Endereços Dados
Problema: Pretende-se encontrar e trazer no Acumulador o quadrado
de um número decimal positivo N no intervalo [2, 15], que se encontra Vector x
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Implícito de Procura num bloco: CPI, CPIR, CPD, CPDR (Cont).
Instrução Vector Dado Contador Sintaxe/Semântica
CPI (HL) A BC Compara o byte no Acumulador com o byte do local de memória apontado por
HL. Se há igualdade (=encontrou o valor procurado) a flag Z é setada e vice versa.
Depois disso, incrementa-se HL e decrementa BC. Se BC=0 então P/V =0
outrossim P/V = 1.
A -(HL); Z=0 se A=(HL); HL++; BC--;
P/V = 0 se BC=0
CPIR (HL) A BC Compara o byte no Acumulador com o byte do local de memória apontado por
HL. Se há igualdade (=encontrou o valor procurado) a flag Z é setada e vice versa.
Depois disso, incrementa-se HL e decrementa BC. Se BC=0 então P/V =0
outrossim P/V = 1.
A -(HL); Z=0 se A=(HL); HL++; BC--;
P/V = 0 se BC=0
Se BC-1 != 0 e A != HL) Repetir.
CPD (HL) A BC Compara o byte no Acumulador com o byte do local de memória apontado por
HL. Se há igualdade (=encontrou o valor procurado) a flag Z é setada e vice versa.
Depois disso, decrementa-se HL e decrementa BC. Se BC=0 então P/V =0
outrossim P/V = 1.
A -(HL); Z=0 se A=(HL); HL--; BC--;
P/V = 0 se BC=0
CPDR (HL) A BC Compara o byte no Acumulador com o byte do local de memória apontado por
HL. Se há igualdade (=encontrou o valor procurado) a flag Z é setada e vice versa.
Depois disso, decrementa-se HL e decrementa BC. Se BC=0 então P/V =0
outrossim P/V = 1.
A -(HL); Z=0 se A=(HL); HL--; BC--;
P/V = 0 se BC=0
Se BC-1 != 0 e A != HL) Repetir.
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80. Reportório de Instruções - Modos de Endereçamento
Outros modos de Endereçamento/exemplos:
i. Indirecto por registo (HL, C);
• LD A, (HL)
• IN B, (C)
ii. Implícito de registo;
AND 0Bh; está implicito o endereço de destino que é o acumulador.
iii. Implícito de pilha (através do SP);
PUSH AF; está implicito o endereço de pilha apontado pelo SP;
iv. Pagina zero modificado;
RST 5; está implicito o endereço situado na página zero (= endereços de 0 a 255); Esta instrução
realiza saltos a rotinas de serviço de interrupção no modo 0;
v. de Bit:
BIT 1,B; O bit n (n = 0 a 7) do registo r (A, B, ...) é acessado (neste caso p/testar o seu valor).
vi. Relativo (ao PC).
JR deslocamento; salta para um endereço PC+deslocamento+2, onde o deslocamento é de 8 bits, um dos quais (o MSB) é
de sinal (complemento a 2 para os negativos).
vii. Combinados.
JR (IX); salto relativo com deslocamento indexado por IX; endereçamentos relativo ao programa e indexado Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Arquitectura e funcionamento Básicos. Exercícios
Ac
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Bibliografia/Fontes
1. Zilog, Z80 Family CPU User Manual (www.zilog.com/docs/z80/um0080.pdf)
2. ED2020.AT4 - Z80 Instruction Set Summary version 2000c--z80.txt.pdf (http://guide.ticalc.org/download/z80.txt )
3. Leventhal and Saville. Z80 Assembly Language Subroutines 1983
4. L.Leventhal, Z80 Assembly Language Programming (Chap.3). Osborne/McGrawHill
5. Rodney Zaks, Programming the Z-80 3rd Edition, SIBEX, ISBN: 0-89588-094-6
6. http://www.msxarchive.nl/pub/msx/mirrors/msx2.com/zaks/z80prg02.htm
7. http://www.z80.info
8. http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html (Endianness)
9. 2500AD Macro Assembler Language Manual (*)
10. Feedback, “MAT980 Microprocessor Applications Trainer” (*)
11. Feedback, “Introduction to Microprocessors, Micamaster 980 & 960” (*)
Ac
Engenharia Informática - Microprocessadores
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1
2013