Saltar para o conteúdo

Programar em Assembly com GAS/Entrada e Saída (E/S)

Origem: Wikilivros, livros abertos por um mundo aberto.

Entrada e Saída (E/S)

[editar | editar código-fonte]

Em um sistema a base de processador é chamado de entrada e saída a troca de informações entre o processador e periféricos de tal maneira que ele possa controlar ou modificar seus comportamentos.

Uma interface de E/S é um circuito integrado que permite ao processador comunicar com o exterior (periféricos).

Elas podem ser designadas pelo acrônimo I/O do inglês Input/Output.

  • Entrada: são os dados enviados por um periférico a uma unidade de processamento.
  • Saída: são os dados enviados por uma unidade de processamento aos periféricos.

Portas de entrada/saída

Para realizar operações de E/S, a CPU deve se comunicar com módulos E/S, sejam periféricos, um controlador ou canal. Por exemplo, o modulo E/S que serve de interface entre o processador e o disco sera chamado de controlador de disco .

Para que essa comunicação possa ser feita entre o processador e os módulos E/S lhes é atribuído um endereço para que eles possam enviar e receber informações , esses endereços são chamados de endereços de base ( chamados também de portas de entrada e saída, portas de E/S ,endereços de E/S, portas de base e alguma vezes I/O address notação em inglês que significa endereços de entrada e saída)

Os computadores modernos nos oferecem um grande numero de portas, para ser exato 65535 portas enumeradas de 0000h a FFFFh.

As portas de entrada e saída podem ser vistas como um canal de radio. Para comunicar com uma porta serial do computador devemos saber qual porta (canal de radio) esta escutando.Da mesma maneira para receber os dados de uma porta serial devemos saber em que porta de E/S eles estão sendo emitidos.
Um dos problemas das portas é que elas são designadas por um endereço hexadecimal como os endereços da memória. A diferença é que quando o computador envia os dados a um endereço da memória eles são estocados na memória SIMM ou DIMM . Mais quando ele envia os dados ao endereço de uma porta eles sao enviados ao BUS desse "canal" e todos os periféricos que escutam podem receber .Se nem um periférico escuta esse endereço de porta os dados chegam ao fim do BUS e são absorvidos pela resistência de final do BUS.

Endereçamento das portas de E/S

Existem dois métodos para lidar com um dispositivo de E/S :

1 - E/S mapeada em memória : Os endereços das porta de entrada e saída pertencem ao mesmo espaço que o circuito de memoria .

2- E/S mapeada em portas : O processador considera dois espaços distintos, um espaço para o endereçamento da memoria e outro para as porta de E/S .

Como um processador aborda os dispositivos de E/S ?

A interface de um dispositivo de entrada e saída é constituída de registros de controle em que o processador escreve comandos , lê o estado do dispositivo e registos de dados.

A cada registro do circuito de E/S é atribuído um endereço, o processador tem acesso a uma porta de E/S especificando o endereço de um de seus registros .

O endereço de entrada e saída é um endereço geográfico como um endereço postal ele mostra o caminho para chegar a uma destinação.

Os 16 bits do endereço são estruturado em campos que nos permitem encontrar o registro de E/S dentro do controlador .Assim os bits altos indicam o numero da carta(mãe ou estendida ) seguido do numero do controlador e acaba com os bits baixos que são o numero do registro .
A tabela abaixo apresenta os endereços típicos de algumas portas de entrada/saída de dispositivos em computadores
pessoais que seguem o padrão IBM-PC.

Dispositivo Endereço de E/S
teclado e mouse PS/2 0060h e 0064h
barramento IDE primário 0170h a 0177h
barramento IDE secundário 01F0h a 01F7h
relógio de tempo real 0070h e 0071h
porta serial COM1 02F8h a 02FFh
porta serial COM2 03F8h a 03FFh
porta paralela LPT1 0378h a 037Fh


Para saber qual são os endereços de portas usados na sua placa mãe você deve ler o manual do fabricante . Caso você tenha um sistema operacional instalado você pode ver os endereços no gestionario de periféricos .

Barramento ou Bus, é o conjunto de ligações físicas (cabos, pistas de circuitos impressos, etc.) que podem ser usadas conjuntamente pelos vários elementos materiais a fim de comunicar. .

Existem três funções distintas nos barramentos:

  • Comunicação de Dados: função de transporte dos dados de tipo bidirecional.Esse bus é usado pelo processador para selecionar

um periférico ou lugar na memoria onde ele quer ler ou escrever informações .

  • Comunicação de Endereços: Permite a transferência de informações entre diferentes elementos; essas informações podem ser instruções ou dados em proveniência ou destinação

de periféricos ou da memoria . Um exemplo de utilização é quando o processador quer acessar um dado na memoria, ele indica a memoria onde esta por meio desse BUS.Uma vez que a memoria sabe onde esta o dado desejado ela pode enviar ao processador pelo BUS de dados .

  • Comunicação de Controle: função que controla o transporte as ordens e os sinais de sincronização entre o processador e os outros componentes.

Arquitetura de um controlador

[editar | editar código-fonte]
Controlador de disco ata para bus PCI
Controlador de disco ata para bus PCI

O controlador pode ser visto como um processador especializado no diálogo entre o processador central e um periférico.De uma lado ele comunica com o processador e de outro com o periférico que ele pilota.Internamente ele deve realizar operações de codagem sobre os dado temporariamente estocados no seus registros.
O controlador dispõe de apenas algumas instruções relativas ao envio e recepção de dados . Uma diferença essencial entre o processador e o controlador é que o processador procede à execução automática e infinita de instruções já o controlador executa somente pedidos vindos do processador.

Formas de Comunicação

[editar | editar código-fonte]
  • Comunicação em Paralelo: consiste a enviar dados simultaneamente em vários canais .Por exemplo para enviar 8 bits se faz o uso de 8 fios.
  • Comunicação Serial: os bits são transferidos um a um, através de um único fio ou canal .No inicio uma porta serial permitia somente o envio de dados, por esta razão foram desenvolvidas portas seriais bidirecionais que usam dois fios para comunicar.