Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Registradores 8-bits
  2. Registradores 16-bits
  3. Registradores Indexadores
  4. Registradores PC e SP
  5. Registrador F
  6. Flags IFF1 e IFF2
  7. Valores iniciais

O z80 possui os mesmos registradores do i8080 com adição de registradores alternativos, registradores de indexação e registradores I e R.

Os registradores de uso geral e A, B, C, D, E, H, L e seus espelhos/alternativos são usados para manipulação de dados 8-bits assim como no i8080.

Tab. 1: Registradores 8-bits
8-bits 8-bits
A F
B C
D E
H L

O registrador A é um registrador de 8-bits que é utilizado em operações aritméticas, lógicas, pilha, carregamento e armazenamento de dados. Há instruções específicas que utilizam apenas o registrador A implicitamente.

A registrador F armazena as flags de status do processador. Esse registrador será visto mais adiante com mais informações sobre cada flag contida nele.

Tab. 2: Registradores Altenativos
8-bits 8-bits
A' F'
B' C'
D' E'
H' L'

Os registradores principais e alternativos não podem ser utilizados ao mesmo tempo, sendo alternados por meio das instruções EX. O registrador B ou par BC é utilizado implicitamente como contador em instruções de transferência de dados e loops.

Wrap-around

Os registradores, quando adicionado/subtraído algum valor cujo o resultado ultrapasse seu limite superior ou inferior, ocorre o wrap-around ou efeito circular.

Ex: 8-bits
FFh + 2 -> 01h

O registrador I, Interrupt Vector, é utilizado para interrupção. O I armazena o byte mais alto do endereço da tabela de vetores para interrupção quando o Z80 é configurado para trabalhar no modo de interrupção 2 via instrução IM.

O registrador R, Memory Refresh, é um contador utilizado internamente pelo processador para refresh de memória dinâmica, sendo seu uso específico do hardware que utiliza o Z80 não sendo usado para programação, exceto pelo seu carregamento.

Os registradores 8-bits de uso geral vistos acima podem ser combinados formando os pares AF, BC, DE e HL. Os três últimos pares são usados para dados e também como endereços de memória.

Tab. 3: Registradores 16-bits
16-bits 16-bits
AF AF'
BC BC'
DE DE'
HL HL'

Os pares DE e HL são usados de forma exclusiva como endereços de origem e destino em instruções de transferência de dados. O par BC é utilizado como contador nestas instruções. O par AF não é utilizado como endereço e operações aritméticas, lógicas e outras.

Registradores Indexadores

Os registradores indexadores são utilizados para acessar dados de array, structs, objetos ou outros dados complexos tendo seus valores adicionados a endereços de memória.

Tab. 4: IX e IY
16-bits
IX
IY

Esses registradores também são utilizados em operações aritméticas, load/store e manipulação de bits.

Registadores PC e SP

O registrador PC(Contador de Programa) armazena o endereço da próxima instrução a ser executada. É armazenado na pilha quando uma subrotina ou interrupção é executada.

Tab. 5: PC e SP
16-bits
SP
PC

O registrador SP, assim como no 8080, armazena o ponteiro para o topo da pilha onde dados serão armazenados com as instruções PUSH e recuperados com as instruções POP.

A definição do local inicial do SP é feita via programação ao iniciar um programa. A região onde a pilha pode residir fica a cargo do mapeamento de memória predefinido pelo hardware utilizado.

A pilha do processador Z80 aceita apenas que valores de 16-bits sejam salvos. Os registradores 8-bits são salvos de acordo com seus pares.

Wrap-around

Os registradores, quando adicionados/subtraídos de/a algum valor cujo o resultado ultrapasse seu limite superior ou inferior, ocorre o wrap-around ou efeito circular.

Ex: 16-bits
FFFFh + 2 -> 0001h

O registrador F armazena as flags de status do processador. Após a execução de algumas instruções específicas, suas flags são alteradas para 0, 1 ou não afetada. Abaixo, a descrição de cada flag do registrador:

Tab. 6: Flags Z80
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
S Z - HC - P/O N Cy
Bit 0: Carry - Cy

A flag Cy(Carry), pode ser entendida como o "vai-um" ou "vem-um"(borrow) em operações aritméticas de soma e subtração. Em instruções de deslocamento e rotação de bits, representa os bits mais e menos significativos.

Bit 1: Negative - N

Flag usada pela instrução DAA para distinguir entre adição e subtração ao realizar a conversão BCD. Setada pelas instruções de adição e resetada em instruções de subtração.

Bit 2 : Parity/oVerflow - P/V

Utilizada para armazenar a paridade de um valor contido em um registrador. Se número de bits for par, recebe 1, caso contrário 0. Usada em operações de I/O, flag de apoio em instrução de transferência e backup de flags IFF2.

A flag O(Overflow) é utilizada em operações que envolvem aritmética sinalizada indicando um extravasamento no armazenamento. Ocorrendo overflow, a flag V recebe o valor 1. Caso contrário, 0.

Bit 3: -

Não usado

Bit 4: Half Carry - HC

A flag HC armazena o status dos bits "vai-um" ou empréstimo(borrow) do nibble inferior de A em instruções aritméticas. Essa flag é verificada pela instrução DAA apenas.

Bit 5: -

Não usado

Bit 6: Zero - Z

A flag Z armazena o status do resultado de uma operação quando é igual a zero. É setada quando o resultado é 00h e resetada caso contrário.

Bit 7: Sign - S

Armazena o status do bit 7 ou sinalização do registrador acumulador A. É setada quando o bit 7 é igual a 1 e resetada caso contrário.

As flags Cy e HC do Z80 têm a lógica invertida para instruções de subtração em relação ao 8080. Cy é setada quando há empréstimo e resetada quando não há empréstimo.

Tab. 7: Cy/HC - 8080 vs Z80
Cy/HC Borrow
8080 0: Borrow
1: Sem borrow
Z80 1 : Borrow
0 : Sem borrow

As flags Cy e HC do Z80 têm a lógica invertida para instruções de subtração em relação ao 8080. Cy é setada quando há empréstimo e resetada quando não há empréstimo.

A flag IFF1 é utilizada para desabilitar o reconhecimento de interrupções. com sua flag backup IFF2. Ambas flags são usadas como parte do processo de interrupção e pelas instruções DI e EI.

As instruções EI e DI manipulam essa flag habilitando e desabilitando o reconhecimento das interrupções de hardware do INT respectivamente.

O assunto interrupção e o uso das flags IFFs podem ser vistos como mais informações em Arquitetura: Interrupções.

Após um hard reset, os registradores do Z80 são iniciados como mostrados abaixo. Dependendo da versão variante do fabricante, esses valores podem sofrer alterações.

  1. PC :0000h
  2. SP: indefinido. Necessário configurar
  3. IFF1 e IFF2: 0
  4. A,B,C,D,E,H e L: 00h
  5. RAM: indefinido

No soft reset, os registradores do Z80 são iniciados como mostrados abaixo. Dependendo da versão variante, esses valores podem sofrer alterações.

  1. PC :0000h
  2. SP: indefinido
  3. IFF1 e IFF2: indefinido
  4. A,B,C,D,E,H e L: indefinido
  5. RAM: indefinido
  1. 16/02/2026 - versão inicial: Registradores, flags e valores iniciais