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

  1. Entrada e Saída: I/O
  2. Instruções IN e OUT
  3. Transferência em bloco
  4. Periféricos com delay

A comunicação ou troca de informações com periféricos ligados ao processador Z80 é feita utilizando portas de Entrada(Input) e Saída(Output). Uma porta de entrada recebe dados de um periférico enquanto a de saída envia dados para periféricos.

Como as portas são valores 8-bits, um total de 256(00h-FFh) portas podem ser configuradas como I/O para troca de informações via pinos D0-7. Não há nenhuma porta reservada por padrão.

Abaixo, alguns exemplos de periféricos/processadores que o Z80 pode se comunicar utilizando portas de entrada e saída:

  1. Mouse
  2. Joystick
  3. Teclado
  4. Áudio
  5. Vídeo

Como exemplo real de I/IO, temos as portas listadas abaixo que são utilizadas pelo ser comunicar utilizando portas de entrada e saída:

Ex:
3Fh: I/O Controle das portas
DCh: I/O Joystick A/B
DDh: I/O Joystick B

O Z80 também pode trabalhar com registradores mapeados em memória. Esse assunto pode ser visto em Arquitetura: Memória.

O uso, definição de portas é de total responsabilidade do hardware que utiliza o Z80 como processador principal.

O Z80 fornece as instruções específicas de I/O de IN e OUT que recebem e enviam dados 8-Bits. Os registradores A, B, C, D, E, H e L podem ser utilizados para armazena os valores manipulados de E/S. O registrador C pode ser utilizado como porta dinâmica.

Os registradores A, B, C, D, E, H e L podem ser utilizados para armazena os valores manipulados de E/S. O registrador C pode ser utilizado como porta dinâmica em algumas instruções.

Sintaxe: IN
IN A,#p
Sintaxe: OUT
OUT A,#p

O tipo de dado word LE ou BE deve ser enviado na ordem predefinido ou aguarda pelo pelo periférico um byte por vez. Normalmente, uma porta configuração de endereço e outro para o dado é utilizada.

Tab. 1: Ex. de portas
Registrador Valor 8-bits Descrição
$FE HHh Endereço 16-bits byte1
$FF LLh Endereço 16-bits byte2
FFF2 NNh Valor de E/S

O Z80 fornece outras instruções para transferência sequencial de dados: INI, INR, IND, INDR, OUTI, OTIR, OUTD e OTDR que podem ser vistas em Instruções: Entrada e Saída.

Ex:
;BC contador
;DE origem
;HL destino
INI

Os periféricos ligados ao Z80 podem precisar de um intervalo de tempo para o retorno da informação processada, tanto na saída como na entrada de dados. Sendo assim, um delay utilizando a instrução NOP pode ser utilizado.

Ex:
IN $01 ;A <- ($01)
NOP ;delay
NOP
;tratamento dos dados

Os periféricos ligados ao Z80 podem precisar de um intervalo de tempo para o retorno da informação processada tanto na saída como na entrada de dados. Sendo assim, um delay utilizando a instrução NOP pode ser utilizado.

Ex:
IN $01 ;A <- ($01)
NOP ;delay
NOP
;tratamento dos dados
  1. 16/02/2026 - versão inicial: Entrada e Saída, Instruções In/Out, tranferência em bloco e delay.