Você está na página 1de 39

UEM – Faculdade de Engenharia

Departamento de Engenharia Electrotécnica


Curso de Engenharia Electrónica

Microprocessador Z80:
Organização, Temporização e Funcionamento Básco,
Reportório de Instruções e Modos de Endereçamento

Elaborado por: Eng.Doho


Fev.Junho/2020 Ac

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

2. Análise do Reportório de Instruções.


a. Arquitectura de Instruções (ISA) do Z80:
b. Linguagem e notação. Sintaxe de uma instrução;
c. Registo das Flags (registo de sinalizadores, registo das bandeiras)
d. Tipos (grupos) de Instruções;

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

Busca de instruções; Processamento: execução de operações aritméticas, lógicas,


Descodoficação e controle da carregamento e armazenamento de dados, com as unidades de
execução de instruções. memória e de E/S.

Ac

Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1 Electrónica Digital II /2020 – Enga. Electrónica
Z80: Microcomputador básico

Memória: dados e programas, estão Portos de I/O têm o s/prório espaço


no mesmo espaço de endereçamento de endereçamento (de 64KBytes), Exemplode microcomputador baseado no mP Z80
(Von Neumann), de 64KBytes. separado do da memória. 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
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

Buscar (fetch) o OpCode (na


memória)

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

Buscar (fetch) o OpCode (na


memória)

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

Principais ciclos Máquina


• Ciclo máquina 1 (M1), busca do Código de Operação (Opcode) de uma instrução;
• Ciclos de leitura ou escrita à memória;
• Ciclos de leitura ou escrita a uma unidade de I/O;
• Ciclos de pedido e reconhecimento (concessão) dos barramentos (DMA);
• Ciclos de pedido e atendimento de interrupções mascaráveis (INT);
• Ciclo da interrupção não mascarável (NMI);
• Ciclo do HALT;
• Ciclo do reconhecimento do desligamento da fonte (Power-down).

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

Exemplo: LD A, 05; opcode?:


Ciclo máquina M1: de busca do código de operação (opcode fetch) (Obs: Ciclo M2, de leitura, está omitido.
vide prox. diapositiva) . 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

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

Busca de instruções; Processamento de dados


Descodoficação e controle da
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
Reportório de Instruções

Arquitectura de Instruções (ISA) do Z80:


A arquitectura de Instruções do Z80 é do tipo CISC ( Complex Instruction Set
Computer): 158 instruções, 78 das quias são as mesmas que as do Intel 8080,
havendo compatibilidade de código máquina para a quase totalidade das
instruções (c/algumas excepçõ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.

Linguagem Assembly: É o reportório (conjunto) de instruções na forma de mnemónicos (e operandos);


Linguagem (ou Código) Máquina: É o reportório de instruções em forma de código binário: cada
instrução (mnemónico e seu(s) operando(s)) corresponde a um código binário;
Dessa forma, uma vez que o programa esteja escrito (partindo do s/fluxograma, diagrama de NS, ...),
tais mnemónicos são então convertidos em código máquina, manualmente ou usando um software
assemblador (exemplo: o 2500AD Software Z80 Assembler). O código máquina é geralmente
apresentado em hexadecimal;
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.)
Sintaxe de uma instrução:
Menemónico Operando de Operando Comentário inciado por ;
destino** de origem

LD A, B; Comentário; **de origem também em certas operações; qual é o código máquina?


Sintaxe: A  B
Onde LD é o menmónico; A e B são operandos.
ADD HL, BC; adicionar HL com BC e guardar o resultado em HL; qual é o código máquina?
Sintaxe: HL  HL + BC
O operando de destino só pode ser um registo interno, um local de memória ou porta de saída;
O operando fonte (origem) pode ser um dado, um registo interno, um local de memória ou porta de entrada;
Ademais, deve haver compatibilidade de largura dos operandos: se destino é de 8 bits =>fonte também é!
OBS: Veja o reportório de instruções e analise os aspectos acima;

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

opcodes de 1 byte, devendo ser guardados nessa mesma ordem, i.e., de


esquerda para a direita; Ac
Visualização da memória
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.)

Registo das Flags (bandeiras ou sinalizadores)

O registo das Flags (registo F) é um registo


especial de 8 bits que emparelha com o
acumulador (regito A) formando o registo AF de
16 bits (manipulado como tal em operações de
salvaguarda para a pilha ou para os registos
alternativos).
A compreensão deste registo F e de seus 6 bits (2
dos 8 bits são reser vados ou não usados) é Exercício:
i m p o r t a n t e pa r a e n t e n d e r a s i n s t r u ç õ e s e
Descreva em que condições e como as bandeiras acima são
afectadas pelas instruções constantes da tabela 1, diapositiva 20.
programação do Z80 e daí doutras CPUs.

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


Há quatro grandes grupos de Instruções:
• Instruções de trasnferência de dados (de 8 bits, de 16 bits);
• Instruções de processamento dos dados (lógicas, aritméticas, manipulação de bits, rotação e
deslocamento, etc);
• Instruções de trasnferência de controle (saltos absolutos e relativos; condicionais e incondicionais;
chamada e retorno a/de subrotina; atendimento e retorno de interrupção);
• Instruções de controle da CPU e do Sistema (ex.: habilitar interrupções, definir modo de
interrupção, etc.).

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;

Tabela 1 . Exemplos de Instruções do Reportório do Z80


Ac

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.

Tabela 2 . Excerto do Reportório de Instruções do Z80 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
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)

Dado (1 byte) Dado (low byte) Op Code (2o.byte) Op Code (2o.byte)


INC rp

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

(a) (b) (e)


(c) (d)
Exemplos:
A primeira linha do exemplo em assembly apresenta uma instrução genérica, a segunda linha
tem uma instrução específica enquanto na 3a linha vai o respectivo código máquina em hexa. 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
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)

Endereçamento Imediato (simples) e Imediato LD A, dado


Dado (high byte) Dado (high byte)

Extendido: LD A, 26h LD SP, dado LD HL, dado

LD SP, 5FFDh LD HL, 5030h


Depois do Opcode, vai imediatamente colocado o 3E 26

Result: A  26h 31 FD 5F 21 30 50
próprio dado a ser carregado para dentro da CPU para Result: SP5FFDh 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

É mostrado na [fig(iii)] o armazenamento das instruções 4204 50

das figuras (i) e (ii)(b) na memória central.


Ac
(iii) Imediato extendido
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 Op Code (1byte) Op Code (1byte) Op Code (1byte)

Dado (1 byte) Dado (low byte) Dado (low byte)


Endereçamento Directo (ou Extendido):
Dado (high byte) Dado (high byte)
LD A, (nn)
Depois do Opcode vai expecificado um endereço o qual LD A, (5263h) LD BC, (nn) LD HL, (dado)

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

o dado definitivo é finalmente carregado.

O dado a ser carregado da ou escrito na memória pode ser LD A, (5264h) 4200 3A


;(3A 6452) 4201 64 5260 26
um byte ou uma word (16 bits). 4202 52 5261 3B
LD BC, (0527h) 4203 2A
5262 9F
Este tipo de instruções, quando forem do tipo transferência ;(ED 4B 27 05) 4204 60
5263 80
4205 50
de dados, se caracterizam geralmente por o endereço estar
Zona do
entre parentesis em oposição ao endereçamento imediato programa
Zona dos
dados
em que o dado é especificado sem parentesis.
Endereçamento Directo / Extendido 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 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)

adicionado a um dado índice de 8 bits que vai logo depois do Opcode.


O endereço resultante da soma destes, deve ser usado para acessar ao DD 46 nn LD A, (IX+n)

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)

índice, este índice é adicionado ao conteúdo do registo de índice e o


endereço resultante é já carregado para o buffer de endereços e então
o dado definitivo é finalmente carregado.
O dado a ser carregado da, ou escrito na, memória pode ser um byte .
Este tipo de instruções, se caracterizam geralmente pela presença dos
registos de índice e este estar entre parentesis (vide os exemplos ao
lado). 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 bloco: Transferêcia (LDI, LDIR, LDD, LDDR); input (INI, INIR, IND, INDR);
output(OUTI, OTIR, OUTD, OTDR); comparação/procura (CPD, CPDR).

Transferências em bloco: LDI, LDIR, LDD, LDDR. Endereços


Dados

LDI: Transfrere o byte do local apontado por HL para o local HL


4200
apontado por DE. Em seguida, incrementa tanto HL como DE e 4200 3E Bloco
4201 26 fonte
decrementa BC: BC 4202 32
(DE)<-(HL); DE++; HL++; BC-- 6
4203 20

LDIR, difere do LDI em que volta a repetir as operações acima 4204 50

até que BC=0. Trata-se de um laço que faz transferência dum 4205 23

bloco de memória como topoFonte para outro bloco com


t o p o D e s t i n o . Q u a l q u e r d a s 2 i n s t r u ç õ e s p re s s u p õ e o
DE
carregamento prévio de registos, depois do que se chama a 5020 5020
Bloco
instrução, a saber: destino
5021
LD HL, topoFonte; 5022
LD DE, topoDestino; 5023

LD BC, numBytes; //0=>65536


LDIR; ou LDI 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 Transferência em bloco: LDI, LDIR, LDD, LDDR (Cont.)

Instrução Fonte Destino Contador Sintaxe/Semântica


LDI (HL) (DE) BC Transfrere o byte do local apontado por HL para o local
apontado por DE. Após isso, incrementa tanto HL como
DE. Decrementa BC.
(DE)<-(HL); DE++; HL++; BC- -
LDIR (HL) (DE) BC Transfrere o byte do local apontado por HL para o local
apontado por DE. Após isso, incrementa tanto HL como
DE. Decrementa BC.
Repetir até BC=0: (DE)<-(HL); DE++; HL++; BC- -
LDD (HL) (DE) BC Transfrere o byte do local apontado por HL para o local
apontado por DE. Após isso, decrementa tanto HL
como DE, assim como BC.
(DE)<-(HL); DE- -; HL- -; BC- -
LDDR (HL) (DE) BC Transfrere o byte do local apontado por HL para o local
apontado por DE. Após isso, decrementa tanto HL
como DE, assim como BC.
Repetir até BC=0: DE)<-(HL); DE- -; HL- -; BC- -
LDD/LDDR, decrementam os ponteiros de bloco ao contrário do que fazem LDI/LDIR.
Essa é basicamente a pricipal diferença. 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. Endereços Dados

INI: Lê o byte do porto de entrada apontado por C e o


t rans f e re para o l o c al a p o n t a d o p o r H L . E m s e g u i d a ,
HL
incrementa HL e decrementa B. C permanece inalterado: 4200 4200 Bloco
4201 destino na
(HL)<-(C); HL++; B-- BC memória!
4202
6
INIR, difere do INI em que INIR volta a repetir as operações 4203

acima até que B=0. INIR trata-se de um laço que lê 4204


4205
repetidamente o porto cujo endereço está em C e guarda o
va l o r l i d o n u m b l o c o d e m e m ó r i a a p o n t a d o p e l o H L
(topoDestino). Para ser chamada, qualquer das 2 instruções C
20 20 Fonte: porta
pressupõe o carregamento prévio de registos, depois do que 21 de entrada
se chama a instrução, a saber: 22

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

INI (HL) (C) B Lê o byte do porto de entrada apontado por C para o


local de memória apontado por HL. Após isso,
incrementa HL e decrementa B.
(HL)<-(C); HL++; B--
INIR (HL) (C) B Lê o byte do porto de entrada apontado por C para o
local de memória apontado por HL. Após isso,
incrementa HL e decrementa B.
Repetir até B=0: (HL)<-(C); HL++; B--
IND (HL) (C) B Lê o byte do porto de entrada apontado por C para o
local de memória apontado por HL. Após isso,
decrementa tanto HL como B.
(HL)<-(C); HL--; B--
INDR (HL) (C) B Lê o byte do porto de entrada apontado por C para o
local de memória apontado por HL. Após isso,
decrementa tanto HL como também B.
Repetir até B=0: (HL)<-(C); HL--; B--
IND/INDR, decrementam o ponteiro de bloco HL ao contrário do
Ac
que fazem INI/INIR, sendo essa a pricipal diferença.
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.
Endereços Dados

OUTI: Transfere para o porto de entrada apontado por C, o


byte lido do local apontado por HL. De seguida, incrementa HL HL
e decrementa B. C permanece inalterado: 4200 4200 Bloco fonte
4201 na memória.
(C)<-(HL); HL++; B-- BC 4202
6
OTIR, difere do OUTI em que OTIR volta a repetir as operações 4203
4204
a c i m a a t é q u e B = 0 . OT I R t r a t a - s e d e u m l a ç o q u e l ê
4205
sucessivamente os bytes dum bloco de memória apontado pelo
HL e os escreve repetidamente no mesmo porto de saída cujo
C
endereço está em C. Para ser chamada, qualquer das 2 20 20 Destino: porta
instruções pressupõe o carregamento prévio de registos, depois 21 de saida
do que se chama a instrução, a saber: 22
23
LD C, portaDestino;
LD HL, topoFonte; Figura de análise para LDI, LDIR, LDD, LDDR

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

IND/INDR, decrementam o ponteiro de bloco HL ao contrário do


que fazem INI/INIR, sendo essa a pricipal diferença. 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.
Endereços Dados

CPI: Compara (procura igualdade d)o byte contido no acumulador Vector x

com o byte no local de memória apontado por HL. De seguida, HL A


4200 4220 2 4
incrementa HL e decrementa BC: 4221 8

A -(HL); HL++; BC-- BC 4222 4


6
4223 15
CPIR, difere do CPI em que CPIR volta a repetir as operações acima
4224 12
até que BC=0. CPIR é um laço que procura a localização do dado 4225 7

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

na posição (IX+0) através de uma tabela de consulta de comprimento HL A


4200 4220 2 4
BC onde coluna 1 tem os x e a coluna 2 tem os F(x). Os x começam em 4221 8
(HL) e os F(x)=x2 estão em (HL+100h); HL, e BC já estão carregados com BC 4222 4
6
4223 15
o topo da coluna 1 e o comprimento da tabela respectivamene. Se não
4224 12
for encontrado, retornar zero. Escrever o programa em assmbly do Z80. 4225 7
Inicio: ld A, (IX+0); seja (IX+0) = 4
cpir
jr NZ, noEq
dec HL 4320 4 Vector F(x)
ld, DE, 100h 4321 64
add HL, DE 4322 16
ld A,(HL) 4323 225
jr Fim
noEq: xor A; Figura de análise para LDI, LDIR, LDD, LDDR
Fim: ret
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
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

1. Responda às questões pontuais colocadas em certas diapositivas.


2. Resolva os exercícios prpostos em certas diapositivas.
3. Resolva a ficha de exercícios (TPC) que vai anexa:
“EDII.2020-Exercicios de revisao para a AT4.pdf”

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” (*)

Nota: (*) Encontre-os no Laboratório de E.Digital do DEEL ou noutras fontes.

Ac
Engenharia Informática - Microprocessadores
Z80 - Rep. Instruções, Ciclos de Temporiz./Funcionamento v1
2013

Você também pode gostar